Technology evolves pretty fast. Compared to just a few decades ago, we can reach things easier, cheaper and faster. Almost everything is just one click away. This, of course, has implications over how we write software.
Thing is in general, we are all in competition. We are trying to build faster so that we can be on the market before the competition becomes available.
The problem with that is, speed is not a good friend of software development. But before that we need to understand what software development really is.
Software development is not just about writing a few “IFs” here and there, instead it is more of a thought process. It is like thinking in steps and then being able to write these steps on a piece of paper and turning that paper into something that is useful. Sounds kind a stupid, right? Well, that is what makes software development hard. It is hard to understand and complex to execute. Therefore writing code is not that easy as many thinks.
Yes, there are things that every beginner can handle. But the complexity is hidden in scalability. If your software is only used by let’s say 10 people and it performs well, then there is no problem. But then your software became popular and now you are having 100 users. Is it still performing well? or let’s say you want to add new functionalities to your existing software. But it takes so much time and you are having a hard time understanding why because your developers keep saying the design is not good to add new things. Weren’t they the ones who developed it?
In old times, this kind of problems were not being discussed that much. Because software development was quite new and its capabilities were limited. We did not have powerful hardware to support it. But now, we almost have everything in hand for a fairly cheaper price. Therefore businesses now demand faster and cheaper solutions at the same time with keeping old habits in place.
It is true that software development got a bit easier today. Thanks to modern IDEs, tools, 3rd party platforms, yes we can write code faster. But again, writing code is just the 10% of the development. Rest is logical decisions, communication, collaboration and so on. It is not just one person’s responsibility; instead a team effort has to be in place. So now, when we are talking about software development, we are no longer talking about software developers alone. We need business people, product mindset, communication, network, analysis and every single detail in place for better decision making which is something not fairly possible.
Therefore poor decisions lead to poor design. Instead as developers, we need to be able to extend our creation without much of a hassle. It is said easier than done.
In my opinion, the biggest problem to solve in software development is over engineering ad unnecessary complexity it brings. Everybody wants perfection which takes too much time and unfortunately businesses don’t have that much time. In modern ages, teams have to find a balance between good quality and velocity resulting in a sustainable development cycle.