Computer Programmers
SOC Code: 15-1251.00
Computer & MathematicalComputer programmers create, modify, and test the code and scripts that power the software applications driving modern business and daily life, earning a median salary of $98,670 per year. These professionals translate software designs and specifications into functional programs using languages like Python, Java, JavaScript, C++, and many others. While the profession has evolved significantly with the rise of higher-level development frameworks and AI-assisted coding, skilled programmers who can write efficient, maintainable code remain fundamental to the technology ecosystem.
Salary Overview
Median
$98,670
25th Percentile
$71,860
75th Percentile
$128,960
90th Percentile
$162,090
Salary Distribution
Job Outlook (2024–2034)
Growth Rate
-6.0%
New Openings
5,500
Outlook
Decline
Key Skills
Knowledge Areas
What They Do
- 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.
- Prepare detailed workflow charts and diagrams that describe input, output, and logical operation, and convert them into a series of instructions coded in a computer language.
- Write or contribute to instructions or manuals to guide end users.
Tools & Technology
★ = Hot Technology (in-demand)
Education Requirements
Typical entry-level education: Bachelor's Degree
Related Careers
Top Career Pivot Targets
View all 32 →Careers with the highest skill compatibility from Computer Programmers.
A Day in the Life
A computer programmer's day typically begins with reviewing the team's task board or project management system, checking for newly assigned bug reports, feature requests, or code review notifications that need attention. Morning hours are often dedicated to focused coding sessions, writing new functions and modules, implementing algorithms, or integrating third-party APIs and libraries into existing applications according to technical specifications. Programmers frequently reference documentation, Stack Overflow, and internal wikis while working through implementation challenges, and use version control systems like Git to manage code changes and collaborate with team members. Midday commonly includes stand-up meetings with the development team to discuss progress, blockers, and priorities, followed by code review sessions where programmers examine colleagues' pull requests for correctness, efficiency, and adherence to coding standards. Afternoon work often focuses on debugging—using integrated development environment tools, log analysis, and systematic testing to identify and resolve defects reported by QA teams or end users. Testing is woven throughout the day, with programmers writing unit tests, running automated test suites, and verifying that new code integrates properly with existing systems without introducing regressions. The day may close with updating documentation, refactoring code to improve readability and performance, or researching new programming techniques and tools that could improve the team's development workflow.
Work Environment
Computer programmers work primarily in office environments, though remote and hybrid arrangements have become the dominant model in the post-pandemic technology industry. The work is predominantly sedentary and screen-intensive, with programmers spending six to eight hours per day at their workstations writing, reviewing, and testing code across multiple monitors. Most programming teams use agile or lean development methodologies, organizing work in two-week sprints with daily stand-ups, sprint planning sessions, and retrospective meetings that structure the collaborative workflow. Work culture varies significantly across organizations: startups often feature casual environments with flat hierarchies and broad responsibilities, while enterprise settings may involve more structured processes, specialized roles, and formal documentation requirements. Standard business hours are common, though deadline-driven periods before releases or product launches may require extended hours, and some programmers voluntarily work flexible schedules that accommodate their peak productivity periods. The culture values deep focus time, and many teams establish quiet hours or focus blocks where meetings are avoided to allow uninterrupted coding. Benefits typically include competitive salaries, equity in technology companies, flexible PTO, professional development budgets, and the equipment and tooling needed to maintain productive development environments.
Career Path & Advancement
Computer programmers enter the field through diverse educational paths, including bachelor's degrees in computer science or software engineering, coding bootcamp programs, associate degrees, or self-directed learning supplemented by portfolio projects. Entry-level positions typically involve writing code under the direction of senior developers, fixing bugs, implementing well-defined features, and learning the organization's codebase, development tools, and coding standards. After two to four years, programmers advance to mid-level positions where they independently implement more complex features, participate in architectural discussions, and begin mentoring junior team members. Senior programmer roles involve leading technical initiatives, making technology selection decisions, establishing coding standards, and serving as the go-to expert for specific systems or programming domains. The career path often branches at this stage: the technical track leads to principal engineer, staff engineer, or architect roles focused on system design and technical leadership, while the management track leads to engineering manager, director of engineering, and VP of engineering positions. Many programmers also transition into specialized roles like database developer, DevOps engineer, or security programmer as they discover particular areas of interest and aptitude. Freelance and contract programming is a well-established career model, with experienced programmers commanding premium hourly rates for specialized skills or short-term project engagements.
Specializations
Computer programming encompasses numerous specializations defined by technology stack, application domain, and the type of systems being developed. Web development programmers work with frontend technologies like JavaScript, TypeScript, React, and Angular, or backend frameworks like Node.js, Django, and Spring Boot to build the web applications that power e-commerce, social media, and enterprise software. Systems programmers work closer to the hardware, writing code in C, C++, or Rust for operating systems, device drivers, embedded firmware, and performance-critical applications where resource efficiency is paramount. Database programmers specialize in SQL, PL/SQL, and NoSQL technologies, developing stored procedures, optimizing queries, managing data migrations, and building the data access layers that connect applications to their underlying data stores. Mobile application programmers focus on iOS development with Swift, Android development with Kotlin, or cross-platform frameworks like Flutter and React Native to create the smartphone applications used by billions. Game programmers work with engines like Unity and Unreal, writing gameplay logic, physics simulations, rendering pipelines, and network code that bring interactive entertainment to life. Scientific and numerical programmers use Python, R, MATLAB, or Fortran for computational modeling, statistical analysis, and data processing in research, finance, and engineering domains. Automation and scripting programmers develop the tools, build systems, and workflow automations that improve development team productivity and operational efficiency.
Pros & Cons
Advantages
- ✓The median salary of $98,670 provides strong compensation with significant upside for experienced programmers specializing in high-demand languages and frameworks.
- ✓Remote work opportunities are exceptionally abundant, with many organizations offering fully distributed positions that provide geographic and lifestyle flexibility.
- ✓The creative satisfaction of building functional software from abstract specifications provides a tangible sense of accomplishment with every completed feature.
- ✓Continuous learning is built into the profession, ensuring intellectual stimulation and the opportunity to work with evolving technologies throughout your career.
- ✓Multiple entry paths including bootcamps, self-study, and traditional degrees make the profession accessible to career changers from diverse backgrounds.
- ✓Freelance and contract opportunities provide flexibility for programmers who prefer project-based work and the ability to choose their own clients and schedules.
- ✓The universal demand for programming skills across every industry provides exceptional career mobility and job security.
Challenges
- ✗Extended periods of sedentary, screen-intensive work can contribute to eye strain, repetitive stress injuries, and other ergonomic health concerns.
- ✗The pace of technology change requires constant self-education, and skills in specific languages or frameworks can become obsolete within a few years.
- ✗Debugging complex, intermittent issues can be deeply frustrating, consuming hours or days of effort before the root cause is identified and resolved.
- ✗AI-assisted coding tools are changing the nature of the work, creating uncertainty about how the role will evolve and which skills will remain most valuable.
- ✗Tight deadlines and production incidents can create stressful periods requiring extended hours, particularly near product releases or during system outages.
- ✗Imposter syndrome and the pressure to keep up with a vast and ever-expanding technology ecosystem affect many programmers throughout their careers.
- ✗Isolation can be a challenge, especially for remote programmers who lack the social interaction of a shared office environment.
Industry Insight
The computer programming profession is experiencing a profound transformation driven by AI-assisted development tools, evolving technology stacks, and changing expectations for what programmers deliver. AI code assistants like GitHub Copilot and similar tools are augmenting programmer productivity by generating boilerplate code, suggesting implementations, and automating repetitive tasks, shifting the programmer's role toward higher-level design decisions, code review, and system integration. The rise of low-code and no-code platforms has reduced the need for programmers to build certain categories of applications, particularly internal tools and simple workflow automations, while simultaneously increasing demand for programmers who build and extend these platforms. Cloud-native development practices including containerization, microservices architecture, and serverless computing have become standard expectations, requiring programmers to understand deployment and infrastructure concepts alongside coding skills. TypeScript has emerged as the dominant language for web development, bringing strong typing to the JavaScript ecosystem and improving code quality for large-scale applications. The cybersecurity imperative has made secure coding practices a fundamental requirement rather than a specialty, with programmers expected to understand and prevent common vulnerabilities like injection attacks and authentication flaws. Open-source software continues to dominate the technology stack, and active participation in open-source communities has become both a professional development strategy and a hiring signal valued by employers. Despite concerns about AI replacing programmers, demand for professionals who can design, build, and maintain complex software systems continues to grow, though the nature of the work is shifting toward higher-level problem-solving and integration.
How to Break Into This Career
Breaking into computer programming has become more accessible than ever, with multiple pathways that cater to different learning styles, timelines, and financial situations. Coding bootcamps offering intensive twelve-to-sixteen-week programs in web development, data science, or software engineering provide focused, practical training that prioritizes job-ready skills over theoretical depth. Self-directed learners can leverage free and low-cost resources including freeCodeCamp, The Odin Project, CS50 from Harvard, and language-specific tutorials to build programming skills at their own pace. Building a portfolio of projects is arguably the single most important step for breaking in, as working applications, open-source contributions, and published code samples demonstrate practical ability far more effectively than certifications alone. Contributing to open-source projects on GitHub provides real-world experience with collaborative development practices, code review, and version control while simultaneously building public visibility within the developer community. Internships and apprenticeships at technology companies provide structured on-ramps with mentorship, even for those transitioning from entirely different career backgrounds. Participating in hackathons, coding challenges on platforms like LeetCode and HackerRank, and local developer meetups builds both skills and professional connections that can lead to referrals and job opportunities. Developing T-shaped skills—deep expertise in one language or framework combined with working knowledge of adjacent tools and technologies—creates the most compelling profile for entry-level programming positions.
Career Pivot Tips
Computer programmers develop a core analytical and technical skill set that serves as an exceptional foundation for transitioning into adjacent technology and business roles. Software engineering is the most common upward pivot, where programmers who deepen their understanding of system design, architecture patterns, and engineering management take on more responsibility for entire systems rather than individual features. Product management is a popular transition that leverages the programmer's understanding of technical feasibility, development processes, and user-facing software to bridge the gap between engineering teams and business stakeholders. Technical writing and developer advocacy combine programming expertise with communication skills, with roles at documentation-heavy companies, developer tool vendors, or as content creators serving the programming community. Data engineering and data science are natural pivots for programmers with strong analytical skills, particularly those proficient in Python and SQL who can apply their coding discipline to data pipeline development and statistical analysis. Quality assurance engineering, including test automation, benefits from the programmer's coding skills while shifting focus to systematic testing strategies, quality frameworks, and defect prevention methodologies. Cybersecurity roles including penetration testing and application security leverage the ability to read, write, and analyze code to identify vulnerabilities and build secure systems. Technology entrepreneurship is well-suited to programmers who can prototype their own product ideas, with the ability to build an MVP without external development resources providing a significant advantage over non-technical founders.
Explore Career Pivots
See how Computer Programmers compares to other careers and find your best pivot opportunities.
Find Pivots from Computer Programmers