Learn about the underlying systems
To have knowledge about programming languages is the main part of software development. It is also very important for developers to be aware about what’s going on lower down the stack.Pete Bull, a support engineer at Acquia said, “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. But when you hit a roadblock, a really nasty bug, and need a deeper understanding of what’s happening under the hood, well 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.
Similarly, Robert Douglass, VP of Customer Satisfaction with Platform.sh told IT World that “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
There are chances that as a developer you may spend most of your time working on a code editor or a fancy IDE. However, also knowing how to execute things at the command line could sometimes make your life easier.
A 20-year veteran programmer, who wished to remain anonymous, told IT World, “Sometimes you find yourself on a machine where stuff has to be done right now and tools are very limited. Know the shell like you know how to breathe. 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 f’ing 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 *nix 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 grep + awk one-liner.”
Your debugger is your friend
As a coder, you will be spending majority of your time in tracking down bugs. Dave Varon, a bioinformatics developer at Novartis, highlighted the advantage of a debugger and it how can overshadow the initial costs of your time. “Learn to use your debugger!” he told IT World. “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 esp. 3rd 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 it is critical to do unit testing, which means to write tests to authenticate that small units of code are doing what they should. Among those people is Richard Handloff, a database developer with Strategic Power Systems. In an email to IT World, he wrote, “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
With technology changing quickly these days, the underlying systems, languages, and tools used by programmers also go through changes.
Adam Wulf, a mobile developer and founder of Milestone Made, suggests that new coders need to be prepared, and stay ahead of change. “Right now, I’m of the mind that you should plan to learn essentially brand new technology stack every ~ 4 years,” he said. “Good foundational knowledge is always applicable, but the tools and tech you’ll use every day will be completely different every 4 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
Even though the conventional thought is that programmers work alone, developers still have to work with other people. Ben Miller, the CTO of Sinclair Digital Ventures, stressed on the significance of being able to work as a 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 to IT World. “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!”
Reiterating the significance of people skills, Varon says, “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.”
An anonymous source who shared a similar thought on the advantages about being a team player told IT World, “Stepping up to the plate and doing what is asked of you even though it is grunt work will keep you employed as well,” he said. In that situation, he also warned, “But 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 rather interesting piece of advice which, at first blush, may not appear instinctive. “Coding yourself out of a job gets you promoted,” he told IT World. “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.”