I have always been fascinated by how can I create a software package and share it with the world. I have used so many open source tools in my life that I really wish I can give back in some ways. To make that happen, there's a important step I need to learn first. How to deploy a package to a repository for others to consume.
If you are like who wish to go deep into understanding every little bit of thing you read about, it can be very un-smartly in today's high-speed agile lingo.
You learn what you need, get the job done and then move on to next. You sure do pick up some skills but you don't get to be "expert" in any of that matter. Isn't that interesting? I always aspired for getting deeper understanding of technical topics and would go out of the way in reading books & articles one after the other like in some inception-mode hoping to get the detailed view of the topic in hand and before I am back to start, I would either be fully satisfied or confused. Later happened mostly with this exercise.
Anyways, to bring the point home, I was never sure about how SOLID principles align with reality. I always thought that if you don't do SOLID, you are a rookie. I thought the pros have got it on their fingertips. But I never understood what does a true SOLID code looks like. I kept looking for it and I thought that everyone else except me understood it and there's this unspoken rule of the trade that no-one has to speak it out-loud because it is such a common knowledge.
So my journey kept going looking for the right answer. Well I am not sure if I can say that I have finally found something that lights up the darkness for me, Here's a youtube video:-
Here's the summary of the talk:-
The other slide I really liked is :-
One of the point she mentions is not to pursue SOLID as a goal but as a set of guidelines to make your code easy to maintain in the future.
I feel much more relaxed about this religious practice in Software Engineering and makes my head hurt less. Apart from keeping so many other details tightly contained in my head (for which I really doubt I have similar capacity as an average man). I remember logic and concepts much better than details. I have struggled with it throughout my life as long as middle school without really understanding that this is how I am wired to think. In some way it is a blessing. I tend to focus on important things in life and forget about miseries as fast as you forget my name when introduced in a party :).
Good luck to you in your struggles towards becoming a better software engineer. I don't think Software Engineer is for few. I think anyone who wants to get bit more involved in how he/she interacts with technology can become a software engineer because this one one field of career which is only going to grow for the next 50 years at least. I think on 51st, AI will be doing our job and will be simply be monitoring AI machines and getting paid for our ideas.