Space

As the Software World Turns, Part 1: Engineers In, Programmers Out

In today’s world of application development, software programmers, developers, analysts, engineers and architects face an ever-widening range of job roles and expectations. Organizations worldwide are asking more of these professionals, in ways rarely seen only a decade ago.

Software developers have found themselves stuck between the need for multilingual knowledge and specialization at the same time.

To make their roles even more difficult to discern, a programmer in a small company may need to create an end-to-end solution while another in a large organization — with the exact same title — may be able to simply receive specifications, pound on a keyboard, produce the code that provides the specified result, and never get into deployment, much less talk to someone outside of IT.

The programmers we once knew are a dying breed.

“One of the things I’ve seen over the last three years is a decline in the number folks who describe themselves as computer programmers and a rise in the number of people who identify themselves as software engineers for application development or software engineers for systems development,” Jeffrey Hammond, an application development analyst for Forrester Research, told TechNewsWorld.

The reason, of course, is that these programmers are more involved with business processes and interacting with business leaders as they try to quickly create a new solution.

“There’s a lot more customer interaction these days,” Jason Brooks, a software engineer for Blackfin, told TechNewsWorld. More application developers are working with Agile or Agile-like methodologies that focus on fast application development, where incremental changes are pushed out to customers — a.k.a. business users — and tested for security and functionality success along the development lifecycle, he said.

Titles No Longer Match Jobs

“Generally, a company will have levels of programmers — Programmer I, II, III and then a programmer/analyst position,” Erik Miller, a programmer for Intermountain Gas Company, told TechNewsWorld. “My official title is Programmer III, but most of the time I do a programmer/analyst type of position, which means I analyze the business need and am required to come up with a solution — and then program it, too. Most companies under 350 people are going to be in that scenario. You’ve got to be a larger company to have programmer teams.”

In another organization, a programmer may be a developer, or an analyst may fill the role of an architect. The reason is the proliferation of diverse business needs. Gone are the days of simple client/server programming where programmers created Windows-based applications that made simple calls to the company’s database.

Consequently, developers are starting to have to deal with specific types of technologies and not just the raw programming language — they are becoming more like software engineers and less like technicians.

Part of the reason, Hammond said, comes down to the increasing use of software built into electronic devices like cell phones, PDAs, set-top boxes or gaming devices. Plus, there’s an overall movement to provide applications that can interact with devices, servers and other applications and deliver it all via Web-based rich Internet applications (RIAs).

At the same time, the emergence of service-oriented architecture (SOA) as part of a new programing model is creating additional specialization. SOA is an architectural method for connecting disparate business applications in order to deliver new solutions.

“You see folks who are close to the metal, that are using Java, C and C-sharp, who are writing Web services, and you see business analysts or business developers, business programmers, who might not be computer science majors, working as assemblers from this idea of service creation and service assembly,” Hammond explained.

“It’s starting to affect the way developers see themselves and it causes a divergence in the market. Are you a low-level service creator or a high-level service assembler? Neither is better, but both types are needed to build these new SOA and Web applications,” he said.

Is Certifications the Answer?

As an attempt to quantify skills, certifications have proliferated faster than bunnies in Australia. There are dozens of valid certifications related to application development, and most focus on the use of particular technologies.

Only the most difficult to obtain get into the area of the software architect, even though many developers are also working more on the interconnected application development strategies that architects typically design. Still, the differences get more into the action of the role, even though the same knowledge may be present.

“Software architects would not ever need to know how to program — it helps and most of them do know how to program — but they focus on the high level, what’s happening, the workflow of the program, if it’s meeting the business requirements,” Brooks explained. “A software engineer needs to be able to interpret and implement business requirements, maybe rewrite them and send them back. A software engineer is just one level below the architect.”

There are two software development stacks that dominate current development trends: .Net and J2EE.

Microsoft provides certifications for .Net while Sun Microsystems provides most of the certifications for J2EE, which tend to focus around Java programming.

Starting with Microsoft, the company has redeveloped its certification programs to fit with its .Net initiative. At the lowest rung, programmers can become certified in a specific Microsoft technology; for example, they can become a Microsoft Technology Specialist: .Net Framework 2.0 Web Applications; or a Microsoft Technology Specialist: .Net Framework 2.0 Windows Applications.

Likewise, a programmer could become a Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0.

These kinds of certifications are focused but generally easy to get — pass an exam or two and boom, you’re certified. Plus, they are dependent on the technology produced by Microsoft and Sun. As the technology is upgraded, the certification becomes less and less aligned with business needs.

Once a programmer moves up the certification food chain, the certifications require more breadth of experience and depth of understanding. Microsoft’s Professional Series of certifications require more exams and some prerequisites from Microsoft’s Technology Series, as well as periodic re-certifications to stay current. This level of certifications also require skills in design and project management.

For Sun, the next step is the Sun Certified Java Programmer certification, followed by specialties like the Sun Certified Java Developer, Sun Certified Web Component Developer, Sun Certified Business Component Developer, Sun Certified Developer for Java Web Services, or Sun Certified Mobile Application Developer.

Sun’s most prestigious certification is Sun Certified Enterprise Architect; Microsoft’s is the Microsoft Certified Architect. Despite the rise of architect-related functions by developers, both architect certifications are difficult to obtain.

Of course, there are dozens of other development-related certifications. IBM provides certifications for using its WebSphere and Rational development tools, as well as its Lotus Notes and Domino developer tools. Adobe, for instance, provides certifications for Flash, Dreamweaver and ColdFusion.

They all provide a measure of focused application development skill. The value in the developer world, however, is often questioned.

Certfications, Smertifications

“I’ve never seen developers really hired on what certifications they’ve presented,” Hammond said. “In the hiring process, what tends to happen is it comes down to, ‘What tools do you know? What languages have you done? How long have you programmed in them? Have you built any apps that I would know about? Can you show me any examples of applications?’ The technologies you feel comfortable with and master become more important than a paper certification.”

For the most part, certifications are more about ensuring that your resume gets through the human resources department and into the hiring manager’s office. Certifications provide a base-level proof of one’s understanding point.

“There are some certifications, like the Microsoft Architect or Sun Architect certifications, that mean a lot, and you have to go through a lot to get those certifications, but in general, C-sharp developer certifications — anyone can get them,” Brooks said. “It’s not going to tell you much about their skill level … by the time you get to the technical interview, nobody is going to talk about your certifications.”

Base Skills Get Outsourced

Overall, one thing is clear: the role of the single-language focused programmer is falling out of favor among many organizations. Technical coders, for example, who can’t grow new skills are having and will have a harder time finding and/or keeping jobs.

If a programmer’s job is simply a matter of receiving specs and turning in code, the odds are increasing that someone else is willing — and capable — of doing the same job for a lot less compensation.

“In the future, the real ‘developers’ will be offshore in India, China, Russia or some other far-off place, while the development managers, architects and business enablers will be here in America, helping to define, manage and deploy technology solutions that solve business problems,” David A. Kelly, president of Upside Research, told TechNewsWorld.

“While there will always be a role for superior technical ability, the developers and IT employees with the greatest potential will be the ones who can mix in-depth technology knowledge with business fluency. Yesterday’s superstar programmers are becoming tomorrow’s technology guides.”

As the Software World Turns, Part 2: Tools and Technology

Leave a Comment

Please sign in to post or reply to a comment. New users create a free account.

How confident are you in the reliability of AI-powered search results?
Loading ... Loading ...

Technewsworld Channels