How to Become a More Creative Programmer
To the general public, creativity isn’t necessarily something that is associated with programming or the IT industry. Generally speaking, when people hear “programming,” they imagine technical skills, when people hear “artist,” they imagine creative skills.But the fact is, a career in programming requires both technical and creative skills.
As all programmers know (in fact, as everyone knows who has an interest, job or hobby that is not associated with ‘the arts’ knows) creativity is found everywhere, but sometimes, only those in the field itself can truly appreciate its beauty.
Let’s get a few things straight: programmers follow rules, programmers follow steps and in many cases, things need to be done by the book. Some languages and frameworks are extremely opinionated, and even tiny changes can cause catastrophic issues. We all learn initial programming logic from some form of teacher, and those teachers set us boundaries to work within. It’s only when we become more confident that we realise that there are multiple ways of solving problems. Some of the rules can be broken, breaking these roles can result in groundbreaking and—at other times—app-breaking programming, but hey, nothing ventured, nothing gained!
Don’t get me wrong, nothing is better than seeing clean, organized and well-tested code. Perhaps you prefer to view programming purely from a logical perspective. Your love for programming derives from its step-by-step nature and it’s this approach that enables you to successfully crank out project after project.
That’s good! There’s nothing wrong with that.
The following simply serves to help you discover more creativity and empower you in your role as a programmer. You might read this to find that you already do some of this and if so—great stuff, you’re more creative than you think!
You Probably Won’t Get to be Creative Straight Away
Development teams are full of a varying range of expertise: freshers, juniors, seniors, team leads and senior project managers. This hierarchy is there for a number or reasons, but the main ones we’ll focus on are quality assurance and to provide a pathway for career progression. Each role represents a new level of trust, ability and independence, which in turn gives you more freedom to be creative. If your creative solutions are successful within that independence, you’ll move into more creative roles and become one of the few who can tackle complex or niche projects. Creativity is an extremely valuable skill for the clients or organization you work for.
Beginning Creativity: Junior-Mid Level Programmer
To begin with, you may not have as much freedom or independence as you’d like. This is good—it’s important we all understand to understand things first, before getting to work, no matter our experience. Below I’ll list some everyday creative decisions you should consider during your early stages as a programmer.
Design patterns: Which pattern will best implement a feature?
Coding style for features: What are the best spacing, coding, commenting, naming conventions?
The code itself: Which parts of your code is reusable? Can the code be simplified?
Data structure: How should you structure this dictionary or array? Is it the right time to use a hash table?
Data types: are arrays, strings, ints, characters or floats are best suited for a particular operation?
Exception handling: What’s the best practice for handling exceptions?
Memory management: Some programming languages such as Java have an automatic garbage collection process, meaning developers don’t have to understand how things work. But you should! Why? Because then you will know how to implement the right GC process for different environments and better optimize performance.
Writing unit tests: What is the best way to write a unit test for this feature? Can you make the test faster, shorter, free of repetition? Treat unit tests with the same care you treat production code.
Finally, keep identifying what you’d like to learn on your next stack.
Onwards and Upwards: Creativity in Senior Developers
You’ve now become knowledgeable of all technology within a development cycle. You also have a proven ability to detect bugs and provide solutions that get to the core of the problem. You are now a key player in decision-making, and can act independently a lot of the time. You’re also now the leader of a bunch of junior/mid-level programmers or developers and it’s your role to lead by example. Especially try to remember the guidance you would’ve liked when you were a junior. Here’s what you should consider when leading your team.
Developer mistakes: what has caused the developer to make this mistake? At what step have they gone wrong? What’s the best way to fill knowledge gaps?
Bugs, bugs, bugs: why has this bug popped up again, what is the root cause? Does the issue lay within implementation, design or testing and therefore, what is the fix?
Performance tuning: is performance tuning necessary? What part of the system is the bottleneck? Can this be anticipated early? What technique should be used to improve performance?
Longevity: is the code maintainable, will it cause issues long-term?
Refactoring: is it the right time to refactor your codebase? Refactoring can be a huge job with very little outward benefit (if you’re doing it right!) but it’s immensely valuable in the right circumstances.
Knowledge sharing: can you or your team benefit of knowledge sharing? Of course! But, what pieces of knowledge will prove most useful?
Testing: what does your testing plan look like? What’s the best way to test?
The Finale: Creativity in Management
You’re either a project manager, technical manager or team lead. You are now overseeing all parts of a project, including technical specifications and design. You also choose the technical limitations for a project and also set the standard for what is considered quality work. Furthermore, you now take care of administrative tasks, communicate with clients and work with other teams to ensure project deadlines are met. In other words, your role has now gone well beyond just technicalities, now dealing with business and management, the need and potential for creativity grows.
Programming languages: What languages should be used for a project? What frameworks are your team using?
Design features: What features need to be discussed with a design team? What are the technical requirements for the implementation of those features?
Data storage: Demands for data storage are always increasing! Will you need to scale-up or scale-out?
Longevity: Is the codebase sustainable? Does the development cycle affect code maintainability in any way? Is your organization offering maintenance for this project?
Project requirements: Are there any technical requirements or limitations for this project? Is any upskilling necessary?
Budget: Are there any resources needed to meet project deadlines? What resources are developers or designers most concerned about?
Task dedication: What sort of project timeline will assure quality and give your team a reasonable amount of time? Where will there be sprints? When will code review occur? What is the best practice for code review?
Every role in a development team has to make decisions concerning a project every day. These decisions will range in size, importance and degree of creative freedom. Some decisions are best left to standard procedures, while others are opportunities to exercise our creativity, challenge our knowledge and progress within your field. If you’re always seeking to do better and find new or optimal solutions, you’ll earn more freedom within your development team. In saying that, you should never work entirely by yourself and always be open to sharing knowledge and receiving solutions or constructive criticism from others. No matter your role or years of experience, approaching programming, development or management from a creative perspective will make your knowledge more valuable.
Taking a more collective view, creativity is what gives a development company more flexibility. The IT industry is extremely competitive and a creative edge is one of the ways companies set themselves apart from the pack. If you’re looking to either join or hire a team that has years of reputable technical expertise and a work portfolio that represents creativity, me recommendation would be CodeClouds. They have a range of talented developers for hire.
What are you waiting for? Go forth and enjoy your role as a programmer! Programming is logical, but that’s no reason why it can’t be creative. With creativity comes career longevity, you may even achieve the esteemed title of a full-stack developer. For a look into the future, read this guide discussing what it truly takes to become a full-stack developer.