What Software Engineering has taught me about life
I think the first sentence in this post should be – straightforwardly – the first point of this “life skills” list ! I don’t see any reason for intros in such post, as everyone reading this will relate regardless of their knowledge or expertise level. Software Engineering is a craft beyond tech, science or maths, it relies on, and shapes, the human skills. Here are my most impactful life skills – personal skills ? whatever you wanna call them ! it’s “those” skills that are not skills but more gifts and innate, but they are skills still.. ! – which being a software development fun then professional taught me.
Breathe, everything is ” figureoutable “
Self control especially when in trouble.
Having to write code on a daily basis with a highly likely error chance, or manipulating critical data where the least mistake would impact real people using your system, sometimes hundreds of thousands of them, or, communicating with a critical client or stakeholder where what you choose might be life changing for your team, your users, or even yourself, is no joke. It is as well VERY error-prone. Being a software programmer writing code, then a software engineer designing systems, I have always and daily been on either a situation of fixing problems/errors or mistakingly creating problems/errors and fixing them. This software engineering nature of accepting mistakes, issues, and difficult situations, to happily approach them with a strategy and get them fixed, became a second-nature of mine.
Now in a sudden or recurring normal-life “difficult” situation, I wouldn’t be surprised, wouldn’t get frustrated, and would choose the logic and strategy path over the emotions and irrationality path. I accredit much of this to my profession.
Before passing to the next point, it’s worth mentioning that being (or becoming) a “problem welcomer” then a problem solver thanks to practicing software engineering as a profession leads to a mindset of “results, what are the results here?”. Becoming very – or naturally – results oriented is another skill you’d get out of your job and in to your life.
Ain’t going nowhere until I solve this
In general, having self control requires practice, which means requires perseverance. In the context of our talk here, if the first life skill I learnt from software engineering is self control especially when making a mistake or when facing a problem, then the immediate second skills as a result would be perseverance. Having to be “cool” fixing errors and critical issues, overcoming the obvious many blockers in a project or dealing with sensitive data or systems is one of the thousand ways software engineering is teaching me perseverance every day. Another way is when I have to learn or relearn a skill, a framework or a technology. Having to update my skills, learn a new technology or framework every now and then is one the best things I love about being in IT. Learning from scratch requires perseverance.
In my personal life I find my self always up to “trying again” sometimes even more that I should be “trying again”. A certainty that “obviously the solution/what I want is there” and it’s just a matter of digging deeper is now a second nature to me. I accredit much of this to my profession.
I can (do) learn it all
Being able to (re)learn is the real wealth.
As I mentioned in the previous points, software engineering made me better in solving/managing issues and problems, and as a result it taught me more than I knew about perseverance and persistence. And as an example of how I learnt perseverance through my profession I wrote about having to learn things from scratch VERY often. Having to learn new skills and technologies and having to keep up with the tech trends is the basis of software engineering. I generally am not a fun of degrees and universities (you can see that very clearly through my previous posts 🤷♀️), but I have always been watching my college mates and I noticed that SOME of the top performing in college exams are also the best learners because they adapt a strategic way to learning new things regardless of it being a new language or cooking a new dish! The same goes for when you quit or graduate college to a profession that gets you to be learning something you don’t know everyday. With time you become a “master learner” and it becomes a second nature to say ” I can learn it ” instead of ” I don’t know it”.
Currently if I face a certain situation or if I need a certain thing, I tend to think of the things I can learn faster/easier/etc more than thinking of the things t I already know/do not know. I accredit much of this to my profession.
If else then as a lifestyle
This is one of the most obvious things being an excellent software engineering professional will add to your personality and personal life: having much better analytical thinking skills. Being able to correctly break down a problem or a task into components or smaller treatable “parts”, being able to evaluate the inputs you have against the output you need, having an ability to see patterns, and, always finding and starting from or getting back to the root cause is what every excellent software engineering master does. And to master such skills you should have some of it already in you, and, you should go through enough experience to have it in you even further. In both ways, once you become the software engineer with high levels at skills such as those listed above, you will certainly become a much better thinker in personal life. It will transform you into someone who steps back, thinks, searches, thinks again then decides.
Without having to be an experienced software engineer or a master of analytical thinking skills in the professional context, being a software programmer and only writing blocks of solid, responsible and clean code enhances your analytical abilities and tremendously impacts your personal life and behaviours.
These were the major life lessons (or personality traits, or maybe behaviours? naming differs but the meaning is one) that software engineering have taught throughout these last 6 years I’ve been writing professional software. Let me know in comments what are the lessons you got out of being a software engineer. I’d be happy to read your stories, questions or suggestions.