As a relatively new developer, one of the questions I am often asked by my friends, family, (and total strangers!) is - why software development? Why engineering? Why do you do what you do?
These are all valid and important questions, but I think they also apply to everybody and not just to the newly graduated among us. As developers, our world is constantly changing with us - whether in the shape of new technologies, new features, new bugs, new enhancements, or even new people to work with. It is a fluid and dynamic world that we have chosen to professionally exist in. Why did we choose this one over all others?
I know my own answers, and maybe you know yours too. I'd like to highlight a few of them below.
1) Software development is a creative profession - in order to be successful programmers, we need to put ourselves in a clients shoes in order to effectively solve tech conundrums. In the process, we occasionally get to play around with new technologies, which provides us with ample opportunities to learn and enhance our skills. We are also given the chance to interact with a whole range of different people, from different vocations, and different walks of life - thereby enhancing the scope of our social network, and providing many different perspectives that we can then use to aid our discoveries.
2) Problem solving is a key part of the job, and for me personally, an incredibly satisfying one. Sometimes, fixes may be small and quick, and sometimes they are more extensive - but whatever the size and scope, problem solving and logical/mathematical formulation always plays a part. If you love logic puzzles, you might very well enjoy programming!
3) Collaboration is another key part of successful software development. The stereotype conjures a picture of a lonely programmer, whiling away the time in a basement, and while this is true for some (or at least, some of the time), the majority of us need to be great communicators, and team players, in order to thrive in this career. Whether that is pairing with peers to share knowledge, or receiving advice from more advanced programmers regarding the best practices, and how certain systems work in a particular context. It is exceedingly important to be confident in asking for help, even if it seems like an admittance of failure, because bashing your head against a code base for hours on end isn't productive, and hurts the cranium. There are many, many people in this world - chances are there is at LEAST one who can help solve your puzzles. This is a perk that I am still learning to embrace as a newbie, but something I am determined to get right.
In summary, software engineering is a project-based, hands-on, and collaborative career path. At Civo, we embrace what we do, and we are commited to providing flexible solutions to real-world problems, big or small. We are solution providers. Why software engineering? We love it.