A lot of great things in my life have started with those very words: "Hello World!". It seemed an appropriate start here, as well. Most developers speak nostalgically of their first "computer" (I use quotes because we might have to stretch to actually call it that). Younger developers simply spit it out full of excitement: "...with 32 Gigs of RAM and an SSD!" Either way, there's a vigor for the knowledge that is yet to come, the anticipation of unlocking something new and creative, the passion that comes with developing software.
There's the runner's high and the addict's high, but there's a completely different kind of high that can keep you up for two nights in a row, staring at a series of characters that's illegible to most of the world. I once heard someone say, "I'd like to be a meth-addict -- just for a day -- to understand what it's like to have such singularity of purpose." Developers know. Maybe there's a physical response, but I've never heard of it. It's just something inside you, something that drives you. It's a strive for perfection in something that more closely resembles a work of art than it does a scientific medium. That hunger, that drive, and that need for perfection is what defines a software engineer. When great software is about to be written, developers understand what it's like to have such "singularity of purpose".
At some level, we can all appreciate the drive and passion that separates good software from great software. We tend to create a chasm, however, between great software and great product. Great software is allowed to be theoretical. Comments, style, and design are all part of the intangibles of great software. However, great product must be practical. It exists only because of its tangibility. Business thrives on great people, building great product. Suddenly, business tears the intangibles out of great software -- sometimes to deliver any product at all. Developers become disappointed and even protective of the beauty of their software. Experienced developers understand the cost of losing the intangibles. Sure, it lowers morale in the ranks of software engineers, but even more directly, it causes maintainability to fall. The development cycle slows. Sales insists on features for new, potential clients. Engineers become defensive and protect themselves in Ivory Towers of Software -- impenetrable by other developers and completely debilitating to the organization. So the chasm forms...
Enter "Hello World!". Solving this problem requires a new level of knowledge, for business and engineering alike. In both cases, it means learning a precarious balance that sagely avoids the precipice of the chasm. For business, it is quintessential to recognize the importance of the intangibles of software. For engineering, it is equally as necessary to recognize that the ultimate goal is a product, not perfect software. Without both, you have no product or no maintainability of that product into the future. While it's important for business to get out in front of their competition, your software needs to remain maintainable and flexible to stay on top of the competition. Getting in front is of little value if you're unable to finish the race.
There is a time for learning on both sides, in fact, it really is a never ending quest of knowledge and understanding. Other products can be sold with the "goop in a bottle" method, but software truly requires an understanding of the process and a marriage of the tangibles and intangibles. The King James Version of the Bibles says, "Wisdom is the principal thing; therefore get wisdom: and with all thy getting get understanding." (Proverbs 4:7). There is an understanding that's required on both sides of the business/software fence that -- when united -- turn great software into great product.
One of our goals at Geisel Software is to help you understand the software that's being written (the design choices, the alternatives, the trade-offs). Handing you great software "in a bottle" isn't enough. We want you to have the understanding of that software that can propel your company to deliver great product as a part of your own business strategy.
So, when your software is released to revolutionize the world in your own unique way, we'll be with you to say, "Hello World!"
Other articles in this section
Developments within the Internet of Things (IoT) space are happening at tremendous speed, but the pace of this change creates challenges from a security standpoint.
A good user interface is an essential part of great software development. A user interface is the “front-end” that allows the user to easily interact with your software.
IoT can be an amazing enabler for your product, but it’s important to make sure you get the architecture right.
Brian is a life-long software developer who loves to help others succeed. A frequent source for media outlets, such as BBC, Entrepreneur and Bloomberg, Brian also frequently speaks at universities, conferences and the like. His new book, "Unravelling the Internet of Things" will be available soon on Amazon.com.