Just What Is A Software Engineer?
"I'm a software engineer" I said, as my Mum peeled the last of the potatoes, ready for the oven.
By this point I know exactly where this is going - in the same direction as all the other times different people have asked what I do. Whether it be social gatherings, family meet ups, small talk in shops - people all give more or less the same response and my Mum is no different: "Oh right". It's the best of a polite set of available responses, served up by a hefty lack of interest.
She was asking me about my new job, and when pressing further, she said that to her (and I guess to most other people) she thought I sat at a computer all day and wrote code.
Hollywood and larger media circles would have you believe that SEs are cave-ridden, introverted yet technologically acute individuals lacking even the most fundamental social skills. And this isn't entirely their fault, as the wave of SEs throughout the 80's and 90's (called "programmers" back then) were the staple mark for this stereotype. Then and now, as is often the case, are two completely different animals. Indeed, if that stereotype had never been lost, I daresay I would be working in a different field entirely.
Wikipedia has it like this:
"A Software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work."
This definition hasn't changed much to any substantial extent throughout the years, contrary to how we deliver this set of services to the end user. With the advent of Lean and Agile practices, the whole industry has become customer-focussed. That means engaging at every level with the customer throughout the product's production process. It is no longer enough to have strong problem-solving skills if you resign yourself to a room with no one quite knowing exactly what you're working on.
Even when the sleeves are rolled up and our minds are near full capacity, the industry is alive with places like stackoverflow.com, blogs by the hundreds, and tutorials on every digital corner. It is a thriving ecosystem that we are a part of.
And yet, in the true fashion of all-roundedness, we need the best problem solvers possible. To be able to solve problems effectively is at the heart of software engineering. There are many layers to this, but the fundamental skill of producing code which fixes a problem on a computer is something every SE has (or should have). Because of this, application processes for SEs are consistently gruelling, testing how elegantly you can generate a solution while under pressure. Companies like Google and Facebook have become almost infamous for their rigorously hard questions they give to potential candidates. For example (taken from here):
Given an array, describe an algorithm to identify the subarray with the maximum sum. For example, if the input is [1, ‐3, 5, ‐2, 9, ‐8, ‐6, 4], the output would be [5, ‐2, 9].
Notice that the question itself isn't difficult to grasp. However coming up with an elegant solution to this will differentiate between good candidates and great candidates. Notice how quickly Google Search can predict what you are going to search for almost instantly? Questions like these are to thank for that. They allow companies to get the best talent in and utilise them accordingly.
There's a stigma attached to SEs when there really shouldn't be. The generous lack of challenging the stereotype is in a way a microcosm of our society's placement on views we have of one another. Nowadays SEs are part of a vibrant, creative community that makes up some of the biggest companies in the world.
So don't believe those Hollywood movies - they're just not true.
And so, as my Mum puts the potatoes in the oven to close off our glorious two line conversation regarding my chosen career path (conversely different to my siblings' experience with their more traditional careers), I decided that at dinner, about five minutes later, I would express just what it is like being a Software Engineer. It's fun, stressful, demanding, intellectually challenging and exciting all at the same time - and I wouldn't have it any other way.
Thank goodness for all you cave dwelling techies making the world work for us non-techies! Great article.
Good post Ciaran! Nice summary of SEing at the end