So, are you looking to become a computer programmer? Do you understand the skills you need to become a computer programmer?
A computer programmer also known as a coder or developer is someone who delivers creative and innovative software solutions to customers whether it is on a computer, a mobile device, a website, or a gas pump. A computer programmer delivers software on all kinds of devices in many different contexts. Contexts are medical, retail, construction, military, and others.
Learning to be a computer programmer is more than just learning about the profession. It is about becoming an active participant in the community of programmers. Learning is about doing. Learning computer programming is all about building your skills through doing (writing computer programs targeted at different devices).
In this article, we will explore the skills needed to learn to become a computer programmer.
My Programming Background
I learned how to program on a TI99/4A in the 1980s. That was the first computer that I owned. I learned how to use basic but I did not learn to program until I was in high school when we were taught programming on a PDP/11. Digital Equipment corporated donated a PDP/11 to my high school. Their headquarters at the time was right down the street. Before we learned how to code, we used a program called Karel the Robot. That taught me the foundations of coding. We were not allowed to move on until we learned all the mechanics of programming, data structures, and control structures. Once we did that, we move on to programming on the PDP/11.
I knew how to program but I really did not understand the foundational aspects of how programs work until I got to college. I consider a class in computer architecture one of the most important classes I took. Also, I took a Unix class in college and I still remember all the commands I learned in that class and it over 30 years ago. Understanding machine code, assembly language, and higher-level languages after that served me well. I learned Fortran, Pascal, and C in college. I also learned Unix. Windows did not come into the picture until after I graduated from college.
Once you have mastered the mechanics of one language you can transfer that over to other languages. I am able to learn new programming languages within a few days now. Being able to do that takes time and experience.
When I reflect back on how I learned how to program, I break it down into knowledge, skills, and experience. The more you understand the foundational aspects of computers in all their forms today the better off you will be down the road. I am very big on understanding the foundational knowledge needed to be a good programmer.
To be a successful programmer today, you must learn and master automation and also AI/Machine learning skills. Those skills are at a higher level beyond this article but to get there you need to start with the foundation.
I am a big proponent of learning hardware (computer architecture – how the microprocessor interacts with the graphics processor and how bits flow on a motherboard. You need to understand RAM, expansion slots, etc. If you know the basics, you will find it easier to troubleshoot issues.
Operating Systems are a must today. You must learn how the hardware interacts with the kernel and how the kernel interacts with the software you write.
Networking and cybersecurity are foundational concepts in how the software works on the network. Everything is interconnected today so you need to understand how a network works and how clients and servers talk to each other on a network. Software architecture is an important aspect of learning to code. Also, to be a successful coder, you must learn to write secure code. Cybersecurity from a coding perspective is extremely important since all vulnerabilities that hackers exploits are software bugs that need to be avoided.
I was in an advisory board meeting I believe was in 1996 and that was the first time I heard the word soft skills. Employers were complaining that our graduates lack the ability to communicate and collaborate with others. Communication is both written and oral communication skills. Collaboration is about working on teams as a follower and/or leader when called upon. Right out of college, I was asked to lead a small team. Let me tell you that I had a lot to learn since I never learned that in school except indirectly through project work.
At the very basic minimum, you need to have a strong understanding of algebra, geometry, and statistics to be successful. Some will argue that calculus is needed but I disagree with that notion. I have never used calculus in my day-to-day programming work.
So, you need to know several programming languages today. I will provide a list such as:
- C# or Java
There are others and it depends on the employer you are working for. You need to know both front-end and back-end development. You need to know how to create user interfaces and how to do server-side development such as PHP, nodeJS as two examples.
You need to understand the concepts of data and control structures in each language. Understanding Object-Oriented programming concepts along with structured concepts is good.
Once you have mastered a few languages, it is easy to move to another language because you will know what questions to ask when you are learning a new programming language.
As you are learning how to program, you need to understand the context of how an organization develops software. Knowing the waterfall software development lifecycle along with agile methodologies such as peer programming and SCRUM are important. You will be working in within those structures on the job as you are coding. Also, you need to know the Dev/Ops process and how to function in that type of environment.
Tools & Technologies
Like all good software developers, you need to know the different tools used such as an integrated development environment (IDE), GitHub, software test automation, etc. Software configuration management via GitHub is a good process to understand since most software projects use some sort of configuration management today. As you are learning to code, these tools and technologies are usually taught as part of learning the programming language.
Problem Solving/Troubleshooting Skills
Most computer programmers spent a significant amount of time problem solving and troubleshooting code. You need to become a master in troubleshooting code to squash software bugs. As part of learning a programming language, you will learn how to solve problems and troubleshoot code. There is an art and science to troubleshooting but you cannot be a good programmer without these two basic skills.
In this article, we touched the surface of what is needed to become a computer programmer today. Programming is easier but also more complex than ever. The tools used to make your job easier but the types of programming tasks are not necessarily easy to do.
If you have any questions, please feel free to leave me a comment below. I appreciate your time.