2015-09-29
This article looks at how and why modern software projects easily become messy and extremely convoluted. This article should not be understood as against new concepts but as a promoter of software engineering education, skills, and experience that allows engineers to make rational decisions to choose when a concept should be practiced.
The History
Software development (programming) was always a sub category of software engineering. However, over the last decade, software development was pretty much forcefully divorced from software engineering.
Why?
It is human nature to make things easy for everyone. In addition to this a lot of money was invested into software related projects making everyone wanting to become a software developer.
But everyone didn’t want to go through the hard work of serious education and then starting from the bottom of the ladder to gain experience. it was not fun.
So software development technologies became very simple and the need to have proper education in IT was taken down as a compulsory qualification to become involved in serious software engineering projects.
This created a massive boom in numbers of software engineers which also resulted in a large boom in supporting services for this large crowd.
While many companies stepped forward to provide educational and other services for this crowd, more experienced already established Software Engineers became technical writers. The concept of blog and blogging was boosted by potential advertising revenue.
Soon there was a great competition among these service companies and bloggers who basically had to bring in new and unique articles (resources) to keep their businesses, websites, and blogs popular.
The Crown went to Cool from Practical
For many years software engineering (like any other engineering discipline) was practiced with main focus on providing practical and reliable solutions.
This obviously required a lot of background knowledge and experience and there was not a lot of money to be made for the booming “developer support” industry.
So the supporting industry started creating new libraries and tools to make developers life easy. The most talked about topic in the industry became “the next helpful library or tool” that would reduce developer workload.
Mushrooming Concepts
* mushrooms just pop up randomly Reliability, stability, and logic are not concerns for mushrooms. They just pop up overnight.
The critical issue was that in addition to specific tools and libraries, some experienced bloggers and companies started creating their own flavors of established concepts.
As of now, you can see many new concepts arriving at the Internet every night.
Basically, everything that an experienced developer do to implement a known concept would be written on their blogs as if it’s a new concept and will be called cooler than the original concept it inherits.
The next morning all blindly following developers will read about this new thing and do their best to implement it on their projects because it is the cool thing to do.
Mushroom Filter
While the more experienced and educated engineers had the skill set to understand and decide when to use these new branched “cool” concepts, the large potion of “software developers” do not have that critical knowledge or relevant experience to make such decisions.
Every Pie is a Mushroom Pie
So the unfortunate result we see is that eventually this coolness took over. All semi-skilled developers blindly follow whatever they read on the Internet.
Then they put pressure on the management to bring all of these cool stuff into the projects they are working on.
This is why most of the projects you see today look nothing better than the inside of a badly made mushroom pie.