How to be a good programmer: A beginner’s guide

Becoming skilled at anything requires determination and perseverance. Gaining expertise in programming is no different. I teach around one hundred students every year at the University of Texas at El Paso. I generally teach Programming, Data Science/Mining, and Algorithms courses. Based on what I have seen over the past years as a faculty member and a researcher is those who work hard and use an organized way of learning become skilled quickly. 

Some tips for beginners on how to become a good programmer are as follows.  

  1. Decide which programming language you should learn first.
  2. Build a list of related resources. 
  3. Study slow but get back to programming every day.
  4. Give a structure to your study.
  5. Solve middle and high school math problems using programming.
  6. Test yourself.
  7. Learn problem-solving; do not memorize codes.
  8. Do not stop right when the code works; think about critical inputs.
  9. Write programs to solve the same problem multiple times.
  10. Work on projects that you own.
  11. Figure out essentials after you learn your first programming language.
  12. Read programs written by others.
  13. Ask questions.

The tips are for all who are planning to or have started to self-learn a programming language. Additionally, they are for those who have enrolled in a formal programming course lately.

We made the following video explaining the tips in details.

How to become a good programmer

Each of the tips is explained further in the sections below.

Tip# 1: Decide which programming language you should learn first.

It is a tough question to answer, given that every person is different. While Python is a popular choice, Java might be a better option if time and schedule of the learner permit. Learning Java programming language would result in mastering some theoretical concepts that would help the learner self-study any programming language later. 

In another article, we explain how someone can choose what programming language to learn first based on several different aspects. The post is linked here: What programming language should I learn first?

Tip# 2: Build a list of related resources.

When you plan to study anything, you need to make sure that you have enough resources that will help you learn. Most of the time, the primary resource is a book. In learning to code, there are many other resources.

Books

Reading a programming book is not exactly like reading a traditional book. When you are reading a programming book, you will need to practice every example immediately. In summary, reading books is not enough to develop a skill. Write the examples provided in the book on a computer. Compile the codes and run the programs to understand the concepts clearly. 

Youtube

Nowadays, you have the opportunity to learn the same topic from many different people. YouTube is a great resource where you will find lectures given by experts. After reading a chapter from the book and practicing the topic, one can watch some YouTube videos on the topic. It is like preparing before a lecture at school. A student learns better if she/he goes over the subject before a lecture.

Free courses

You might search for YouTube channels that focus on the programming language of your interest. Some websites may even run free classes. With the free courses, you will generally watch video lectures, read some study materials, and also there can be some exercise problems.

We are currently running a Free Java Course, where there are video lectures, articles to support the videos, and many of the posts have exercise questions. If you are a beginner, and if you are planning to learn Java, you can check out our Free course here: Free Java Course

Subscribe to receive notifications of new videos and articles.
Subscribe to our YouTube Channel to receive notifications when we post YouTube videos:


Tip# 3: Study slow but get back to programming every day

Programming is a skill that one should master slowly. The fact is, no one can learn to program overnight. Learning a programming language can be fast when you already know another programming language. 

As a beginner, one should take learning to program more like a habit than rushing to become a master. Trying to rush will only create frustration. 

A few tips regarding learning the first programming language are as follows. 

  1. Put aside some time of each day for study and practice. 
  2. Span your learning of the first programming language over several months. I believe learning the first programming language well can take anywhere from three months to six months, depending on the amount of time one can afford.
  3. Trying to write code fast does not help in gaining programming skills. Although programming might seem “fast typing” based on how movies would put them, the reality is that a great programmer can be an overly slow typist. I should disclose at this point that I type slow and look at me – I teach programming courses. :) 

Tip# 4: Give a structure to your study

Bring some organization to your study if you plan to learn to program all by yourself. Some examples of bringing structure to the effort of learning to program are as follows.

1. How many hours in a day should one study? 

When you are learning anything seriously, you will need to get back to it regularly. Creating a daily schedule is half the work done. Consider no less than two hours per day on average when you are learning your first programming language. The more time you will allow, the better you will learn. It is not hard to learn the first programming language in three months.

2. How does your weekly schedule look in terms of getting back to programming frequently? 

Decide on the time of the day or night when you will learn and practice programming, depending on your weekly schedule. In some days, you might keep two or three hours. On some days, you might devote only 30 minutes to an hour to practice programming. It all depends on your weekly schedule. Make sure that you have a plan and a weekly routine.

3. How will you remember the essential items that you learned? 

A journal to write down crucial clues of what you have learned from the book or a YouTube video helps a lot later. Revising the journal from time to time reminds a learner about the items covered earlier.

4. How will you organize your digital study materials? 

Keep an organized folder in the computer for study materials, practice questions, and exercise codes. Name the subfolders and file names in a way that would help you find any item quickly later. If you use multiple devices, use a syncing service like Dropbox, Google Drive, or OneDrive to sync the folder to all your computers.

5. How will you sequence topics? 

A course helps organize learning, primarily because generally the course-schedule follows a proper sequence of topics. Sequencing topics of a subject that you do not know yet is a difficult task. Some YouTube channels that cover the computer language of your interest might be useful as a guideline for topics. Books also list chapters one after another to help learners follow a sequence.

Tip# 5: Solve middle and high school math problems.

One way to improve your programming skills, in the beginning, is to write programs to solve some middle and high school math problems. Examples are, add all the integers between 1 to 20; compute the factorial of 10; or calculate the greatest common factor of 12 and 18. 

Not that you will need to use middle or high school math to solve real-world problems when you are a programmer. Solving math problems will help you develop programming skills, in general.

Tip# 6: Test yourself

Becoming a self-taught programmer is not impossible. One tip to improve is to test yourself. There are several ways one can self-challenge when self-learning, some of which are as follows.

1. Solve problems from the book

Each programming book contains relevant programming problems at the end of each chapter. The problems are designed to test your learning. Write programs to solve some of those problems.

2. Find programming problems from the internet

If you search on Google with the keyword “programming problems,” you will get an abundant number of problems. Not all programming problems are suitable for a learner’s level. The learner needs to figure out which problem is ideal for her/his level of expertise.

Many professors, who teach programming languages, keep assignments and exam questions on their websites. You can search for such websites and download the assignment descriptions for practice.

3. Solve problems on online platforms

There are some resources online, where a programmer can write code to solve problems, submit the code, and the code will be checked automatically for correctness. Such an online system is a great way to master problem-solving using programming. One such site is HackerRank. I would recommend this site for those who have become familiar with at least one computer programming language. 

Tip# 7: Learn problem-solving, not syntax

Studying a programming language does not necessarily mean reading books and memorizing syntax. You will have to learn to program by writing programs to solve problems.

Also, learning one programming language might not be enough because the most popular computer language this year might become obsolete within a few years. A good programmer masters the art of problem-solving using a computer language. Even if she/he switches to another language in a few years, the problem-solving part remains as familiar as before. 

The syntax from one language to another may vary, but the logic of solving a problem does not change. Therefore, when you are learning a programming language, focus more on the problem-solving aspect, rather than trying to memorize the syntax.

Tip# 8: Do not stop right when the code works – think about critical inputs

A common mistake that I observe among many beginners is – they assume their program is complete when they see that it works for a particular user-input. A program someone has written hurriedly may have many bugs. Bugs generally appear in a program from unconsidered scenarios. 

Careless coding may result in a simple bug as a division error. That is, the programmer checks that the program is dividing one number by another, such as 5 divided by 2, correctly. Now, the user enters other numbers for a division, such as 10 divided by 0. A zero in the denominator will result in an error, and the program will crash.

For large software projects, mistakes can be as big as opening a backdoor, making the system vulnerable to attacks. However, if you are a beginner, you probably do not have to worry much about opening a backdoor for attackers. You will still need to analyze your code for different inputs critically, to make sure that the program responds well for all ranges of data. 

Tip# 9: Write solutions to the same problem multiple times

Writing the solution to the same problem twice or thrice is a good practice as a beginner. The target is not memorizing the code. It is instead honing problem-solving skills. 

Let’s say you wrote a program today. Try to write the code to solve the same problem tomorrow. You will definitely have a deeper understanding of the problem. Who knows … you might even discover that you had missed a bug or two on the first day.

Tip# 10: Work on projects that you own

One way to master a programming language after learning the basics is to work on a project. Come up with programming projects relevant to your life. Some example projects can be software to keep track of your expenditure, a program to track calories consumed in a week, and scheduling software.

One can keep improving a programming project over time and keep learning. Once the confidence grows, one can seek freelance work as a professional developer. An example of a website where one can bid for freelance jobs is freelancer.com.

Tip# 11: Essentials after you learn your first programming language

After gaining expertise in a programming language, an ideal thing to do would be to study data structures and algorithms.

Data structures help you store data in the main memory of a computer efficiently. Retrieval of information from the main memory is also an issue for programs that deal with a massive amount of data. Data structure is the study where one can learn how to store and retrieve data efficiently to solve a problem.

An algorithm is a set of instructions to solve a problem. A course on Algorithms describes different families of widely used algorithms, which one can leverage to solve practical problems. 

If you consider a programming language a tool, then data structures and algorithms are the techniques that you use to solve a problem. You can change the tool, that is the language, but the techniques will remain the same.

I say that the study of algorithms is more like studying tricks that you will implement using a programming language. 

Tip# 12: Read codes written by others

Reading codes written by others is beneficial in improving programming skills. You will be surprised to find how different people would write a program to solve the same problem in different ways. When you read codes written by others, you are practically reading the logical sequence that another person created to solve a problem. Being able to understand that logical sequence helps develop a programmer’s skill.

Tip# 13: Join forums and ask questions

When someone is learning a programming language, whether self-taught or in a course, it is necessary to ask questions. If you are self-learning, join Facebook groups that help beginners. Do not hesitate to ask any questions. Before you ask the question to a forum or a group, please make sure to check if there is any direct answer already available on Google. 

However, if you have any questions, you can, without any hesitation, ask the question here below in the Comments section. You DO NOT have to search on Google to check if your question already has an answer. We will be happy to reply. 

Concluding remarks

Programming is a skill. Like any other skill, one needs to hone it to gain expertise. Please keep learning and do not give up. It is a general statement for anyone trying to achieve anything, not only the programming skills. I wish you all the success. Thank you!

Pelase subscribe to receive notifications of new videos and articles.
Subscribe to our YouTube Channel to receive notifications when we post YouTube videos:

What programming language should I learn first?

When someone goes to a college to study Computer Science, she/he does not have to worry much about what programming languages to learn because the degree plan already contains an outline of almost all the required courses. Today, we are going to answer the question of which programming language one should learn if she/he does not have a Computer Science background. We are writing this article for anyone who will probably not go for a formal degree in computing (like Computer Science, Bioinformatics).

Although it is difficult to answer what computer language one should learn without knowing the specific objectives, we can mention that Python has become quite popular as a first language because one can master it quickly and develop applications that serve a wide variety of purposes. If someone can manage the time, we would recommend learning Java or C++ first because after learning Java or C++, one can learn Python or any other language pretty quickly. This article describes in detail which computer language to choose as the first programming language and how to choose it.

There is a common misconception that only people from Computer Science can learn programming. The fact is, many early Computer Science professors were physicists and mathematicians. Programming is advancing and becoming more and more high-level (human-interpretable) day by day. As a result, the concept that programming is only for nerds is changing. 🤓 Learning to program has become common in business and scientific sectors. We still have miles to go in shattering all the misconceptions and seeing programming as a general skill though.

What programming language should I learn first?

We have an excellent answer for you, but before we give you a superb answer, we will provide a brief explanation. The short answer to the question, “what programming language should I learn first” is “it depends.” We are sure the next question is, “it depends on what?” It depends on your computing needs, your current expertise level, and the learning resources that are available to you.

Let us move to the great answer to the question of what programming language to learn the first time, which is an elaborate version of “it depends.” As mentioned before, it depends on your particular situation. The following subsections explain several cases and the programming language(s) suitable for each case.

If you are going to learn your first programming language by yourself

If you are going to learn your first programming language all by yourself, our suggestion is, go with Python. The reason why we are suggesting Python is that it hides a lot of complexity of a regular programming language. You will be able to see the result as you run each line, which is not the case for regular programming languages like Java or C++.

On a similar spirit, we would suggest Matlab if you have access to it. Matlab is not free. Most universities purchase Matlab subscriptions for faculty, staffs, and students. Unless you get it as a part of your job facilities, we suggest you avoid it because it is an expensive piece of software. Matlab is mathematics-oriented and requires an understanding of vector and matrix operations. You can safely ignore Matlab unless your projects specifically need complex mathematical operations.

If you are going to spend money on your first programming course

Let us assume that you can find a mentor. The mentor could be someone or some organization offering courses on Java, C++, and Python. Let us also assume that you are willing to spend some money to enroll in a class. In this particular situation, we would suggest you learn Java.

If you are wondering why we are recommending Java as your first course, you have the perfect question in mind. Java is more generalized than C++. When you use Java, the programs you write using a Windows computer run fine on Mac and Linux systems. As a result, Java reduces the complexity of learning a programming language a lot.

Then, why not Python? Python is a great language. Researchers in our labs prefer Python over Java because Python programs are shorter in length, hence quicker to code. Note that we are not talking about what is a better programming language; instead, we are discussing what language one should learn first. After you learn Java, you will have a basic understanding of a standard programming language. As a result, learning Python and C++ by yourself will be just a matter of time.

In summary, if you are going to pay to learn a programming language, go for Java. You will be able to learn more programming languages yourself after you have a good grasp on Java.

If you are in college now

If you are in college now and if you are in a discipline other than Computer Science, you can go for an early stage Computer Science course. Most undergraduate programs in the US universities allow at least one free elective course as a part of the undergraduate degree program. A free elective course is any three-credit course from any discipline regardless of your major.

We are providing three ideas involving which course(s) to go for below.

Idea 1: CS1

If you are interested in programming, enroll in the first core programming course offered by the Computer Science Department at your university. The first core programming course is commonly called CS1 (short for Computer Science One). Our guess is, the course will teach either Java or C/C++. Whatever the language is, you will learn all the basics, which will help you if you want to continue the practice of programming.

If you are confused about whether you will be able to do well in CS1 or not, you can speak with the professor who is serving as the Undergraduate Program Director in the Computer Science Department. When you talk to the Undergraduate Program Director, mention that you want to do your free elective in Computer Science. The program director will be able to suggest the right course for you. If you are not comfortable with going for CS1, the Program Director will probably recommend going for CS0, which we explain below.

Idea 2: CS0

Some Computer Science departments in the country offer an elementary-course (not CS1), which is suitable for learning some basics of Computer Science. This course is sometimes called Computational Thinking. It is commonly called CS0 (Computer Science Zero.) The undergraduate Computer Science program does not require students to take CS0. That is, CS0 is not a mandatory course for Computer Science students.

A Computer Science Department generally designs the CS0 course with content from problem-solving and programming. The course also contains the history of Computer Science and how computers work. CS0 is a great early stage course that counts toward any undergraduate program as a free elective. If you are not in Computer Science and if you would like to know about programming without diving too much into the details, we think, CS0 is an excellent course for you.

Idea 3: Minor in Computer Science

If you are in any discipline that does not require exposure to programming languages and if you are super-eager to include Computer Science expertise in your list of skills, a minor in Computer Science is probably right for you. When you do a minor in Computer Science, you make sure to complete three or four Computer Science courses that the Computer Science Department of your university has listed as required for a minor in CS.

Please make sure to speak with the Computer Science Undergraduate Program Director if you have any question. Different Computer Science Departments have different requirements for a minor. We would suggest not to delay the graduation more than a semester for a minor. If at all possible, we suggest you go for summer courses to make sure you graduate on time.

If you are an early-stage college student, you can plan well right now to go for a minor in Computer Science. One good thing is that at least one of the additional courses will count as a free elective in your major program. One caveat is, if one of the Computer Science courses required for the minor has a non-computer Science prerequisite, you might have to complete that prerequisite first. 

If you plan for a Computer Science minor, plan for it early because usually, you will not be able to enroll in more than one Computer Science course in a semester for your CS minor. The required Computer Science courses for a CS minor generally spread throughout three to four semesters because some courses are prerequisites of others.

Why learning to code is becoming popular

Inclusion of coding in high and middle schools is becoming popular. Even some elementary schools expose their students to coding to some extent. We believe every college graduate will have some level of programming skill by the end of the coming decade. It is great to think that the future generation will have the programming skill as the nation and the world need. A sad part of the transition is that industries adopting new technology always create pressure on the previous generation.

One example of such pressure is the automation of car manufacturing that led to the unemployment of many workers. Soon, self-driving trucks will lead to the unemployment of many drivers. The younger generation will probably learn to become remote operators of automated robots in manufacturing or self-driving vehicles on interstates.

Similar to the issues of automation, think about the new generations who will have programming skills regardless of their majors. There is a chance that corporate personnel, accountants, and office managers produced form the new generation will replace the earlier workforce in many sectors, especially in Business. This is one of the reasons to keep oneself up-to-date with the current technology in his/her line of work.

What is the difference between programming and web development

We have one more item to clarify. What is the difference between programming and web development? We need to discuss this because many people, including freshman Computer Science students, confuse programming with web development.

Programming refers to writing programs using a computer language. Examples of programs are MS Word, Notepad, or the Game software you have on your desktop or laptop computer. On a phone, the calculator app and the Google Maps app, are two examples of programs. Programmers/coders develop programs using a programming language. Some popular programming languages are Java, C/C++, and Python.

Web development refers to developing websites. Web development does not require extensive programming. However, programming skill is a plus in web development. A web developer may or may not have programming skills. An example of web development is how we built this particular website computing4all.com. For web development, web developers use a markup language like HyperText Markup Language (HTML). HTML contains a pre-defined semantics that, when placed on the server, browsers can read and render. HTML is a way to tell the browser how to display the content. For example, how can we make some text bold and some italic?

In this article, we talked about programming using a computer language. We are NOT discussing web development languages.

What else should a beginner know about programming

Programming is an excellent skill to achieve and master. We believe that anyone can learn to code and gain programming skill. Programming is a great tool to address one’s computational needs. That said, one cannot master the skill without passion and hard work. Be prepared to go through the frustration when you are learning to code. No one learns the first programming language without obstacles. Have patience and face the challenges. Practice makes women and men perfect in programming. 🤓

Written by Dr. Monika Akbar and Dr. Mahmud Shahriar Hossain