7 Things Every Programmer Should Know
Phil Johnson, ITworld 5859 Times 1121 People

The lack of skilled IT workers is hurting the deployment of emerging technology, according to a new survey from Gartner. In areas from cloud to cybersecurity, this crisis is expected to last for years to come.

If you recently joined the world of professional software developers, you may think, thanks to your education and/or training in computer science and programming, that you have it all figured out. Developers who have been around the block a few times, though, want you to know that there are a bunch of things you should know about the business of writing code for a living that you can’t learn from a university course or a coding academy. 

Whether you’re a recent graduate starting your first developer job, or an older worker who’s transitioned to programming, read this advice for newbie programmers from those who’ve been there and been doing that for years. These are the things they wished they’d known when they first started to code for a living. 

Learn About the Underlying Systems 
A big part of software development, of course, is knowing programming languages. But developers also need to know about what’s going on lower down the stack. 

“Lots of languages abstract away from what is happening at the system level, and that abstraction is useful because it allows developers to be more productive much of the time.” said Pete Bull, a support engineer at Acquia. “But when you hit a roadblock, a really nasty bug, and need a deeper understanding of what's happening under the hood, it's a useful skill to be able to debug a process and look at the system calls and really see how a piece of code is interacting with the rest of the system,” he wrote via email. 

Likewise, Robert Douglass, VP of Customer Satisfaction with Platform said, “When I was just beginning programming, there were a lot of things that I really didn't understand about computers themselves. File systems, networking, and how things are kept in memory are three obvious examples. This meant that I would not necessarily understand the goals of some of the programming constructs I was being presented with.” 

Know Command Line Tools 
As a developer, chances are you’ll spend a good deal of time working with a fancy IDE or code editor. However, also knowing how to get things done at the command line could occasionally make your life easier. 

“Sometimes you find yourself on a machine where stuff has to be done right now and tools are very limited,” said one 20-year veteran programmer, who wished to remain anonymous. “Know the shell like you know how to breath. Tools like find, comm, diff, vi/vim, sed, awk. How to write little scripts right on the command line to find the file that needs to change right now because production is broken and Joe who fat fingered a URL in said unknown file is on vacation in Fiji.” 

Bull, who started using Microsoft tools, then slowly moved to Linux, agreed, saying, “I would have learned the ins and outs of the command line and all of the useful utilities that are available on a system. I can actually recall code that I wrote years ago, and probably spent days or weeks working on, that probably could have been done better in a one-liner.” 

Your Debugger is Your Friend 
A good chunk of your time as a coder will involve tracking down bugs. Dave Varon, a bioinformatics developer at Novartis, emphasized the benefit of a debugger and how it can outweigh the initial costs of your time. “Learn to use your debugger! Take that extra day or two to configure it. When you don't see the expected result, just debug it: set breakpoints, step through your code, and especially third-party code. It will save you days of frustration, and even better, you will learn things about coding you can only learn by reading someone else's code.” 

Learn to Write Tests 
Some developers feel that unit testing -- that is, writing tests to validate that small units of code are doing what they should is critical. Count Richard Handloff, a database developer with Strategic Power Systems, among those people. “I think the best bit of advice I'd give someone who wants to learn to program is to learn to write good tests and learn to write your tests really early in the process”. 

Plan on Change and Learning New Systems 
Everyone knows that technology changes quickly these days. That applies not only to consumer goods, but also to the underlying systems, languages, and tools that programmers use to do their jobs. 

Adam Wulf, a mobile developer and founder of Milestone Made, recommends that new coders be prepared for and stay ahead of change. “Right now, I'm of the mind that you should plan to learn essentially brand new technology stack about every four years,” he said. “Good foundational knowledge is always applicable, but the tools and tech you'll use every day will be completely different every four years.” 

“Projects are never written in just one language using one framework anymore,” said the developer who wished to remain anonymous. “You are never going to work on just one thing in one project, get used to moving from project to project and from language/technology to language/technology,” he wrote. 

Play Well With Others 
Despite the stereotypical notion of programmers working alone with their headphones on, developers still have to work other people. Ben Miller, the CTO of Sinclair Digital Ventures, emphasized the importance of being able to work as part of team to your career success. “Big projects mean lots of moving parts coming together, and how they fit together and divide up the problem can create impossible engineering problems if you aren't careful.” he wrote via email. “Before trying to optimize that one algorithm, work with the team and make sure there isn't a re-division of the problem that makes each person's problem simpler. Coding is a team sport!” 

Varon reiterated the importance of people skills, saying “If you can't figure it out yourself by re-intuiting the API or debugging, ask for help. Just because you think you've written a masterpiece doesn't mean it isn't crap or can't be better. Just like in college, other people in the room have the same questions, or questions only you can answer. Develop a rapport with colleagues. Often just stating the problem aloud enables a eureka moment.” 

Stepping up to the plate and doing what is asked of you even though it is grunt work will keep you employed as well. But, in that situation, be careful, you may get stuck doing it all the time. 

Don't be Afraid to Code Yourself Out of a Job 
Miller had a particularly interesting piece of advice which, at first, may not seem intuitive. “Coding yourself out of a job gets you promoted,” he said. “Find the simplest way to solve problems and make your code resilient and maintenance free, and people will give you more and more to do. They will even ask you to teach others to do what you do,” he explained. “In short, worrying about (or at least coding for) job security puts a damper on your career.”  


Leave a Reply