How to become a software developer
Mike Riley has been a software developer in some capacity or other for decades.
Currently responsible for IT duties at a medium-sized business in Chicago, Illinois that focuses on educational publishing, he is grateful that he gets to do what he does for a living. Job responsibilities include network engineering, software engineering, system administration, security management and desktop management – the whole nine yards. Riley, who didn’t pursue a traditional path to become a software developer, is largely self-taught and is driven by a love for new technologies.
“I’ve been in the business for over 30 years and I still get excited by new technologies and the evolution of both software and languages and frameworks and the hardware that it runs on,” says Riley, the author of Programming Your Home and Sublime Text 2 Screencast, both published in 2012 by Pragmatic Bookshelf.
Despite taking an unconventional path, Riley has developed and honed the skill set needed to succeed in the software developer field. Meanwhile, at least one company that hires software engineers or software developers, namely Rapid7, insists that passion is of utmost importance.
What the Job Entails
According to the Government of the United States’ Occupational Outlook Handbook for 2012-2013, software developers are required to take the initiative when it comes to creating computer programs. Some software developers work on the applications that permit people to perform certain tasks on PCs or other devices while other software developers work on the underlying applications that control networks or run the devices.
Specific work duties detailed in the handbook include the following:
- Examining users’ needs and then designing, testing and creating applications that cater to those needs
- Suggesting software upgrades for clients’ existing programs and systems
- Devising all aspects of the software or system and determining how the various components will work together
- Producing flowcharts and other models that inform programmers exactly how to write the application code
- Ensuring that the application continues to work as intended by performing routine application maintenance and testing
- Recording all particulars of the software or system as a reference for routine maintenance and upgrades
- Working in partnership with other computer specialists to produce the best possible software
The handbook adds that software developers who follow a more traditional path typically earn an undergraduate degree in a specialty such as computer science, software engineering or mathematics. A solid understanding of computer programming, which also entails keeping up to date on new computer languages and tools, is also important.
Being exposed to a Tandy TRS-80 computer while still in high school was one of the experiences that ultimately got Riley hooked on technology. One of his classmates at that particular time showed him an adventure game with graphics that were “very rudimentary,” using only vector drawings to represent traveling down corridors and pathways. Riley, nonetheless, was thoroughly intrigued by the “possibilities of the virtual world.”
Then there was the friend with the Texas Instruments TI-99 home computer. He and this friend would spend hours upon hours at night “typing in these BASIC language programs published by Creative Computing magazine.” Since this was before the Internet era, code had to be entered line by line exactly as shown. Even one syntax error meant having to go back and rewrite everything.
Those early experiences may have captured his imagination, but it wasn’t until later on that he decided to become a software developer. While pursuing a Master’s degree in exercise physiology, he came to the conclusion that he needed an easier way to capture his physiological data. At the time, he had an Atari ST home computer because, as a graduate student, he could not afford a Mac. In order to be able to achieve his objectives, he paired his Atari ST with a product called SpectreGCR, which was written by ex-AT&T researcher David Small.
Over time, however, Riley became a lot more interested in running software than he was in measuring and doing things with physiology – he actually developed an application while pursuing his Master’s that he sold to a medical software firm in Utah. Mulling over whether to focus his career entirely on physiology or to take the software developer route, Riley ended up choosing the latter. So instead of finishing up his studies, he dropped out of school to concentrate on developing software.
Hard & Soft Skills
On any given day, Riley uses a variety of hard and soft skills to tackle the challenges of being a software developer. Because he works at a mid-size company, workflow decisions get made fairly quickly. He’s the one tasked with building and maintaining the systems, so he is responsible for heading out and finding the tools for the job.
“Looking at software development as whole, a day-to-day situation would be receiving requests for software application enhancements, bug fixes or new projects – those pretty much are the three main categories,” he says.
When it comes to hard and soft skills that software developer types ought to have, Riley insists that priority No. 1 is passion. If software developers lack the wherewithal to push themselves to learn new things, they’re in for a frustrating time.
“If you enjoy brainteasers, puzzles, being challenged and are constantly excited about learning new things, software development career options are really going to be very attractive,” he explains.
As for specific hard skills, Riley says that software developers heading off to a corporate environment need to understand Java Enterprise Edition and Microsoft’s .NET whether it’s ASP.NET or C#.NET. Java, he continues, is beginning to “get more of a black eye” because it has been hit with numerous security issues in recent months.
Ed Nathanson, director of talent acquisition at Rapid7, mentions words like “passion” and “excitement” and “thirst” when describing the sorts of traits the company looks for in the software engineers that it brings on board. People who will fit in at Rapid7, which has its U.S. headquarters in Boston, Massachusetts, are passionate about what they do, have a sense of excitement for what they’re doing, and possess an insatiable thirst to grow over the near term and long term.
“And they’re going to be the ones who raise their hand to work on things that might be out of their comfort zone or grow with the company a lot easier as the company grows,” says Nathanson. “We have…[a] product line that’s Ruby-based out of Austin. These are tough skills to find and it’s a tight market, but for the people that we meet who separate themselves from the pack, it’s that passion, that spark, that separates them.”
As Rapid7’s director of engineering, Sam Adams adds that, on the hard skills front, the company is also interested in people skilled in Java.
“[W]e’re very heavy Java shop, so we look for people who have Java experience,” says Adams. “But, I’ll be honest, what we really look for is competence in any language.”
Things like degrees and certifications are critically important for professionals who are still in the early stages of their careers, says Nathanson. But as they gain more experience, degrees and certifications actually start to take a back seat to experience.
“For example, for the three experienced engineers we [recently] hired, I couldn’t even tell you what school they went to,” he acknowledges. “I couldn’t even tell you if they went to college. When they interviewed, they were great, and I looked at their work experience and it was great, and they’ve all worked out really well.”
Certifications were all the rage back in the late 90s, according to Riley. He did his due diligence at the time and asked for the opinions of people who worked for him. He ultimately discovered, though, that there didn’t seem to be any tangible difference between those who were certified and those who were not certified.
“There still may be place for certification, especially for larger organizations where they’re trying to decide between one candidate or another who have identical application development skills,” he says. “If a person is looking to have as broad an experience in information technology as possible, I would highly recommend starting out either at a startup or at a mid-sized company. By the nature of the business, you’ll have to teach yourself so much.”