Learning to Code: Who should Learn it and Why

The practice of computing has become widespread over the last decade. Many people in non-computing disciplines now code using standard programming languages. Learning to code is not solely a curriculum-based effort anymore. Being able to write computer programs is an excellent skill because of many reasons. The article describes some of these benefits.

The article outlines several aspects of learning to code in a programming language when the learner does not explicitly have a computing background. By computing background, I mean a college degree or work experience involving coding in a programming language.

I am writing today for those who are seeking necessary information on what programming is and if learning a programming language is feasible for them.

What is a programming language?

A programming language is a human-understandable computer language to tell a computer what to do. A programmer writes step by step instructions using a programming language to solve a problem. The computer reads the instructions, executes them, and hence solves a problem. In practice, a computer is not smart. It cannot solve a problem unless someone writes a program instructing the computer on how to solve the problem.

I am not sure why people say that their phones are smart. You can call a phone smart, but calling a phone smart will not make it intelligent really. Your smartphone is as useless as a handle-less hammer unless someone puts all the programs inside it. Those men and women who wrote the software codes are the actual smart people involved in the process of smartphone manufacturing.

What does the term “coding skill” mean?

People call the skill of programming a coding skill. Some examples of sentences involving the concept of programming are: “Coding the solution of this problem will be easy.” “I will use Java programming language to solve this problem.” “My coding skill using Java has become rusty.” “I code using Python programming language.” “I am learning to code in Java.”

There are a few other kinds of coding. For example, coding in the medical field involves codes of medicine, diagnosis, and billing. In aviation, sometimes coding refers to communication codes exchanged between an airplane and a control tower. In this article and computer science, coding refers to writing a program using a computer programming language to solve a specific problem.

Why may (or, should) someone, without a computing background, learn a programming language?

There are many benefits to learning a programming language. Some of the benefits are listed below.

Being able to solve a problem

The most important benefit of learning a programming language is gaining the ability to solve problems using a computer. Now, the question of whether everyone has a problem that can be solved using a computer can be a part of another discussion, a little bit of which I cover later in this post.

Some companies value additional skills

Many companies value a person with a programming skill in a position which does not require that skill. Such a person is an asset to the company because she/he can oversee the company’s computing needs and communicate with the vendors that customize software tools for that company.

An employee with programming skills can lead short-term computing projects

In small and medium-size companies, people with programming expertise can lead computing projects for which the company hires programmers temporarily.

Choice of career path involving learning to code

Maybe you are an educator or an engineer or a social scientist or a biologist. With programming expertise, you will have a flexible career path. The flexibility includes the development of side projects, switching to a job where a mixture of expertise is valued, and enhancing expertise for a current position to secure the job in case the industry becomes more technology and automation-oriented.

Earning by solving problems for clients

People with coding skills can earn by completing computing projects provided by clients. Two websites that are built to connect coders who seek short term jobs and clients who search for coders to solve their computing projects are freelancer.com and upwork.com. Coders can bid for jobs and earn money by completing clients’ projects.

Who should learn to code?

While I am an advocate of Computing for All, I will not argue that everyone needs programming skill. The most common answer to the question of whether one should learn to code is — it depends. The next question is, it depends on what? The answer is, it depends on the computing needs of that person or the company that the person works for or the plans the person has for the future. In general, learning a programming language becomes essential when there is a computing need for which there is no specific standard software.

I explain below a few aspects of who need not learn to code and who may consider spending time to acquire programming skill.

In a small business

Someone working in the accounts department of a small company may not need to learn to program if Microsoft Excel is enough for the work of that company. Many companies even have accounting software, which is great for serving the computational needs of the company.

If you own a small business

With a small business, outsourcing tasks like software development or website development might not be affordable. Being able to develop software or a website will save money.

If you know a programming language and you do not have the time to write software or build a website of your company, the minimum benefit of your programming knowledge is that you will be able to understand if outsourcing is worth the expense.

In medium-sized or large buinesses

With a booming business, the computational needs of a medium-sized or large company may change dynamically. The company may prefer programming expertise in some of the employees to accommodate its changing computational needs. These highly qualified employees will be able to perform quick analysis, even in the absence of standard software, through their coding skills. Programming skills will give a person some extra mileage in the job.

In jobs involving analytics

With the growth of data-intensive problems, many jobs nowadays involve analytics to aid decision making. While there are many software tools available to target data analytic problems, the job becomes a lot easier if the analyst can quickly write a program to retrieve some information that traditional software tools cannot.

Being a researcher in the Data Science area has allowed me to speak with people from the Government sectors, industries, and of course the academia. I know that many are not happy with the current capabilities of the available analytic tools. A primary reason for this dissatisfaction is that the analytic needs change quite frequently in all the sectors. An analyst may consider learning to code in a programming language to reduce the dependency on existing software tools.

What is the take-home message regarding learning to code?

If you thought about learning to code at least once then probably you need it. One thing I must mention is that you will not be able to learn your first programming language in a day, or a week, or even in a month. Well, you might be able to learn it in a month or so if you give your full effort but gaining the actual “skill” requires way more than a month. Isn’t this true for any skill? Yes, it is. That is the reason why you will need to spend “ten thousand hours” on coding before you call yourself a “skilled” coder or programmer. Please do not take the phrase “ten thousand hours” literally. It is widely used to stress the importance of hard work in skill development. All I am trying to say is that one needs patience and hard work to become a skilled programmer.

Misconceptions About Computer Science, Computing, and Programming

There seem to be widespread misconceptions about Computer Science. A common one is — only Computer Scientists can perform Computing. Of course, they can. It is their job. They eat computers (metaphorically), they dream about computers, and they live on computers. As a result, Computer Scientists are good at designing and building computing tools efficiently. That does not mean that people of other disciplines cannot perform computing or develop computing tools. Many people in non-computing subjects are excellent at developing computing tools. By computing tools, I refer to software tools to ease computing needs.

Some common misconceptions regarding Computer Science and in general, Computing are listed below.

  1. You have to be super good at math to learn Computing,
  2. Only engineers and scientists can learn programming,
  3. You will earn a six-figure salary if you know programming,
  4. Computer Science is a complicated discipline,
  5. Computing is for men, and
  6. People develop games after studying Computer Science.

The article describes each of these misconceptions.

Misconception 1: You have to be super good at math to learn Computing

If you want to learn Computing, you will need to ask yourself why you would like to learn it. The “super-good at math” part kicks in only when someone does complex coding of mathematical problems. Take a look at first-year undergraduate students in Computer Science. Do you think that they are super-good at math? Many of them are, and many of them aren’t.

Notice that even the best freshman Computer Science undergraduate student has no more exposure to math than a high school graduate. Computer Science undergraduate students learn advanced math during their bachelor’s studies. You might be surprised to know that most of the advanced maths kick in after they get exposed to a programming language. Therefore, being super-good at math is not a massive requirement to start learning computing.

We need a little math enthusiasm passion to learn computing.

Misconception 2: You cannot learn a programming language if you are not in a science or an engineering discipline

There is a common misconception that only people with engineering or science background can learn programming languages. It is completely incorrect. One can be in Liberal Arts, Education, Business, or in Nursing, yet learn and be good at programming language. There are no restrictions on learning a programming language. Prerequisites in learning a programming language are minimal.

You might ask, how learning a programming language would benefit someone in the field of Liberal Arts, Education, Business, or Nursing? It is an excellent question. Learning a programming language will probably not be beneficial unless you feel from your heart that you need to program. Generally, people feel the necessity of learning a programming language when they need to solve a problem that they cannot solve using off-the-shelf software tools. If you already have software tools that you are applying for your work and if you think that they are excellent and efficient enough, then you do not need to go for programming languages yet.

Many people, who are not in the Computer Science discipline, prefer to learn a programming language as a skill so that they can develop software tools whenever they need to solve a problem for which no standard software is available. Also, programming skill gives some extra mileage in many professions.

You can learn programming computing problem-solving regardless of your background.

Misconception 3: You can earn a six-figure salary if you know a programming language

It might be heartbreaking to learn that knowing a programming language does not instantly make you someone who can draw a six-figure salary. At least one of my cousins in high-school thought so. I do not have any knowledge of how he got that idea. It is not the programming language that makes you a skilled person; it is the problem-solving skill that makes you a six-figure salary person.

Allow me to elaborate more. Suppose I learn how to make a piece of furniture by becoming an apprentice of a famous carpenter. It takes me six months to learn carpentry. Now, I have the skill, and I am out in the wild. My knowledge of carpentry will not make me even a penny if I cannot make excellent pieces of furniture. If I learned it as a hobby, I am quite satisfied with making a few pieces of home furniture. However, if I want to earn money with the skill I learned,  I will have to take my expertise to the next level in such a way that the pieces I come up with can compete with the products other carpenters make.

Programming language skill is similar to the example of my carpentry skill. One can learn a programming language in a few months or even in a month, but if you want to make software development a profession, you will need to master problem-solving using your programming skill. People hire you with the expectation that you will provide a solution to them using your expertise, which is problem-solving using software.

If you want to use programming to develop tools for yourself or your own business, then you do not have to worry much about client satisfaction. You can keep updating the software that you are building over time. You do not have to pay programmers a fortune to develop software for you. On the way, you keep mastering the problem-solving skill. Earning a six-figure salary by becoming a professional software developer is not always the goal.

The reality is: programming is a tool. problem-solving is the actual skill.

Misconception 4: Computer Science is a complicated discipline

Each discipline has its complexity. Some subjects are well-understood by a group of people while topics outside of those subjects might feel hieroglyphics to that group. Many of my friends during their bachelor’s studies told me that if they were in any other discipline, they probably would have quit college.

Computer Science clicks well to some and might not click that well to others. It does not necessarily mean that Computer Science is a complicated discipline. In my career as a Computer Science faculty member, I meet many students to whom programming is a piece of cake. These students write programs as smoothly as they speak with people. On the other hand, many students struggle in the beginning. I am sure instructors of every academic department find students who are great at the subject matter as well as students who do not perform that well. Therefore, doing great and doing not so great is a common trend of any discipline.

I guess, all I am trying to say is — Computer Science is not a complicated discipline. In another sense, it is as complicated as any other discipline.

Computing is as complex easy as other disciplines.

Misconception 5: Computing is for Men

It is a well-discussed topic. :-) How come one subject be for men, and another be for women? Sorry to say this — the United States is quite behind in the STEM (Science, Technology, Engineering, and Mathematics) disciplines in the sense that the academia is struggling a lot in attracting female students in STEM.

Attracting women who are interested in STEM to Computer Science is more complicated than other STEM disciplines. Many misconceptions — such as only nerds study computer science; you have to be excellent in math to do well in Computer Science; programmers work in cubicles and do not socialize — have kept many women away from computing in the recent years. If you seek the truth, you will find the female programmers who created the modern tech. Computer Science is a fascinating example of how a discipline initiated by women turned into a massively male-dominated one. Trends come back over time. Hopefully, pretty soon, both women and men will work as equals without associating Computing with a gender.

By the way, my wife is a Computer Scientist. She has a Bachelor’s, a Master’s, and a Ph.D. degree in Computer Science. I, too, have those degrees, but we are not talking about men in this section. Therefore, please ignore my degrees. :-) I guess, what I am trying to say is simple — those who think Computer Science is for men are fools. Sorry for using the “f” word. It was a necessity to shatter some misconceptions.

Computing is for women. men. all.

Misconception 6: I can develop games if I study Computer Science

Yeah. You can build anything — a piano software, or guitar software. Can you help your mom by writing software to cook for her? Yes, you can. You can program a robot to do that. Unfortunately, robots still do not have enough controllable limbs. Have patience and wait another decade.

Can you develop games? Why on earth do you prefer to make games after studying Computer Science or learning to program while you can do so much more? You can write software to save household energy by automatically controlling electronic devices. You can build smartphone apps to help elderly people shop or help visually impaired individuals reach a destination by providing instructions via their cellphones.

If you still have the question in mind whether you will be able to develop games after learning to program, probably you are a teenager. If you are not a teenager, then I have only one suggestion for you. Pleases, grow up. :-)

Written By Dr. Mahmud Shahriar Hossain