Saturday, November 26, 2011

An Ideal Programmer


Aspiring or active IT professionals who work as programmers can benefit from an improved understanding of what current and prospective employers want from people who are interested in this type of work. Programmers need complete and thorough knowledge of at least one or more major programming and scripting languages. An understanding of programming principles, along with knowledge of the ins and outs of software production, is also a must. In this article, we'll look at the relevant certifications, technical skills and knowledge, and subject matter expertise that are of greatest interest to employers today.

The 'Must Have' List: Essential Qualifications

Programmers have come a long way since the stereotype of "geeks" with pocket protectors and slide rules first appeared on the technology scene. You should know that we use the term "geek" with the utmost respect, because rumor has it that "the geeks shall inherit the earth"! That may be a paraphrase from another quote, but one thing is certain: The code that programmers write not only has changed the face of technology, but the way we communicate, conduct business, access information, manage our healthcare, and much more. Computer programmers (also known as software developers) are the cornerstone of the software technology revolution. Programmers provide the foundation on which all computing technology is built. In essence, without the skills of the programmer, the software industry couldn't exist; we'd still be using manual typewriters and carbon paper to make copies, and a simple transfer of documents might take weeks instead of seconds.
Obviously, programmers—particularly good programmers—are some real must-have IT professionals. So what does an employer look for when selecting a programmer? In a perfect world, an ideal programmer has the appropriate knowledge and skills in all of the following areas to meet the prospective employer's specifications:
  • Programming languages
  • Scripting languages
  • Programming principles
  • Production principles
  • Web applications
  • Education and experience
  • Personal skills
The following sections consider each of these areas in detail, discussing the specific languages and principles that are likely to be most desirable to today's businesses.

Programming Languages

At a minimum, a programmer needs to have a complete understanding of at least one (more is preferable) of the major programming languages. According to TIOBE's "Programming Community Index for September 2010," the top five most popular programming languages are Java, C, C++, PHP, and Visual Basic. Since the popularity of programming languages is constantly changing, employers look for programmers who have not only subject matter expertise in at least one of these major programming languages, but also a broad knowledge and understanding of multiple other languages such as Python, JavaScript, Ruby on Rails, C#, and so forth.
A visit to the TIOBE website or a simple Google search can put you in the know as to what programming languages are currently "hot." Programmers are expected to understand all of the nuances related to the programming languages they know. This means understanding how to architect, design, implement, test, debug, and maintain both simple and complex systems.


Scripting Languages

Proficiency in scripting languages is a plus for most programmers, and a must-have for some programming positions. Less complicated than programming languages that compile data, scripting languages are generally easy to learn and use. Scripting languages are popular because they allow web browsers to "talk" and interact with programs located on web servers. Ideal programmers thoroughly understand one or more scripting languages, such as JavaScript, Perl, WSH, UNIX shells, or TCL. Programmers working with the Java Virtual Machine (JVM) should also consider developing skills with scripting programs such as Groovy, JRuby, Jython, Scala, or Fantom. For those interested in JVM development, more information is available on theJavaWorld site. Programmers must be able to automate routine tasks using such scripting languages, performing arbitrary tasks to manipulate files, parse text input, and translate data among multiple forms and formats.


Programming PrinciplesProduction Principles

Programmers need to understand the principles and practices common to production software development. Production considerations include such things as version control, code libraries, source control systems, documentation, code reviews, testing tools and methodology, and software release management. Whether you're a one-man shop writing custom applications, or a member of a 100-developer team, understanding these principles will make your life as a programmer much easier.
Many companies now use specific methodologies for managing the software development lifecycle, and programmers should be familiar with those methodologies and how they relate to the production cycle. Some common methodologies include Agile, Lean, Scrum, Spiral, and Waterfall. Certifications and workshops are available for many of these methodologies. Take time to review the job postings for your dream company to find out what methodology is used; then make sure that you understand the particulars of that process.


Web Applications

You can't program without an understanding of the Web. Web applications are everywhere and available for everything—you can even get a CPR application for your iPhone. None of this occurs by magic or by accident; the programmers make it happen, and they need to understand the principles behind interactive web pages and web-based applications, including one or more of JavaServer Pages (JSP), Java servlets, Active Server Pages (ASP), and ActiveX controls. Depending on the requirements, programmers may also need knowledge of Cascading Style Sheets (CSS), HTML 4 (plus HTML 5 now on the horizon), and XHTML.


Education and Experience

Education vs. experience: Which is more valuable? For programming, as for most other fields, the answer is both. Because the world of software development moves so fast and changes so constantly (and quickly), employers tend to prefer programmers with proven skills. In this arena, experience is a plus. By the same token, many programming positions also require a solid educational background or certifications in addition to experience. Education can take many forms, ranging from two-year technical programs to four-year degree programs. You'll also find a multitude of certification programs available, such as the following:
  • Microsoft Certified Professional Developer (MCPD). Must have an understanding of Visual Studio, one or more of the Visual Studio languages (C#, C/C++, Visual Basic, J#), the .NET Framework, ASP.NET, ADO.NET, and so forth.
  • Java/Oracle certifications. Until recently, Sun/Java and Oracle certifications were branded separately. However, as of September 1, 2010 Sun/Java certifications became part of the Oracle certification program and have been rebranded as Oracle certifications. (Surprise!) According to the Oracle website, rebranding includes "all Java, Oracle Solaris, MySQL, Open Office, and Oracle Solaris Cluster certifications." Existing Sun certifications will still be recognized by Oracle, although the certification names will change going forward. For example, the former Sun Certified Java Associate (SCJA) is rebranded, now known as the Oracle Certified Associate, Java SE5/SE6. If you already hold a Sun or Oracle certification, you need to understand how your current certification maps to the new certification brand. Be prepared to educate your potential employer! For more information, along with course mapping and migration, check out the Oracle website.


Employers want programmers who understand modern programming principles, including object-oriented design, distributed programming techniques, client/server software design, implementation, testing, debugging, and maintenance. This group also includes all kinds of development methodologies (often with related environments or toolsets), as mentioned in the following section. Expect employers to be tightly focused on the tools and environments they've chosen in this arena; they'll also expect prospective candidates to be well-versed in these topics, tools, and technologies.


Personal Skills

Success doesn't lie in technical skills or education alone, although they certainly help. Programmers don't exist in a vacuum; they generally interact with teams. Successful programmers must also possess the following personal (soft) skills:
  • Ability to solve problems. Let's face it—the world of software development is a magnet for Murphy's Law: If something can go wrong, rest assured that it will. A savvy programmer must be a solution-oriented, out-of-the-box thinker who frequently comes up with new and innovative ways of doing old (and new) things.
  • Good communication skills. Communications are a must! That means communicating with humans—a mind-meld with the computer isn't enough. These skills should encompass all facets of communication, including both written and verbal contact.
  • Self-discipline. While programmers may interact with groups, writing code is a solitary process that requires self-discipline. The world of software development is frequently fraught with deadlines and last-minute changes that translate into long days and lots of hard work.

Summary

Programmers are the foundation for the world of software development. Successful programmers are constantly researching and looking for the newest trends in the field. Loyalty to programming languages may be counterproductive, so programmers need to be able to respond quickly to market needs by learning new languages that emerge or gain in popularity.
Ed Tittel is the creator of the Exam Cram series of IT certification prep books and a contributor to many other computer-related books. These days, he's spending lots of time working with Windows 7 and Windows Server 2008, trying to understand their many feature and functions, as well as their occasional foibles.






0 comments: