LIFE OF A SOFTWARE DEVELOPER If you are either a web/mobile developer or is working for a software house, you might have been approached by countless entrepreneurs with impossible budget wanting us to develop for them quite sophisticated systems comprising of web applications and mobile apps and to top it off, some of them gave crazy deadlines like "I need this in within 2 months." Welcome to the life of a software developer, especially those dealing with web application or mobile apps development.
As a product cum project manager, we are the 'bridge' between the client and the tech team and often, we will be in a difficult situation trying to understand client's requirements, especially when the client themselves are being fickle minded and changing their objectives like they change diapers. So we ended up being playing a 'psychiatrist' to the client before we can confirm their specific requirements. The next challenge we have to face is to translate that requirements into bits of information that are specific and clear manner that is easy for a coder to understand. This entire process of designing and developing a software solution to address and solve client's problems is a complex task that when subject to certain degree of unpredictability, will make it even more difficult for us software developers to accomplish.
So when a client tells us to build them some software products but expect us to accomplish that with ease and is impervious of the amount of energy, time and resources involved, it becomes extremely demotivating for us software developers.
MALAYSIAN SOFTWARE INDUSTRY : UNAPPRECIATED & UNDER-VALUED
Most developers, especially those who dwelled into Web applications & Mobile Apps design and development felt they are unappreciated and under-valued. This may not be true in some countries but it is very true especially in a country like Malaysia. The clients be it small time entrepreneurs or larger local companies, consider technology not as important as compared to other elements of their businesses like manpower, raw materials, on their sales and marketing team, their production department, their warehouse, their procurement team, etc. Technology are normally is the last expenditure after they have spent on all other things. Yes, they do regard technology as an 'Expenditure' instead of an investment.
This is true for traditional businesses that has brick and mortar outlets and selling physical products. The owners simply do not see technology to contribute much to their already stable and successful businesses, hence they normally consider technologies to be ‘fancy’ and ‘nice-to-haves’. For the larger companies, at most they kept their technology limited to those they viewed to be essential to their daily operations like Point-of-Sale, ERP, Payroll, HR and Customer Relationship Management (CRM) systems. Anything beyond that, are viewed as ‘Fancy’ or ‘Nice-To-Haves’.
This perception does not help the software developers and in fact, coupled with the aggressive negotiation techniques used on most vendors by these clients, and the 'hierarchical' structure that the vendors indirectly arrange themselves into, where 'larger' software companies get to be selected and these larger companies get to outsource the projects to a smaller software company than them, who would subsequently broke the project down to smaller tasks and further outsource to even smaller software companies. Hence it continues on and on, forming a ‘Pyramid like’ structure. In the end, the small software companies and their programmers are left with very little money to make from.
These smaller software companies often struggled to survive and hence many of their programmers either resigned to join larger software companies or become freelancers. Some small faction of them even stopped being a programmer and ventured into a totally different industry that they perceived are more lucrative.
PRICE : BATTLE TO THE GROUND
It is because of some of these ‘Freelancers’, who were desperate for a project gave ridiculously low pricing to the potential clients. This has been the situation for the past 2 decades in software development industry in Malaysia. When the clients gotten access to programmers in India and China, who were extremely competitive, more capable and was much cheaper because of the exchange rates, this has struck the local Malaysian developers an even worse blow. Now not only it is difficult to get projects locally, they have to compete with cheaper, better and more capable programmers from India and China.
Because of this, those who are truly skilful, experienced and capable programmers went abroad and thrive there. Leaving behind junior, inexperienced programmers who graduated from universities in less than a year to take on the tasks and was expected to do a good job if not better.
So stress level is crazy for these new and younger generation of programmers, being thrown into a situation that demands them to do better than the better and experienced ones who have left the country for better opportunities and the worst part is that, no matter how smart these younger programmers is, they can never be as experienced as the crème de la crème programmers who have abandoned their country of birth. Well not all of them really abandoned their country, but many have.
This result in poorer quality of work, lots of bugs, horribly written codes that are almost impossible to be debugged by another programmer. Hence often very poor continuity, resulting in the need to re-do everything all over again whenever we engage another programmer to pick up the codes done by the earlier programmer.
So the earlier programmer, in order to continue surviving they have to resort to giving much lower pricing than others. The ultimate consequences? The perception by potential clients that software is cheap and programmers are cheap. Without realizing that to do a good job, it cost a lot more than they expect.
Wordpress & CMS
Then comes the CMS (content management systems) and website builders, with Wordpress being the most popular amongst them. These frameworks requires little codes and some even no codes and websites designing and development can be done in matter of days and not months. Driving cost expectation even lower.
This is without realising the disadvantage of such CMS such as the potential security loopholes it presented with its ‘plugins’. The advantage is of course it speeds up the website designing and development process. That is true, but the key disadvantage is, if we explain it in a layman manner – “Imagine the home you are living in. There are the TV, the furniture in the living room, the dining table, the kitchen equipment and utensils, the toilets, bathrooms, the bedrooms cabinet and bed, etc. Now imagine that ALL of these components of your home are mobile and easily removed as it is easily installed, and it belonged to a 3rd party, and the only way you are enjoying all these facilities is because you are paying for it. Now imagine IF you lagged on payment. What will happen? The 3rd party will confiscate the facilities they are supplying you. Then what IF the 3rd party has changed management and they no longer supply say.. the toilet service to your home. What will happen ? Well you no longer can use the toilet.”
This is a very true circumstances and it happened to Wordpress and their 3rd party ‘Plugins’ providers like Astra Theme recently (https://www.searchenginejournal.com/wordpress-suspends-astra-theme-affiliate-codes/376863/), where it was suspended by Wordpress because of some alleged breached of terms and conditions. Over 1 million users were affected.
So in a crude way of illustrating, CMS like Wordpress helps build fantastic websites and now sophisticated web applications too. But it is like “building a battleship with cardboards, glue and tapes, and launch it to the ocean to battle against US Navy’s Supercarriers made of inch thick reinforced steels.”
But this depends on what the client’s requirement is. IF the client require just a static website or a simple e-commerce website, then Wordpress and other CMS or Website builders is fine. Not an issue, but if the client wants more sophisticated web applications with complex Extraction, Transform and loading tasks, then they might want to consider developing their system from scratch. This requires highly skilled and experienced team of developers comprising of the Product/Project Manager, the Tech Lead, the programmers, tester, etc. Without these people, you will not be able to develop a good system. Then you need a team of DevOps (Development Operation) to continue maintaining your system to ensure your users experience are optimised.
NEVER LOOK FOR A PROGRAMMER FIRST
This is where most Malaysian entrepreneurs, be it start-up or established, larger local companies, made the biggest mistakes whenever they want to do develop whether a simple static website or a complex, customised software system, that is by looking for a programmer first. Whilst they should have consulted a product/project manager first.
That is IF they do not have a qualified and experienced Chief Technology Officer (CTO) with their organisation. Clients should not decide on the technology of the solution without a qualified CTO or consultation from a product/project manager.
Looking for a programmer straight away is never a good move, because programmers would not be able to decide the direction of your technology. They are just executors of your instructions. So you need someone to give you advise on the possible direction you can take. Which is why the Product/Project Manager cum consultant or the Chief Technology Officer, cannot be biased to a certain technology. He or she has to have a fair view on both the advantages and disadvantages of all possible technology, so that you can make the right decision on which technology to use, based on your cost, your time limitation, you human talent resource, etc.