Programmers translate specifications from software or web developers into working code, then trace and fix errors by rechecking the program until it produces the results it's supposed to. Beyond writing new programs, the job often means revising, repairing, or expanding existing programs to make them run more efficiently or handle new requirements, whether that's tracking inventory, storing and retrieving data, or controlling other equipment. Programmers also run trial versions of their code to confirm it behaves as intended before it ships, and regularly consult with managers and engineers to clarify exactly what a program needs to do. It's a fast-paced, deadline-driven role, though this occupation has actually seen a modest decline in job numbers in recent years.
Pros
High upside earning potential, up to $160k
Bachelor's degree opens the door to industries across the economy needing custom software
Hands-on, problem-solving work fixing and refining code to precise specifications
Cons
Employment projected to shrink over the next decade (-6%), a weak outlook versus other tech roles
Above-average hours, expect more than a standard 40-hour work week
Fast-paced work with real deadline pressure to ship fixes and features
A typical day
The morning starts with yesterday's failing test: a report module chokes on a date-boundary edge case, and the fix means stepping through the debugger until the off-by-one reveals itself. After standup, the main task is implementing a spec handed down from the design team — a new inventory-tracking feature with a defined interface and behavior, which becomes a day of writing functions, running them against test cases, and rewriting the clumsy first attempt into something maintainable. A code review lands mid-afternoon with a reviewer's comment that stings and is also right. The rhythm is tight loops: write, run, fail, fix — and the small dopamine hit when the tests all go green.
Tasks at the job
Write, analyze, review, and rewrite programs, using workflow chart and diagram, and applying knowledge of computer capabilities, subject matter, and symbolic logic.
Correct errors by making appropriate changes and rechecking the program to ensure that the desired results are produced.
Perform or direct revision, repair, or expansion of existing programs to increase operating efficiency or adapt to new requirements.
Write, update, and maintain computer programs or software packages to handle specific jobs such as tracking inventory, storing or retrieving data, or controlling other equipment.
Consult with managerial, engineering, and technical personnel to clarify program intent, identify problems, and suggest changes.
Conduct trial runs of programs and software applications to be sure they will produce the desired information and that the instructions are correct.
Workplace & working conditions
Work happens indoors in a climate-controlled setting, and most of the day is spent sitting at a desk.
The pace is often fast, with real time pressure to meet deadlines.
Education necessary or common
Bachelor's degree
Common college majors
Computer ScienceSoftware EngineeringInformation Systems