Skillset

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

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.

Early Experiences

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.”

Red flags on a resume include information suggesting that someone’s skills are stale. If, for example, someone is still focusing on C and hasn’t actually done any Ruby or Java or any object-oriented programming, the truth of the matter is that that candidate has likely “fallen behind the times,” says Adams. He adds that JavaScript is another important language, and front-end user interface developers are very much in demand across the industry as well.

Certifications

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.”

A Canadian currently based in Ontario, Canada, Ian is a researcher for InfoSec Institute. Over the years, he has written for a number of IT-related sites such as Linux.com, ITManagersJournal.com and ITBusiness.ca.

About InfoSec

InfoSec Institute is the best source for high quality information security training. We have been training Information Security and IT Professionals since 1998 with a diverse lineup of relevant training courses. In the past 16 years, over 50,000 individuals have trusted InfoSec Institute for their professional development needs!

Join our newsletter

File download

First Name

Last Name

Work Phone Number

Work Email Address

Job Title

Does your employer pay for training?

What is your timeline for training?

InfoSec institute respects your privacy and will never use your personal information for anything other than to notify you of your requested course pricing. We will never sell your information to third parties. You will not be spammed.

Comments

What is Skillset?

Skillset

Practice tests & assessments.

Practice for certification success with the Skillset library of over 100,000 practice test questions. We analyze your responses and can determine when you are ready to sit for the test. Along your journey to exam readiness, we will:

1. Determine which required skills you knowledge is sufficient
2. Which required skills you need to work on
3. Recommend specific skills to practice on next
4. Track your progress towards a certification exam