Crack the Code: Getting Started in Computer Programming, Part 1
"Learn to code." This three-word sentence has become something like Batman villain Two-Face's coin in recent years. On one side of the coin, "Learn to code" is a snarky comment from zero-empathy online bullies, usually aimed at someone who writes about how they are struggling to find gainful employment in their chosen profession.
On the other side of the coin, "Learn to code" is meant as a genuine piece of advice, recognition of the fact that computer programming remains a prime source of job opportunities for people looking to either move on from their current IT industry role, or to redirect their career path entirely. In this instance, "Learn to code" is not some snide remark — it is a genuine, well-intended kick in the pants.
The U.S. Bureau of Labor Statistics reports that the median pay for computer programmers in 2018 was $84,200 per year, or roughly $40 per hour. This kind of earning potential has led many working professionals to consider programming as a desirable career option.
So, how does someone get started in computer programming? The best place to begin is to develop an understanding of what different types of programmers do in their day-to-day jobs.
One of the best descriptions of what computer programmers do also comes from the U.S. Bureau of Labor Statistics (BLS). To whit:
"Computer programmers write and test code that allows computer applications and software programs to function properly. They turn the program designs created by software developers and engineers into instructions that a computer can follow. In addition, programmers test newly created applications and programs to ensure that they produce the expected results. "
This paragraph, while informative, illustrates a problem that typically comes up when discussing computer programming: mix-and-match job titles. The description above includes "computer programmers," "software developers," and "software engineers," as three distinct roles, yet all three job titles are commonly used to describe the function of writing software.
A few searches of any large employment site will turn up plenty of jobs with similar work duty descriptions, but the actual job title will vary between the three we've mentioned and these:
Web developer Systems programmer Mobile application developer Programmer analyst Firmware developer Database programmer
You can't tell your coding jobs without a program, folks!
Let's simplify things a bit. A computer programmer (we'll stick with that term from now on) uses one or more programming languages to write the source code that goes into the creation of software. Computer programmers are commonly split into two categories: application programmers and system programmers.
Application programmers create software applications that run on top of various operating systems. Every game, word processor, and web browser you've used on a mobile phone, tablet, or laptop was created by one or more application programmers.
System programmers write software that controls computing hardware and information systems. Examples of software written by system programmers include operating systems (e.g. Windows, iOS), database management systems (used to power cloud computing and Big Data solutions), and firmware (the code that gets embedded into devices to control and manage their functions).
The more entry-level the position, the less input a computer programmer will have on the design and functionality of the software being created. A junior programmer is often employed as a figurative assembly line worker, helping to build a product that was envisioned and designed by a more experienced software expert.
Alternatively, senior programmers can be actively involved in the design of a new software product and the product's evolution throughout future versions.
Computer programmers are usually responsible for finding and fixing the software bugs discovered by product testers, also known as quality assurance (QA) experts. QA workers are often skilled programmers in their own rights, but that's a topic for another time.
Choose Your Own (Programming) Adventure
Like many careers in IT, the computer programming field can be split into several specialties. When choosing a specialty, you should consider the type of work you will enjoy the most, as well as the job market in your area. Deciding on a specialty can also help you make better, more focused choices when planning your training and certification efforts.
Here are the most popular computer programming roles you'll find in the industry. Again, keep in mind that the terms "developer," "programmer," and "engineer" are often used interchangeably in posted job listings.
Web developers create ecommerce websites for businesses, online portfolios for designers and other artists, information portals for government departments, and much more. It is very common for businesses to farm out web development to contractors, which makes this job category ideal for those who want to set themselves up as freelancers.
(One web development specialty worth its own mention is WordPress. WordPress is a content management system with tremendous online presence; it is used on over one-third of the top 10 million websites. Web developers fluent in PHP and skilled with MySQL databases — the two main technologies powering WordPress — may find they have an advantage when looking for job opportunities.)
Database developers design and create the databases used by applications and websites. These specialists may also perform basic or advanced analysis of database records, sometimes known as data mining. Structured Query Language (SQL) is the most common database programming language; other languages like Ruby, C#, and Java are also used.
Mobile app developers have seen demand for their services grow significantly during the last decade of the mobile computing boom. It is hard to imagine any organization that doesn't have offer some sort of mobile app to the public. Mobile apps for Apple's iOS devices are written in the Swift programming language, while Android apps are typically written using the Java or Kotlin programming languages.
Software application developers might be the largest category of computer programmer job roles. Some of the largest tech companies in the world — Microsoft, SAP, IBM, VMware, and others — are still very much dedicated to the creation and ongoing support of software applications. Java is the dominant programming language found in software application development, along with Python, C++, and C#.
In Part Two of our look at computer programming, we'll look at what training options are available for those looking to become developers, as well as what certifications are most relevant to computer programming.