This post is slightly late, supposed to be posted last week ><
Too Many Frameworks
In other news, I do agree that the software world is really moving way too rapidly to sustain any sort of stable standards or best practices. Even throughout the period of a single semester doing 3 assignments, I find myself learning and unlearning the so-called best practices which I thought were correct. I find new ways of doing things. It’s both good and bad - good because as I have outlined in previous posts, usually I discover techniques or features which I haven’t really had the chance to work on before.
One example would be how I have kept restructuring a React app’s folder structure should look like. It’s definitely up to developers’ preferences, but from working with different teams and downloading different boilerplates you get a sense of how you can do things differently, such as one which structured Redux actions and reducers related to a single component under
components/ along with other view files, instead of traditionally having
reducers/ separated from your components.
I do hope that the pace slows down in the near future, and that developers can all collectively decide what’s good and what’s not.
It’s quite ironic that I’m doing CS2103 Software Engineering at the same time as CS3216 Software Product Engineering for Digital Markets, since (I guess) we are supposed to learn your good habits, improve your code quality and get familiar with common software engineering patterns and paradigms in CS2103 before moving to production-quality development in CS3216, but yet we’re just going all out (often in a haphazard manner) in CS3216.
Although there’s many things in CS2103 I don’t agree with, but it has definitely exposed me to the terminology to describe and concretize my ideas about how software should be structured, and some of it I wish I had known before starting on our assignments, with terms such as coupling, single responsibility principle, etc. which I probably already knew, but never formalized them into actual theory. These are useful not just when working with others in communication, but also when working alone.