Software and other human factors
Part of the title of this blog post is borrowed from the famous Jeff Atwood. One of the creators of Stack Overflow. His blog Coding Horror
has been an inspiration to me. You should check it out.
I had a course called Software Development Fundamentals
which is Software Engineering in disguise. I was intersted in learning different software design and development patterns. But I ignored most of the development lifecycle related concepts. I did know them just enough to pass the exam but always that they were glorified corporate plan to curb employees freedom. The classes were a mixture of academic papers from experienced software engineers discussing the application of theory and how often (significantly less) they work. Many stories and experiences from my professor’s history of working with various software types, companies that build them, and their attitude towards software engineering research made it even more interesting.
When COVID hit, we eneded up taking classes remotely and I moved back with my parents. I was also leading a team of 5 (including myself) for our major project. We used Kanban Boards to divide the tasks and track them till completion. I noticed that my teammates missed deadlines and were slacking off without showing a lot of seriouness in the project. I felt exactly like how a manager at a corporate company would fell (maybe even more because I personally cared a lot about the project). So I revisited the concepts in Software Engineering to look for improvising the process and reading about Software Delivery in the indsutry. I ended up learning a lot about the domain, and the most critical lesson to quote Edward Berard Walking on water and developing software from a specification are easy if both are frozen. Most of the time, it’s deep waters and high tides.
Another factor about Software Engineering is that it’s often a team activity. Unlike some other scientific fields, you cant tuck yourself away in a room writing code or solving problems. There are clients, Programmers, managers, various known and unknown stakeholders, deadlines, legacy technologies, Modern technologies, limits on resources, millions of dollars involved and most complicated of all, the diverse crowd of people with disparate backgrounds. It’s a balancing act that one has to perform among these conditions and should come up with an excellent solution to the problem at hand.
Something like this interests me as it’s not monotonic and gets more interesting as you grow as an Engineer. I really have to thank Nazim for sparking my interest in this domain. I am looking forward to reading, learn and explore more in this field.
Footnotes :