While studying software engineering we review a wide range of ideas. We talk about process models, agile practices, activities and phases of a process. We also spend a lot of time talking about requirements gathering, design, testing, verification, and validation. Then, as we speak about newly emerging popular ideas such as scrum and DevOps, we also talk about toolchains that could be suitable for agile software development. All of this talk and contemplation is good and valuable. If we take heed from all of this, we would really become better software engineers.
having all of such tools and techniques, a very important question that should appear in our consciousness is that what should we develop with these tools. In a short life that we have, we have an enormous amount of work that needs to be done. Not all of this work is equally valuable. We should learn how to prioritize the projects that we can do based on their impact and the value they would add to our lives in one way or the other.
This aspect has kept me thinking for the past some time. I see people who are subscribing to doing typical run-of-the-mill types of projects such as to develop typical web applications. Such applications are so widespread now.
I met another group who wanted to develop a database management system. I personally do not have anything against it. As a matter of fact, developing a full-fledged database management system is a very challenging goal to undertake. There are a lot of aspects to it. There is file IO. There is the query parser. Add to this the desire to have a graphical user interface for such a system, the requirements simply seem to become difficult to manage.
Such systems are very valuable as well. Database management systems play a great role in almost every feat today.
But my argument against developing such a system is that database management systems are quite mature nowadays. The field is also quite saturated, well understood and well developed. There are so many open source versions available that you can download any of them within less than a minute and start using it.
I argue, then, that why shouldn’t we invest our energies in developing systems that are relatively less explored and can have a huge impact on the society. I personally like to advocate about unmanned aerial vehicles, to this end. Similarly, developing newer and more efficient renewable energy systems can have a huge impact on the way we consume energy. There are other such systems and problems that can be thought about as well. Think about water distribution networks or computational materials science. And you will have no less amount of interesting and valuable problems to work on.
If you found an error, highlight it and press Shift + Enter or click here to inform us.