What Makes a Great Programmer?
To become a great programmer, it requires more than being an expert in object oriented principles, a love for math, a strong sense of logic, a deep knowledge of (preferred choice) coding language, etc. These are all skills that come with experience as a programmer and are necessary to be a good programmer but in order to get to the next level you need some other important skills. Game designer, digital media expert and faculty member Jason Elliott describes several less obvious skills that are crucial to becoming a great programmer.
Platform / Language agnostic
Many programmers spend years mastering a specific coding language or developing for a specific platform, such that they can close themselves off to alternatives. They will look at an engine and reject it because it uses managed code or an unfamiliar scripting language. A great programmer is willing to develop with whatever tool is put in front of them and push its boundaries while providing the team with insights on whether it is actually the best tool for the specific project they are working on. Technology moves rapidly and it is important to stay with the times.
Understand the User
Programmers are primarily responsible for making sure everything functions properly. This ranges from getting the correct frame rate to ensuring there are no memory leaks to properly displaying all the information on screen. Often these elements are framed in terms of problems that need to be solved and a programmer will diligently work on finding the optimal solution. A great programmer will understand the behaviours of the intended user and use that as the starting point for solving these problems. This will not only allow for a better end product, it will often lead to a more adaptable framework when changes are required in the future.
Being a good programmer generally means having a passion for all things code, including learning new languages and playing with a range of tools. However, it is important to stretch beyond that boundary into other, non-programming domains. When working on a multidisciplinary team, there are often conflicts between the different departments, such as the classic example of “coders vs artists”. The main issue here is often that they are both trying to solve a problem, but attack it in very different ways. Great programmers understand this and develop a passion for writing, art, music etc. It is through exploring a variety of interests that one is able to discover all new avenues to problem solving and allow for better communication.
This is one that is easy to start out with, but difficult to maintain throughout a career. Everyone knows a jaded programmer that has tons of experience and shuts ideas down as soon as a hint of risk comes around. Or one that is married to their code and unwilling to change or discard it. This can make them appear to be grumpy or worse, an obstacle for the the rest of the team to overcome. A great programmer is one that is optimistic and is open to all the ideas that come in. They should still use their experience to inform the team on potential downsides, but frame it in a proactive, friendly manner that helps motivate everyone to find the best ideas.
One of CDM’s newest faculty members brings more than twenty years of development experience. Jason has been a video game artist and designer, taught Game Art and Design at the Art Institute of Vancouver and now teaches Game Design at the CDM. Connect with Jason on Linkedin, follow him on Twitter and keep updated on his website.