In all my 19 odd years of being in the software industry, I have come to realize that with the passage of time, the old business models of earning money from software are crumbling and we are faced with challenges and constraints which no other industry faces. I have outlined them below. These are relevant for both independent developers doing contract work or large companies making applications or providing software services.
1.Always A Learning Curve
Software is always evolving. Everyday you have new applications, new languages, new platforms, new ways of doing old things. There is always the feeling that you need to know more, learn more. No one can afford to become complacent and believe that whatever he has learned till now or working on currently, will see him through the rest of his life. Complacency will finish you , in this industry. You have to keep on learning , keep on improving. Only those who can adapt and learn can survive. You have to get used to this learning pressure. You got to keep running to stay in the same place.
Piracy is a threat for all works or intellectual output which can be converted into digital media. I cant think of any reasonably popular software or application which is not available as a torrent or has been hacked to make it available free of cost illegally. This is a big problem for even the largest software companies on earth. Piracy is a threat to the music industry, the movie industry, the publishing industry and the software industry. For musicians, they can still make money out of live performances if their albums are not selling because of piracy. For movies, people still like to go and pay to watch in a theatre. Publishers can still sell books/magazines or periodicals in print format to offset losses due to piracy. What alternative does the software publisher have? His work exists only in digital format. If his work is being pirated then he has no other alternative but to find ways to counter it.
What piracy is to applications, hacking is to websites. Any successful website is prone to hacking and that is a necessary evil which we have to live with. A DDOS attack on your website will bring down your earnings as well as credibility in the internet space, for no fault of yours. Extortion exists as much on the internet as it does in the real world.
4.Open Source /Free Software
There is no other industry which faces competition from free offerings as it exists in the software. There is an open-source alternative to almost every kind of software that exists out there. It is tough enough to fight against competitors, but how do you compete against something which is offered for free??? Imagine the equivalent of this in the automobile industry if we had open source cars available free of cost. Or if houses were available as open source.
5.Never Ending Story
How many times have face the syndrome of requirements creep. Where a customer or client keeps on wanting to make more changes or more enhancements. Software is never finished. Because it is so malleable and open to change, there will always be changes , or bug fixes or alterations. You can never sit back and say “there. my software is finished and done with”. Does this happen with accountants or architects or doctors or pilots? Does anyone keep making changes to their balance sheet every few days? Does anyone keep adding a new room to a house? Does an appendix patient tell the doctor “I am not pleased with the way you removed my appendix. Can we try it again in a different way?” . Does an airline tell its pilot “We are not happy with the flight path you took in your last flight. We want you to redo it again following a different route.”
6.You Cant Build a Body of Work
Due to the constant changes in development methodologies and creation of new tools and techniques, you have to keep on learning. Before OOP became mainstream, software was developed using Structured programming techniques. Before high level languages became mainstream, software was created in assembly language. Then OOP came and then you had to learn a new way of developing software. Learning new techniques is not a drawback – its prevalent in all knowledge-based fields. But in other fields, old techniques and skills can still be used. Not so in software. You have to unlearn old techniques to learn new ones. Unlearning is much more difficult than learning something. Imagine the time and effort and stress you have to go through , if you have to do this every year. A software developer with 10 years of experience may have learned 50 skills , but at the end of 10 years only 2 of them are of any practical use because he had to get rid of the remaining 48. How can anyone build a body of work to look back upon, in such a scenario.
My points above might paint an overly pessimistic picture of the software industry, but as the saying goes, every cloud has a silver lining. The peculiar nature of software has forced us to learn things and concepts which would never have been learned otherwise. This is creative thinking and innovation at its cutting edge. This forces us to push the boundaries everyday. I think a lot of software developers who like their work , thrive in this environment because it makes them come up with new things and techniques every so often. If all of us were only working on COBOL for the last 10 years, then it would be a boring and dull industry to be in.
IBM and HP make profits out of open source software every year. They have found ways to make it profitable enough to the extent that nearly 40% of their software revenues comes from open source software.
Smart developers have learnt to adapt to new technologies. They now consider it a part of their trade to be ready to unlearn and learn all over again. They have pushed the limits of their brains. Anyone who loves being in software has a mindset which needs change and innovation. If you do the same thing for too long, you lose interest.
Its not as bad as I made it sound earlier. It all depends on attitude. If you are having a good day, you will love being in software. If you are having a bad day, you will curse everything related to software. Today I was having a bad day, so this rant came out in the blog. I was actually thinking perhaps I would be better off selling vegetables. But I know tommorow morning when I wake up, I will look forward to the grind again.