Are you ready to discover your college program?
Computer programmers create, modify, and test code with software and application design teams. These professionals collaborate with colleagues to create new products or modify existing platforms. Computer programmers also manage operating systems and troubleshoot problems.
These workers typically possess mathematics, coding, and critical thinking skills. Day-to-day duties for computer programmers include undertaking creative projects and participating in innovative software design and development efforts.
The importance of computer programming in the contemporary world continues to grow. Read on to find out what that means for a day in the life of a computer programmer.
What Is a Computer Programmer?
Computer programmers are vital to companies or organizations across many industries as workers who solve problems and think critically. These professionals write, test, and update code to develop software, applications, games, and other technologies.
Computer programmers have many of the same duties as software developers, with expertise in programming languages like Java and Python. They also have vast knowledge and understanding of programming algorithms and libraries.
The importance of computer programming in education and the workforce has been recognized by groups like the Institute of Electrical and Electronic Engineers, universities, and tech CEOs like Apple's Tim Cook. The path to becoming a computer programmer may include a degree or certificate, but bootcamps and self-study can build relevant skills, as well.
- Read more about computer programmers
- Explore computer programming languages
- Learn how to become a computer programmer
- Should you get a degree in computer programming?
What Does a Computer Programmer Do?
Computer programmers bring ideas to fruition by writing code, scripts, and programs for mobile and desktop platforms. They coordinate with software designers, web developers, and fellow information technology professionals to develop computer games, write logic directions for appliances, and create translations for machines and applications to carry out human instructions.
Computer programmers may work independently, with teams, or both. They typically enjoy finding solutions to software design and development challenges. Computer programmers must remain conscientious, detail-oriented, and open to new ideas.
Computer programmers ensure the functionality of computer code and scripts by testing software, troubleshooting system errors, analyzing algorithms, and providing technical support. The following list provides more information about key job responsibilities for computer programmers.
Key Job Responsibilities
The Day to Day for a Computer Programmer
Computer programmers spend much of their days behind computers writing code, scripts, and programs. Their code may apply to new software or existing applications. Computer programmers make changes to code and scripts, find solutions, and provide technical support. Common computer programming languages include Python, Java, and C+.
Many computer programmers are self-employed. Others work in office settings at computer systems design companies, financial and insurance institutions, manufacturing businesses, and software publishing firms. Computer programmers may work remotely or participate in face-to-face activities but generally spend 40 hours a week on the job.
Computer programmers work closely with software and application designers, developers, and engineers. They meet with colleagues throughout a typical workday and may present their work to stakeholders to demonstrate progress.
Some duties for computer programmers may be redundant, and others can present frustrating problems. Computer programmers are problem-solvers who create and update programs for software developers and engineers. They must remain dedicated to presenting products that meet users' needs and goals.
Where Do Computer Programmers Work?
The states with the highest employment levels for computer programmers, according to the Bureau of Labor Statistics (BLS), are California, Texas, and New York. California's employment levels align with data about top metropolitan cities for computer programmers. San Jose, San Francisco, and San Diego are among the top six metropolitan areas for the profession in the country.
Metropolitan areas offer the highest levels of employment for computer programmers, largely driven by the strong presence of technology companies in major cities. The California Bay Area provides the most jobs for technology workers in the U.S.
Cost of living considerations can greatly influence where computer programmers look for jobs. Major metropolitan areas like the California Bay Area are some of the most costly places in the country to live. New York and California rank among the top three most expensive states in the country.
BLS reporting also indicates that the top non-metropolitan areas for computer programmers are Alaska, Montana, and Texas. Because the highest-paying industries for computer programmers are petroleum and coal product manufacturers and chemical manufacturers, this could make a non-urban setting more appealing to individuals in the role.
Professional Spotlight: Sunil Kowlgi
Why did you decide to pursue computer programming?
I was introduced to computer programming in a class in sixth grade in the 1990s. The class was based on the Logo programming language, in which you write commands to draw things on a computer screen. I loved programming in Logo as I could create any shape or figure from my imagination.
For the final project, I created an alien robot, and although the teacher only asked for the program, I also submitted a short story on the alien robot. The teacher gave me a good score on the computer program and gave me bonus points for the story. From that initial experience, it stuck with me that programming was a fun activity and a cool way to express your imagination.
I later took programming classes in high school and college, but I wasn't yet thinking of a career in computer programming. It was during a project in my senior year of college that I realized I enjoyed programming and was good at it. This project was different in that it was entirely self-directed — I came up with the project proposal and wrote 1,000-1,500 lines of code by myself, and the project worked pretty well. The project was to emulate a software protocol called CAN, which is used for inter-device communication in automobiles.
For example, your car will sound an alarm when a door is open because a sensor in the door sends a CAN message to the car computer. After the project, I was sure that I wanted to have a programming job, and that's what I've done ever since.
What are the biggest challenges you have faced working in computer programming?
The biggest challenges I've encountered are related to complex code bases that are co-written by many software programmers. An example of a complex code base would be software code for the Chrome browser, which goes into the hundreds of thousands, if not millions, of lines of code.
When working on complex software, you rarely ever write code from scratch. Even when a company decides to make a brand new product, you start by reusing existing software code and modifying the code to meet product requirements. To modify code, you first need to comprehend it.
There are two challenges when it comes to comprehending an existing code base. The first challenge is that people writing software are focused on making the product work while making the code comprehensible is usually an afterthought.
But as time goes by and the software gets reused by others not familiar with the code, the comprehensibility of code starts to matter. If code is hard to understand, software programmers new to the code might end up introducing bugs. This failure to properly understand code before reusing it is one of the most common reasons for software bugs.
When working with a complex code base, you need documentation that describes the code architecture and how the code works. A challenge in most cases is the documentation is either stale, as it hasn't been updated as the software code is updated, or doesn't have all the information. When you don't have good documentation, it slows down your ability to understand and use the code correctly.
What are the most rewarding aspects?
When I see my software products help someone be successful in whatever they do, that is the most rewarding feeling. Users are making videos using my software for teaching others about cryptocurrency, the Spanish language, and math problem-solving skills, among others, and these videos have reached tens of thousands of their subscribers. It feels awesome to help users deliver great video content to their audience.
Was it challenging to find a job in the field?
When I graduated from college in the 2000s, there were plenty of software jobs available, and that is still the case even today. But it was a bit of a challenge to find jobs in a particular niche that I preferred, which had to do with writing device driver software (software that interfaces with electronics hardware).
I was lucky to come across an ad for a company called Kyocera Wireless that had openings for mobile phone software development and landed a job there.
What did your career trajectory look like after earning your degree?
My first software job was at Kyocera Wireless as an entry-level software programmer, where I wrote software in C for mobile phones. This was a time before the iPhone came into the market. I worked there for two years and then took a break to get a master's in computer engineering at the University of Texas at Austin.
After my master's, I worked seven years as a software programmer at National Instruments in Austin. There, I worked on device driver software in C++ for microprocessors and circuit boards. The best part of working at National Instruments was being in the company of really smart programmers, from whom I learned a lot. That environment helped me develop the skills and confidence to do more ambitious things, like building a software startup.
How do you organize, plan and prioritize your work?
Coding is a lot like playing a game. You do some amount of planning upfront, then write some code and see the results. Then plan some more, write more code, and so on. It's a gradual process where you have to complete a level to get to the next level, and there are no cheat codes. You must develop code in steps, or it won't end up working right.
Before writing any code, I work things out on paper or a whiteboard. Writing things down helps clarify my thinking. It's on paper where I come up with an outline of what I want to accomplish.
I draw diagrams to represent data, code execution sequences, and code architecture. Once I have figured out how I'm going to tackle a problem, I start coding the easiest parts first. I write the bare minimum code to generate a tangible result — like a basic webpage that I can see and interact with — and then I repeat cycles of plan and code through to completion.
Advice for newcomers to the profession?
Programming is a skill you learn by doing. Work on projects. They're the best way to learn. Textbooks are helpful after you've done some coding already; they're best for refining your understanding and improving your knowledge about programming.
To improve your skills, look for examples of code online, tweak them, and run to see results. Keep modifying code till you get the results you want. If you repeat this cycle of starting with examples and ending up with something cool, you're on your way to becoming a very effective programmer.
Sunil Kowlgi is a startup founder and computer programmer with 13 years of software industry experience. He works in the video space and built Klip, which helps people make quick, polished video tutorials and demos for YouTube. Before Klip, Kowlgi worked for seven years as a software developer for National Instruments, a large technology company based in Austin, Texas.
He has worked on different kinds of software — including system software, web development, mobile app development, and networking — in various programming languages. Kowlgi holds a master's in computer engineering from UT Austin and a bachelor's in electrical engineering.
FAQ About the Day to Day of Computer Programming
What is the job description of a computer programmer?
Computer programmers write, test, and correct computer code, scripts, and programs. They update programs, troubleshoot software issues, and collaborate with designers and developers to maximize user experience. Computer programmers also optimize software efficiency.
How many hours does a computer programmer work a day?
Computer programmers typically work eight-hour days in office settings. Self-employed programmers may work fewer hours or more and have the flexibility to choose their hours.
What are the top responsibilities a computer programmer has?
The top responsibilities of computer programmers include writing and testing code, updating software, and finding solutions to issues with computer programs.
Is computer programming stressful?
Computer programming is not stressful in most contexts. Looming deadlines and identifying solutions to complex problems may be especially challenging, leading to job-related stress.
Take the next step toward your future.
Discover programs you’re interested in and take charge of your education.