say no to complacency

Many times throughout my experience in the software industry, I meet people who like to “specialize” in something, limiting their work to only that paradigm/language/subject/technology. These feels like a harmful practice in an industry as fast changing and evolving as software. New languages and technologies are cropping up at a very fast pace and often have something new to offer, maybe not to be used for your new startup, but as a learning tool. Becoming complacent in how you work or approach a problem can be detrimental to your product as it could (and probably will) lose out to competitors who try out and adopt new options to better their offering.

In a previous job, I was in charge of handling a web variant for the main product, a thick client for the main server system. The advantages of the web interface were that it was platform independent, zero deployment time for a client (just open the web browser and navigate to the URL), offered a simple API for usage, and had a system for bookmarking and sharing application state between other people (you could save various views for later retrieval or to send the URL to someone else to achieve the same state). Yet the decision makers were deeply invested in the thick client and continued to have me hamper features that I added to the web client that were not a part of the thick client. Since leaving they have done little to no additional work on the web client and given up on offering something that their competitors lack(ed).

They were attached to their idea that the only client application worthwhile is a downloaded and installed thick client. Their complacency in this matter allowed for them to miss the (I believe good) opportunity to shake up the industry and move to a new business model that no one else was offering. The chance to make these changes and offer something completely new and revolutionary (in the industry) is one of the largest by products with only sticking with what you know. If you are working on a data processing system, functional languages are probably a huge gain for you. If you are working on a large client/server product line, developing a web interface and selling it as a SaaS or a cloud application would be an option (and is being well monetized these days). All of these options are possible if you (as a developer at least) are not complacent with your choice of technology, language, etc.

So go out and try a new paradigm for your next project, try using a different database engine, try writing a standalone GUI (or web GUI). If you don’t use TDD normally, you should give it a try in your new side project. If you usually write low level drivers, try a high level language (if you work with high level languages, try writing something in C). You could try using a different OS, window manager, or IDE. The richness of what the computer industry has to offer is something to be enjoyed, don’t isolate yourself from being able to enjoy these offerings.