Is software work difficult?

A student wrote to me: “It is easy for you to say software is a good field of study that can get you good job but learning programming is difficult and most people who work in software told me that the job is hard and many quit after few years. Please comment.”

Answer: No one says software is easy. No one says learning programming is easy. No one says college education is easy because you must put your effort in anything that you do. If you want to have a good job, make a lot of money but do not want to work hard or put in any effort than you must be dreaming. Please wake up and face the reality.

You must understand that software is just a field of study, no different than other fields such as business, math, hardware, or even literature. To study you must put in the effort to gain the knowledge and skills. Computer program is no different than learning a foreign language just like learning English or French that means you must practice to gain the knowledge and skills. Programming language is written in a methodical and logical way just like grammars in a foreign language. If you want to learn computer programming, you must start with the basics by learning the syntax and the rules and write few simple programs to master these fundamentals before advancing in more complex routines. Many students often do not learn these rules but learn tricks and short cuts just to write programs that run. That is why they are facing difficulty when they have to deal with larger or more complex programs. You cannot learn programming by reading books; you cannot learn to write code by learn some shortcuts or tricks. You must practice it every day from simple instructions to more complex algorithms.

I believe people who do not do well in programming because they do not learn the fundamentals but hurry in writing something quickly via some tricks and shortcuts. It is possible that they may not even go to school and receive proper instructions by a qualified instructor. Without proper instructions, without proper methods and without following certain rules, they often failed after few years. You must understand that computers only do what you tell them to. If you give them wrong instructions, then they have bugs. The best way to learn how to program is “Practice, practice and practice” by thinking logically and following a sequence of steps called software process. As you learn how to do more, you will find that programming is NOT that difficulty as what others say. If you are willing to put in the efforts and learning all the basics then you will enjoy programming just like you enjoy music or videogames. Please remember that there is no substitute for practice as you must do it diligently.

My advice is to find a good university’s program and put in your efforts to learn as much as you can. Software is NOT just programming as many students think but much more. Programming language is the foundation; just like the house must have strong foundation but it must also have walls, roofs, doors and windows etc. The same thing also applies to software as it has many aspects such as requirements, architecture, designs, and many applications. You should select program that allow you to work in team so you learn about teamwork as most software works are done in teams. Some schools have “Special projects” or “Capstone” where you do it in a team. This is as close to “real-world” project as you could get in the school environment and it is valuable. You need to participate in a summer internship programs in a “real” companies so you may gain working experience too. Try to do more programming and create some projects for friends so you can practice your skills. Write code in your spare time. Help out a friend by create a website, or make up something useful for yourself. You will learn more by doing real projects, even on your own, than you ever will from a book.

Many people often said that to learn computer, you must be good with mathematics. It is true; programming is nothing but pure logic so it is math. From this view, computer is all about logic; everything it does is the manipulation of numbers. All it knows is zero and one, and everything else builds on that. Programming fundamentally relies on basic algebra and logic more than any other form of mathematics. However, if you go to college you must know basic algebra as you learn about it in elementary school so it is not as difficult as some of your friends may explain so do not let them persuade you to do anything else. Do not let the word “mathematics” scare you.

When you get hired as an entry level programmer or tester you will work with developers who may have few years of experiences more than you. Someone may ask you to help them find and fix some bugs in their programs. Depending on the company, you will probably spend six months to two years to read code and find bugs before moving into software development. It is really depending on what skills you have that you can advance to the next position. Most people spend time in testing then to developing then to technical lead and project manager. The career of software people is wide open with many positions and variety of areas to choose. As long as you are willing to put in efforts and continue to learn new things, you will do well. You said that many software people complained that software job was hard and often quit after few years, I believe that those are the exception because most of my students told me that they enjoy software works very much. In the past twenty five years of teaching, I rarely heard of anyone who is quitting computer works.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University