It has been a while readers! For the past year I have somewhat neglected my blog, but I assure you (or at least I hope I do) that it was for a good reason. You see for the past year or so I have been really focused at developing my career as a software developer in my current company (at least that’s what I’d rather say :sweat_smile:). Now that I feel like I would like to put up a new blog post, what could be more fitting than writing something about software development?

I’m sure most, if not all of us, have beeen asked with the too common question what do you do (for your job)? and you would answer with I work as a <insert job title>. And after you answer, you may feel an awkward stare that as if says great, but I still don't know what you do but both parties would nod in agreement to progress the conversation to some other topic. As a software developer I’ve always had a bit of difficulty explaining what being a software deeveloper means to most people around me considering that most are not realted to software development and have little knowledge with the profession. But throughout this year I have had a bit of time to think this question through and I feel like I have come to a satisfying explanation which I’d like to share:

A software developer is a profession that solves problems, with knowledge and the craft of software creation being their primary tool

You may now be on the verge of just closing this blog post altogether after having been served with answer that is seemingly both ambiguous and obvious and thus feeling like you have wasted your precious time reading 2.5 paragraphs. But I assure you (as again I would like to believe) that I have good reason for my answer. There are two:

  1. The use of problem is intentionally worded as such to keep the scope of what a software developer can try to solve as wide as possible.
  2. By claiming that software developers have a primary tool, it opens up the possibility of having secondary, tertiary and more tools beyond software creation to solve problems at hand

I think the first point is more self-evident. Software is abundant in our life and how much it influences our life through how, where, when and what we do whether we notice it nor not, to the point that some say that software is “eating up the world”. There are many kinds of problems to solve and while problem itself is undescriptive, if you were to tell others that you are solving a particular kind of problem I find that it becomes easier for people to have a sense of what you are doing. They may not know the intricacies nor how you solve the problem, but it provides them a concretee point to focus on, and if they’re interested I’m sure they’ll ask you more about it or do their own research

Now on the second point. As software developers we are expected to use our knowledge and skills to be able to develope (and maintain) software. It is what we are primarily paid for and how we are assessed, but that doesn’t mean that is the only way we can solve problems. Some problems are very likely better solved NOT using software but using some other set of tools (queue the people trying to solve everything with artificial intelligence/machine learning :see_no_evil:). That is to say, software developers have a hammer (software creation) but not everything is a nail to be hammered away

Now, to my fellow software developers I would like to encourage you to:

  1. reflect on what kind of problems you are trying to solve, and what kind of problems you want to solve
  2. how you can best use your software creation skills to tackle the problems
  3. what other tools you can bring to the table to solve the problems? what kind of tools you would like to have (skills to develop)?
  4. advocate for yourself to have the chance to get better at solving these problems, such as by seeking professional development support within and outside of software development

Hope readers enjoyed reading!