• 10 Signs You Will Suck at Programming
  • Originally by Jonathan Bluks
  • The Nuggets translation Project
  • Permanent link to this article: github.com/xitu/gold-m…
  • Translator: xionglong58
  • Proofreader: renyuhuiharrison, yzw7489757

I often meet people on Reddit and Quora who ask, “How do I know if I will be a successful programmer?” (In fact, this post is actually an extension of an answer I gave on Quora.) Programming problems inevitably arise when people are considering a career change or are interested in software development and are curious about what it entails.

I think this is a major obstacle for people without any formal computer training. It’s natural to think that if you’re not good at programming, then you can’t be successful. It’s a bit like wanting to be an actor and wondering if you’re good at acting.

As a Web full-stack development instructor, I’ve taught a lot of “beginner programmers.” The good news is that I rarely find students who can’t learn programming. I think it is a basic human skill, like reading, writing and arithmetic. Anyone can do it, it’s part of our human capacity, but it does require learning.

In the past two years of teaching, I have seen many students struggle to learn programming, and also found some common problems in their learning process. If you take a look at the list below and relate it to yourself, rest assured that you will get frustrated in the process of programming and should do something about it when you do. However, if you are still committed to your goal of becoming a developer, you can easily face these issues and make changes.

Programming is a basic human skill, just like reading, writing and arithmetic. Anyone can learn programming with time and effort.

The following checklist will help you understand if you’re frustrated with programming and what you can do to change it if you want to.


1 | lack of curiosity

If you lack curiosity about computers and how technology works, you will never succeed as a programmer.

The basic requirement for learning is to take an active interest in what you are learning. If you don’t have a technically curious mind, you won’t have the motivation to keep learning the more comprehensive and in-depth knowledge necessary to be a successful coder.

The world of technology, by contrast, is a vast ocean of interesting fields, interconnected ideas, and possibilities for stimulating the human imagination.

Find your curiosity: Ask yourself if programming really interests you. If your honest answer is no, save yourself time and energy by finding something that interests you. But if your answer is “yes,” then find something new for yourself that you didn’t notice before, realize that there is a vast ocean out there and dive in.

2 | lack of initiative and flexible

If you don’t develop the ability to solve problems on your own, you’ll never be a successful programmer.

There’s no doubt that to be a successful developer, you have to be confident in your ability to learn. It’s actually a basic life skill — if you’re over 18, no one is obligated to teach you anything. That’s the reality. You need to find information on your own and help you understand what’s important to you.

In the developing world, all the information you need can be found in a magical place formerly known as the Information superhighway. This vast library has a huge entry point: Google. When you want to acquire the skills you need in technology, the first hurdle to cross is learning to type whatever you want into Google and get the information you need.

In addition to being a good Googler, all programming languages have documentation and specifications that are very clear about how the language works. It’s like using a dictionary – when you see a word you don’t know, you look it up in the dictionary. As a programmer, the quickest and most reliable way is to read the documentation directly. It’s that simple.

Use resources: Realize that all the answers you need are waiting for you. Always ask yourself to Use Google and consult your documentation before asking someone for answers. This will also save others time when you’ve tried and haven’t found the answer you need.

3 | when faced with a lack of perseverance

If you give up easily when faced with a problem, you will never succeed as a programmer.

The essence of programming is problem solving. That’s the whole reason computers were invented! Every time you start writing a program, you run into a bunch of problems. Once you solve one problem, there may be another problem behind it. You are making progress, but there are always new problems.

Facing a pile of problems can be daunting and frustrating. If you think the program is supposed to “work,” you won’t have the energy to keep going when problems keep popping up, chipping away at your confidence bit by bit. Your job is to figure out exactly why the program isn’t working.

In my experience in the classroom, there are usually one or two students in each class who seem to be better than the other students at spotting the less common, puzzling questions. I remind students that the more problems they face, the more likely they are to learn deeply and thoroughly. If they can gain understanding through these questions, they will soon find that they are more confident, because they face and solve more problems than ordinary students.

Be patient: You need to realize that problems are inevitable, not problems themselves, but actually challenges you. Every challenge you face and overcome gives you a deeper understanding and better response to the new challenges, which quickly solves the old ones.

4 | overcome problems without a sense of achievement

If you don’t feel excited and fulfilled after solving a problem, you’ll never succeed as a programmer.

Related to the previous problem is the lack of “good feeling” once you’ve successfully solved a problem. When fixing bugs and problems becomes a never-ending monotony, you lose the thrill of overcoming problems.

When you overcome a problem, what you need is the release of dopamine. This is similar to completing a level in a video game, or solving a challenge like a crossword puzzle or sudoku. We all know it’s a good feeling to persist through a challenge and then finally win the game. But if you lose the ability to feel those feelings, or never really care about them in the first place, then you won’t experience the joy of programming. If you see programming as a pain and you just want to get results as easily as possible, you’ll never really be a successful programmer.

Celebrate victories: Every time you solve a problem, no matter how small, that you’ve been working on, take pride in your achievement, take a break, and congratulate yourself on a job well done. Let the feeling of success permeate your body and keep you energized for the next problem.

5 | no patience for learning and understanding

If you are impatient to learn and expect to learn everything quickly and easily, you will never succeed in programming.

We humans are not perfect creatures. Even though the world is moving faster and faster, and computers are a big part of that, we can only move as fast as we can. Our brains work at a certain rate and rely on our past, our beliefs, our emotional state, our health… We will learn and integrate information at different speeds.

The world of technology is like a vast ocean. You’ll never come to an end, and you’ll never be a master who has nothing else to learn. If you overburden yourself, you’ll always feel like you’re “playing catch-up” and don’t know enough. If you can’t accept what you know and then learn a little more, you will lose yourself and give up.

Instead, you should enjoy the learning journey. Every bit of knowledge or new skill you acquire should be exciting. Like solving a problem, you need to make yourself proud that you recognize that you’ve taken a step forward, even if it’s a small one.

Acknowledge your progress: There’s a lot to learn, and the programming journey is never over. But knowledge is cumulative, so be proud of what you know and trust that every effort you make in your studies will build a solid knowledge base for your career.

6 | to ponder over a problem get bored or tired

If you are lazy to think, and think of focused thinking as a boring task, you will never succeed in programming.

Programming is a thinking activity. As humans, we are good at thinking, but the truth is, even though we do it unconsciously every day, we are still too lazy to think actively. If you don’t get into the habit of thinking about problems, it’s hard to focus on a problem for a while.

Symptoms of the condition include staring blankly at the screen, feeling like a cloud is hanging over you, procrastinating on questions, switching back and forth between browser tabs, and frantically browsing StackOverflow for “answers.” These are signs that you are mentally limited and need to find a way out.

While programming, you get tired, and thinking is just as exhausting as exercising. It’s hard to concentrate when you’re not used to using the mental strength you need. But it’s like going to the gym, the more you do it, the stronger you get.

Your mind is like a muscle: Believe me, your brain is like a muscle — it becomes better and more efficient in its thinking process when you keep using it. Solutions become much easier when you put the pieces together and apply the spirit.

7 | can’t independent thinking

If you expect others to think for you and are not willing to take a hard look at your own situation, you will never be a truly successful programmer.

When you’re learning something new, it’s easy to feel like you lack the knowledge and experience to back up your ideas. Taking the initiative or doing/saying the wrong thing seems risky.

We have an inherent fear of making mistakes. When the fear of making mistakes stifles your exploration and curiosity, it stifles your ability to acquire real knowledge, knowledge that comes from experience and “failure.” When you have to rely on “guru” opinions, popular bloggers, best practices, or “textbook” answers, then you haven’t really integrated useful knowledge of programming.

You need to form your own opinion about what works and what doesn’t. Understand why you find your solution useful and what its benefits are. It takes a subtle perspective to get beyond the obvious. You need to be able to “defend” your point of view, and in the process, if you change, you can have new points of view.

Do some thinking for yourself: Build your own opinion through your experience and critical thinking skills. Make reasonable guesses, stand firm, and be willing to change as new information becomes available.

8 | rigidity, narrow, confused thinking

It will be hard to keep your code organized through extended organization and centralization if your thinking is rigid, and rigid thinking will never make you successful in programming.

I sometimes see two extremes in students. The first is rigid and narrow thinking. This attitude refuses help, doesn’t care about feedback, doesn’t change, sees things from one point of view and ignores the opinions of others.

The second extreme I see is confusion. The students seemed to complicate things, their code was haphazard and hard to understand. They overthink a problem and write 100 lines of code instead of 10.

When these two ways of thinking are combined, the result is an extremely conservative approach to programming, like a brute force approach that leads to layer upon layer of fixes and “hacks.” What we need is the ability to revisit the solution, reevaluate it, abandon the original approach, and reorganize.

The inability to see other possibilities or receive feedback inhibits the ability to grow and improve. Clutter slows you down, prevents you from seeing things that would otherwise be obvious, and your work deteriorates.

Introspection: You need to step back to see the big picture. How can you do better? Is there anything you can do to make your life easier? What are you missing out on that could help you?

9 | need to “correct” answers, rather than to identify the answer to the “good” and “bad”

If you believe that the ultimate goal of programming is to find the right solution, rather than a series of solutions, then you will never really succeed as a programmer.

When students start learning skills or programming, they often want to know if what they’re doing is “the right thing” and the answer is always “it depends.”

Computer science is the science of evaluating trade-offs. Which way is better under different circumstances? It all depends on the context and the goal. When you think of programming as a test with a right answer or a wrong answer, you lose perspective of the big picture and give up your creativity. Any answer can be “correct,” provided you can prove it based on the circumstances.

The reality is that programming is more like writing a poem or a short story (or a novel if the program is large). There is an aesthetics and beauty to be seen in your code that sometimes only you and a few other programmers can read. The reason for your solution, and the way you frame your answer, is more important than the “right way” or the “wrong way.” Having an artist’s mind allows you to play with options and possibilities, rather than thinking there’s only one way. That’s the beauty of programming. There are many ways to solve a problem, and the tradeoffs of different possibilities make one feel which approach is best for the situation.

Get creative: Recognize that there are many ways to solve a problem, and over time, through experience and analysis, you will know how to discern the best solution, and you will develop a nuanced understanding. Look at the big picture, imagine different possibilities, trust your instincts, and you’ll come up with better solutions that are more satisfying.

10 | do not pay attention to details

If you cover up the details and ignore the little things, you will never become a truly successful programmer.

The computer is an accurate machine. When it comes to computer programming, you need to explicitly provide the necessary commands the way the computer expects them to be provided. If you don’t, nothing will work. There are no compromises — either you can or you can’t.

This means that when you’re programming, you have to pay attention to detail. Consider every space, parenthesis, or semicolon. If it’s wrong, it’s all for nothing. When a computer prints an error message, you must be able to review the message and understand exactly what it is trying to tell you. The truth is, if you miss some detail, you can spend hours looking for a bug when it’s really just a typo.

As they say, the devil is in the details, which is absolutely true when it comes to programming.

Pay attention to detail: Details are important and you have to accept them. Once you pay attention to detail, you can start looking through your code to find any inadequacies. You need to be able to organize your code methodically and use tools to solve problems faster.

Bonus: commercial thinking

This is when I noticed that students who are particularly business-savvy tend to focus on the outcome rather than the process. They want a “working app” that will move their business idea forward, they want to “get to market first”, and they see experience accumulation as an obstacle to their business goals.

In looking back at students who struggled to grow as programmers with help, I found that impatience with the learning process prevented a real understanding of technology. These students tend to see technology as a means to an end, rather than knowledge to truly explore and enjoy.

As a natural extension of this, I’ve found that some students are more business-oriented, struggle academically but are often quick to get freelance clients to sign up for jobs they don’t actually know how to do themselves. They quickly find resources/templates to make the project satisfying to the client or outsource the work to someone else. They’re really bad at programming, but they’re really good at getting people to pay them to program!

So I would add that students who aspire to start their own businesses, who excel in sales, relationships and business development, have a harder time learning programming skills than others. Their innate desire to create ways to make money and connect people to solutions makes them impatient with the tedious details of programming.

conclusion


While programming is a difficult skill to learn, it is certainly something most people can learn. The list above contains some of the attitudes and ways of thinking that hinder learning, but most people can overcome them and develop competence — if not mastery — in the field of programming.

If you’re interested in learning how to program, I encourage you to begin that journey. With this list in mind, there are plenty of resources online that can get you moving fast. Explore them and you won’t regret it.

If you find any mistakes in your translation or other areas that need to be improved, you are welcome to the Nuggets Translation Program to revise and PR your translation, and you can also get the corresponding reward points. The permanent link to this article at the beginning of this article is the MarkDown link to this article on GitHub.


The Nuggets Translation Project is a community that translates quality Internet technical articles from English sharing articles on nuggets. The content covers Android, iOS, front-end, back-end, blockchain, products, design, artificial intelligence and other fields. If you want to see more high-quality translation, please continue to pay attention to the Translation plan of Digging Gold, the official Weibo, Zhihu column.