Recently, I was being told by the COO of a software company that having the passion to build software with great patterns and practices is too unrealistic and I was being classified by him as a perfectionist. To him, I may not have the opportunity to contribute this to the company as the situations are usually not allowed. For instance, they have some old products written in VB6 without any proper coding standard and yet they still need to continue providing feature enhancements and support maintenance to their customers. If I were being employed, I may need to live with the traditional and messy coding standards in order to continue supporting the business. Secondly, the design architecture of the ongoing projects could have already been established and he does not want anyone to mess around with the architecture anymore so that the development can proceed. Thirdly, they only need someone who can play a full project management role which only has little chance for the person to get involved in the technical aspect.
In fact, the COO of this company is not the first person that I have met so far with this kind of mindset; there are plenty in the Malaysia’s software industry. If having a passion to build software in great patterns and practices is too impractical to software businesses, I wonder why Microsoft and Google can be so successful – the God must be pampering them too much.
After having a long discussion with the COO, I can only conclude that: In Malaysia, we lack of industry leader who can control the situation instead of letting the situation to control us. Usually, there are too much of excuses for us not to move forward until we really have forgotten which field that we are in now – An information TECHNOLOGY company that does not believe in TECHNOLOGY. How can ones lose their trust on technology if they still willing to survive in the software businesses? Are they forgetting about what they are selling? How can ones continue to sell nutrition and food supplement to the consumer when they no longer believe in nutrition can make people healthier?
Another key argument is that, if you believe great health can give greater success to someone, why don’t you take your own food supplement products regularly and prove to your customers that this really works? The same goes to software businesses. One thing that most of them never realized is that, the software industry has come to the realization that the methodologies and approaches being used should not only help to build software that improves the efficiency and productivity of the end-users. It should also help to improve the efficiency and productivity of the developers and therefore the software businesses as a whole. For example, Microsoft has realized the popularity of a design pattern called Model-View-Controller (MVC) and started to officially incorporate it into ASP.NET 3.5 to facilitate automated unit test (also referred as Test-Driven Development, TDD) as well as improving the agility of the Web application architecture to facilitate change. Also, the Agile Development Methodology has been aggressively promoted by many industry experts to correct the way that we build and deliver the right working software to the stakeholder based on the nature of how the software suppose to be designed and developed. Such improvements have not only brought revolutionary benefits to the ISVs but also gives significant benefits to the end-users, e.g. better architectural agility that capable of adapting to the ever changing business needs, highly predictable and maintainable code that allows developers to provide faster response to the change requests, much more stable and usable software that reduces the total cost of ownership and so on.
Many key persons of the software companies were questioning me: “How do you think a software company can continue to sustain without businesses? Do you think we can survive for not selling anything for one or two years time by just doing R&D in designing and developing product using industry best patterns and practices?” To me, if you are not capable of producing competitive products and services, why start the business? In that case, what is your key competency in the IT market? Is it because you have not faced any great competition so far? If one day you have, will you fight, or will you close up the business for surrender, leaving the company with the money that you have earned for years and enjoy your retirement with your family? What about those who have been loyal and led by you for years, maintaining VB6 code without progressing themselves to the next level and losing their market value simply because of trusting your leadership?
The following chart explains software companies are likely to be more sustainable when they are able to grow according to the technology trend:
Figure 1.0 – Company B, although not a market leader in the earlier age, due to the ability to keep up with market trend, they are more sustainable in long-term basis.
Figure 1.0 shows that Company A may be the market leader in the earlier age when Thick Client technology was first introduced. Due to the size of the Company B and its financial strength as a startup company, they were far behind Company A. However, due to the ability and their passion to catch up with the new technology trend, they are able to continue fulfilling the market demand. This has also created opportunities for them to enter as a pioneer for a specific market segment, for example Smart Client, Mobile Client, Web 2.0, and even Service Oriented Architecture (SOA) (as what was happening to Company A during the age of thick client). For Web 2.0, due to the Software-as-a-Service (SaaS) and Application Service provider (ASP) business model, they gained one thousand customers as their monthly subscribers and enjoy monthly recurring income. Then they proceed to their venture to SOA and earned millions of dollars from the 50 customers. As for Company A, many of their software products were written in traditional VB6 programming language and they can’t afford to revamp the entire product range because they had been stopped leveraging on newer development technology since the release of .NET Framework. As the technology gap is too huge, the cost of conversion is too high for them until they are not able to move forward to the new era of development. Therefore, they continue to suffer with their existing customers in fixing their software bugs and performance issue because as time goes by, the data and number of users are growing. No proper design patterns and scalability approach were being adopted while building their applications. Due to this, they were also facing serious manpower shortage problem because many of their senior developers had left the company in order to acquire newer technology for the sake of their career. Besides, hiring new developers is difficult as nobody willing to deal with the primitive technology to make their skill set obsolete. As a result, Company A is lacking of capable people to help them to build more competitive software products and can no longer sustain in the current software market.
About how to make the company survive without compromising the software quality (this statement sounds stupid), I think I should leave this to the business experts to think about it – this is supposed to be their expertise for them to prove their business skills, not for me to answer. My job is to make sure that I can deliver highly competitive products for my company and the software that really works to the customers, this is my bottom-line. If the business operation management is not able to find ways to balance up between business and technology advancement, then this is simply too bad to the company. However, my thinking is simple: if I were to sell fried noodles, fundamentally, I have to make sure that my fried noodles are tasty enough to be publicly acceptable. And if I really want to be a successful and famous fried noodle’s business owner, I have to make sure that my fried noodle is EXTREMELY TASTY and HIGH QUALITY. These will of course very much concerning about the methodology and approach that I use in the production of my fried noodles. I will not give myself excuses like: My customers always get hungry and want me to be fast; I used to the way I’m frying the noodle and I have no time to think of changing my way of frying tastier noodles and so on. In Penang, Lorong Selamat, the famous Char Koay Teow costing RM7.00 per plate with great traditional taste and extra big prawns. The customers may need to wait for 30 minutes to an hour, queuing up under the rain or hot sun with umbrella, just to eat their Char Koay Teow. This is what Scott Ambler from IBM, who was conducting his speech during the IASA conference: “Do you prefer RED RED RED and then GREEN, or GREEN GREEN GREEN and then RED?!”
If we are selling software for survival, fundamentally, we should respect on what we sell and take pride on what we sell. If we have to do it, we got to do it. No matter how much effort that you have put in for reaching the current destination, If you think there will be a dead end by going further with the current practices, then you should make a U-turn and think of other alternative. Making a U-turn may cost you a lot of time, effort, and money, but it is definitely worthwhile than reaching to the dead end and fall down to the cliff.