Every time I tell someone I am a software developer, they almost inevitably reply with, “You must be super smart, then.” I don’t feel any smarter than most other people. Truthfully, I feel dumber than most people I meet. To be fair, I do meet a lot of software developers.
The preconception is that I am some sort of technical wiz, especially good at math. I assure you I am not. While I have a college degree, it is in Computer Information Systems (CIS) which was mostly a business degree with some programming classes mixed in. Actually, I started college as a music major. I’ve met many developers who also started off (or even graduated) as fine arts majors - music, art, philosophy, and theology. With so many “creative types” who have excelled in software development, why do people still consider software development a purely technical pursuit? And if software development IS a creative endeavor, why are computer science schools usually part of the math department?
The Good Old Days
When we look at the history of computer science, the early days were all about building a computer that could “compute”, execute large calculations for primarily scientific purposes. Computers were needed to calculate how much rocket fuel would be needed to achieve a velocity that would allow a hundred-ton rocket to escape Earth’s atmosphere and make it into orbit. Those kinds of calculations incorporate aeronautics, physics, and many other disciplines. Not to mention if something goes wrong during a space mission, complex calculations may need to be done very quickly on the fly. So when I think of the earliest computers, I always think of calculators. In those cases, the people programming them were programming with little or no abstraction from the processor’s instruction set and were creating programs that ran mathematical formulae. It makes sense that they would be part of the math departments of most colleges.
What has Changed?
Today computers run pretty much everywhere. From online shopping to dispensing cash at the ATM. They find your ride, they broadcast your favorite shows, and they provide reliable electricity to your home. Businesses use software to manage employees and payroll. Sometimes we just use software to keep in touch with family and friends. Everything.
This evolution is powered, in part, by existing software programming languages. High-level programming languages that mean developers don’t have to understand how the computer works at the level of the hardware to write software. The most basic skill needed is the ability to learn a language. If you’re reading this, you’ve already learned at least one language, so that’s a fairly common skill. I think to excel as a programmer today, you are differentiated most by a creative mind.
A Beautiful, Creative Mind
Why would I say that you need a mostly creative mind? Because software today is about creating something from nothing. A blank screen. An open text document with a programming language’s file extension, like a painter’s blank canvas, or a composer’s empty page of sheet music. So what skills do I think are necessary to excel in a career in software development?
Basic modern software development abstracts business processes into software processes. Even though you are creating, there’s nothing for you to hold in your hands and construct. You’re usually dealing with functions or classes or logic operations. A good software developer needs to be able to think about a group of abstract things and how they interact, to take a process that may (or may not) be done manually, and turn it into pieces of code that mirror that process.
Business Problem Solving
As a business software developer, you need to understand business processes and problems. Then you need to create software that automates the routine parts of that business, helps identify the non-routine parts and helps humans deal with non-routine scenarios. This means being able to quickly understand business processes and also what the humans using the software will be trying to accomplish with it. Sometimes you may also need to help the business and employees understand how their business should work, which means understanding the hierarchy, politics, and people within a business. Most often, it takes a creative mind to visualize a business process and figure out how to codify each step in the process.
In order to help business and their customers, you’ll need to be able to deal with people. Software developers need to be able to quickly identify different individual communication styles and adapt their own communication style to each. This allows you to maximize your understanding of the requirements and communicate to the business your software solution ideas.
Very few developers work alone. They work in teams. Every team and team member comes with their own interpersonal challenges (even you). It’s important as a software developer to be able to share your ideas, understand other’s ideas, and collaborate on ideas with the rest of their team. Not just verbally, but in writing, in code, in commits and annotations.
Developers also need to understand human behavior in order to design software processes that make sense to the largest group of users. They need to understand the different levels of users. For instance, if I am writing public-facing software for a mortgage lender, I need to understand that most users won’t know (or want to know) the intricacies of the mortgage lending industry, but they still need a mortgage. If however, I am writing the software that the employees of the mortgage lenders will be using, I will be able to use industry terms and advanced features. This will also require me to learn the intricacies of mortgage lending myself.
The interpersonal skills require a creative mind to be able to put yourself in the shoes of those stakeholders, users, and teammates. Compromising is always a very delicate art. Making sure that the best ideas make it into the software while managing not to step on fragile egos is a very difficult balancing act. Sometimes, people skills require just a bit of acting as well.
Developers also need to be able to explain the software they’ve built to the business stakeholders and make sure they’ve programmed the process correctly. Which means thinking critically about the software you’re building as you’re building it. Does this software process make sense to the business? Are the logical decisions made in the software processes correct? Ultimately, does this software solve the business problem for which it is meant?
Is ALL Software Creative?
I certainly believe that all software development is creative to a certain extent. Some software is still extremely technical: scientific software, data science, and artificial intelligence are all areas of software development that still require a lot of math to excel, in addition to creative skills. Ironically, software made for creative endeavors: music recording, painting/drawing, and video games all require heavy math and physics backgrounds to excel as well.
I’m not saying that all software is a creative endeavor. I’m not even proposing that business software development is not technical at all. My suggestion is that creative people can and do excel as software developers because they come equipped with the right mental tools. Business, people, and abstract thinking are mostly creative skills. So the next time someone tells you they wouldn’t make a good programmer because they’re not good at math, you can tell them, “You don’t have to be!”
Learn Some Creative Programming Skills
Like with any other language skill, it’s important to practice and increase your vocabulary. No matter what programming language you code in, our developer blog has something for you!
- Build Mobile Apps with Angular, Ionic 4, and Spring Boot
- Build a Command Line Application with Node.js