I was out for lunch with some of my family this past weekend and I got up from our table to use the little girl’s room when I came back and found a debate ensuing between them. For a few moments, I wasn’t paying attention to what they were talking about because it had been a very long day of assignments and errands, my brain was slowly shutting down when I realised whatever they were debating about concerned me. Naturally, my interest peaked and I immediately assumed what they didn’t seem to come to a conclusion about, I could easily do it for them. Then the question was repeated, this time to me.
Are software engineers creatives?
My honest response was “Huh?”
From the dictionary, creativity is using imagination or original ideas to produce artistic work. And being a creative is marked by the ability to create.
After thinking about what creativity is, my second answer to that question was a confident “Yes”.
Creativity is not limited to just artwork, photography, colours. Creativity can be applied almost everywhere. I honestly think cooking is a creative process as well. And in the same spirit, there is technical creativity.
Now before you come at me like some at the table did, do allow me to briefly explain what software engineers do.
The beauty is in the details
First of all, an ideal team would have designers in its midst. They’re the visual creatives in an engineering team, They come up with the visual designs, decide on styles etc. Once designs have been decided on, then the developers or engineers build a product based on those designs. Their creativity is seen in their code because code is how they change a design from an image to a usable app or website.
Creativity in coding
Users never really know what is happening behind the scenes of websites they visit, apps they use and games they play. They’re not expected to. Behind the scenes of every piece of software you use is a world of design. Yes, it doesn’t look as beautiful as a piece of art and it would not always affect the user’s experience, but it does affect the functionality. To a layman, it looks like lines and lines of gibberish, but to a fellow engineer, well-designed code looks clean, beautiful and perfect. A work of art in its own right. One of the things we are expected to master in our careers and also taught in schools is practices in writing well-designed code.
Like anything else, writing well-designed code doesn’t happen overnight. It needs ALOT of practice, mentorship, learning from peers and seniors and having your work critiqued as often as possible if not all the time.
The process of getting to a result is as important as getting to the result
There is a phrase ‘spaghetti code, which usually means messy and all over the place kind code. Code that no one else would understand and even the programmer who wrote it would get confused about their own work after some time. Heavens forbid if changes need to be made to that kind of code. It would be a real nightmare.
Ever tried untangling cooked spaghetti without breaking a single strand?
Frankly, I haven’t perfected good design in code. I can get it to work as expected but that isn’t the only thing that matters. My work will be sent back to me until all spaghetti strands are neatly on their own. That’s an entire creative process and a lot of design work.
Writing code is a creative process
Before, I used to focus on getting results and never on the process of getting them, so lately I’m doing the opposite and I’ve come to realise that it’s much easier to get to the result when my code is well designed. It means writing a lot more code, which isn’t appealing to some, but at the end of the day, you become a better software engineer.
What is well-designed code?
At this point, you may be wondering what I mean by good code design. It simply means that all objects are independent. As much as they work together, they do not rely on each other and one can easily be changed without affecting the other. If your code can easily be understood by others, then it’s safe to say you’re well on your way to writing well-designed code. If your code is easily understood AND even easier to make changes to without breaking things that exist, then you’re definitely creative in how you design your code.
I will follow up this article with an intro to Object-Oriented Programming which is the original idea behind good design in programming… stay tuned.
this is straight fax