There has been much talk on social media about being a Software Engineer/Developer/Programmer in the last week or so, probably because we are all being safe and staying in our houses with not much else to do. Conversations have included what it takes to be an engineer, how to get started in engineering, and explaining what a ‘Software Engineer’ does.
Much of the discussions happen because most people do not understand what a ‘Software Engineer’ does, as we can see in this Twitter thread by Sara Ownbey Chipps…
What do you say when people ask you what you do? I say "I'm a computer programmer". Because it's all too complicated.— Sara Ownbey Chipps (@SaraJChipps) May 11, 2020
While I agree with Sara that it is complicated to explain at times, deep down, it isn’t. I replied to Sara, half-jokingly, “Professional Searcher” or “Professional Googler” too complicated? . Later on that day, on a different thread, someone said, “I do know what I’m doing. I’m damned good at Googling for answers!”
Combine these two separate threads with a random tweet of mine from Sunday.
Even though I don't code for work everyday, I surprise myself with how much I know, remember, and/or can create when I am working by myself. My latest new (personal) project, MyEventPresentations (http://jjg.me/github-mep), is coming along.— jguadagno (@jguadagno) May 10, 2020
It made me realize that being a Software Engineer is not about being an expert in a programming language, knowing all the answers to every question, or how to solve every problem. It’s really about having the ability to dissect a problem and have the capacity to dig for potential solutions/fixes. Another way to look at it is trying to solve that 1000 piece jigsaw puzzle. Sure, you have solved many of them before, but they are all different. How you solve that jigsaw puzzle is the skill. Do you start with corners, then the straight parts? Do you move towards the center with like shapes and colors? Over time, you add things to your mental toolbox for jigsaw puzzle-solving, and you can tackle harder jigsaw puzzle. This underlying theme is breaking the problem down into smaller, manageable pieces and putting those pieces together to solve the problem. Problem-solving skills are not something that can easily be taught to an individual. For most people, it comes with trial and error, time, and experience. However, with that problem-solving skill and having a base understanding of how things work, a suite of programming tools, a good search engine, and the willingness to learn, you too could build that piece of software or solve that jigsaw puzzle. With practice, you will progress in the field of software engineering.
To wrap up, as one of my leaders wrapped up a call with all the senior leaders explaining software engineering, “Engineering is basically continuous learning… and solving problems.”