Photo by Luca Bravo on Unsplash
Recently, at one of the local meetups, I met someone who introduced themselves by adding the following to the usual introductory sentence (name, etc.),
“I started my career in engineering, as a developer. But that’s too mechanical and not that creative, so I moved into user experience design.”
Maybe he was just trying to be friendly by mentioning that he has been a developer himself. But the reason he gave for making a transition into UX design didn’t make any sense to me. I was like (thinking) — my friend, you don’t get to judge my profession because you didn’t get it.
Some people make career shifts from software engineering mostly because of lack of interest. It’s absolutely fine if you don’t like programming. Not everybody enjoys it. On the other hand, calling it too mechanical and less creative means you never understood the basics in the first place.
“You might not think that programmers are artists, but programming is an extremely creative profession. It’s logic-based creativity.”
— John Romero
There is a lot of creativity in software development and it’s related to how we approach solving the problems. Sometimes we just try to find the quickest possible solution. That’s what makes things more mechanical and less creative. Instead, when we take a step back and analyse the problem before trying to solve it, things start to become interesting.
“Falling in love with code means falling in love with problem solving and being a part of a forever ongoing conversation.”
— Kathryn Barrett
Let’s take an example of sorting algorithms. There are so many of them. If things were really mechanical in software engineering, we would be satisfied with just one. What’s the need for so many solutions to solve the same problem of sorting a collection? Well, because the same problem behaves differently in different conditions, doesn’t it? And what makes things creative is when we try to find the best solution considering the conditions that surround the problem.
Computers are machines and programs are just instructions to run them. Creativity comes into picture when we try to get the best out of these machines through a well-thought solution. A creative programmer tries to find the most optimal set of instructions for the computer. He tries to find answers to questions which can help improve the instruction set. Some of the example questions can be the following.
struct
take precedence over a class
?character array
makes more sense than a string
?hash table
be used in place of a dictionary
?When you start looking at programming this way, things actually become a lot more creative.
“Everyday life is like programming, I guess. If you love something you can put beauty into it.”
— Donald Knuth
Another aspect of software engineering that makes it not mechanical is the pace at which things change in this profession. There is always something new to try and learn. And the more amazing thing is that there are always new problems to solve because of new use-cases coming up every day. If you don’t continuously learn and keep using the same skills, things are bound to become mechanical and boring.
There is a difference between the code that just works and the code that works well and should be shipped. This gap is the sweet spot where creativity comes into the picture.
Every professional software developer writes code that works, at least in some way. But there is a difference between the code that just works and the code that works well and should be shipped. This gap is the sweet spot where creativity comes into the picture. It’s up to you how you cover this gap or don’t. If you take interest in making your code better (extensible, performant, bug-free and readable), you are creative and have covered this gap well. If you can’t, at least don’t shy away by calling software engineering not creative. Believe me, for some people, beautifully written code is a thing to swear by.