A very useful programming story

Source: Internet
Author: User
Tags ruby on rails thoughtbot macbook

English Original: A cautionary Tale of learning to Code

This is a true story about my own. How does an individual with a rational life go to Madness step-by-step?

I was wearing a suit and sitting in my office, and I had a vague idea of entrepreneurship in my head. Then I decided to learn programming. I've overheard a few people bragging about how to use a language called Ruby to easily automate their work. I thought, "Uh, Ruby." I came home to Google Ruby. After 15 seconds, I randomly selected a Ruby tutorial and started learning.

A week later, I took part in the first hacking party in my life. Everyone in the audience is talking about what scala,clojure,go. I think they've learned a lot. Turning around I borrowed three O ' Reilly books, each reading about 50 pages.

What the? You asked me why I didn't finish reading a book completely? That's not because every book is easy to understand at the beginning, and then you start making assumptions, assuming that you have the knowledge, assuming you're using that tool, but I'm not all that good?

A friend of mine told me that I should learn Emacs and gave me his profile. It took me a few more hours to learn the basic LISP syntax so that I could set up my own configuration file.

Then a man passed by me and saw that I was using Emacs and asked, "Why are you still using emacs (with your own brain), do you not know that Vim is better?" I thought, "Oh, vim," so I started reciting vim stacks of keyboard shortcuts.

Engineers often discuss such a topic, which is strong in a text editor? And engineers regard this as a religious war-the criteria for judging are not objective rules, but historical differences.

At the time, I thought that the faster I typed, the faster I could program. So I abandoned the traditional keyboard layout and used the programmer's Dvorak keyboard layout (like this). Objectively speaking, this is one of the most efficient keyboard layouts for programmers.

Looking at the above keyboard layout, can you tell me how many letter keys, number keys, special character key position has not changed? The answer is single digit.

When I was able to start Linux successfully and I could knock out 10 words in a minute, I began to learn Python through reading and Udacity courses.

After seven months of hard work, I got my first job as a software engineer.

When the CTO interviewed me, I told him all the tools I had learned and the tall profiles I was using. The CTO listened to me politely and nodded from time to time. After I bragged about my profound knowledge, he looked at me and said, "in fact, most things have a lot of solutions, but only a very small part of it is meaningful".

Four years ago, my company decided to use Ruby on Rails to build their products. For the choice of language, all the engineers have no idea, and now, many of their original code is still working. All engineers use MacBook because the MacBook is not only reliable, but very similar to the Ubuntu Linux server they use in the product. The engineers here are not good at Vim and Emacs, the text editor used by everyone is rubymine, which is a powerful integrated development environment, the default configuration is very useful. Each of the engineers here uses exactly the same tools, meaning that everyone can pick their own seats and then immediately start pairing programming with the left or right colleagues without having to tangle with the configuration of the development environment. Using the exact same configuration can greatly place a collaboration between two developers.

Although I don't have Ruby on Rails, the company thinks I can do the job. Because I would Python and Django and win the Hackathon race, the company thinks it can explain the problem.

The first few Cho are hard, and the difficulty comes not only from me coming to a new team, using a new language, a new framework and a new codebase, but because I find that people around me are learning to program in a self-abusing manner.

I sat alone in the library and the café for a few months, and every day was blind. Install various tools through the command line, debug Linux drivers, solve some minor problems, such as parentheses mismatch. I went to every conceivable online course and reported countless MOOC courses. I don't think I actually learned anything until I went to fifth place in a month's assessment. The experience gives me the impression that programming is a battle that you can never win. I began to understand that the programmers who looked normal were actually so gloomy in their past, that they had gone through too much and repressed too long, and had to say that learning programming was an anti-social job.

The first weekend of my last job, I uploaded this selfie. I got up early in the day, wore a decent suit, and wore a suit to remind myself that I was going to learn programming. Facebook's slogan, "My new office--on the table." I Live 8 to 6 nights a day and rest only when I have to rest. " In life, I learned to talk to programmers and think like them, and now I'm used to the word.

My colleagues almost never encountered grammatical errors because their Ides solved the problem for them. And when they encounter an error message, if they don't solve the problem within a few minutes, they send an instant message to other colleagues asking for help. They would jump to someone else's table and start pairing programming. The programmers here are not too self-styled or proud to be elites. Nor do they think that programming is a painful thing. Some are just constructive conversations between adult friends.

The tools used by members of a team are highly consistent. In Passion Project and hackathon, developers may use the new JavaScript framework, such as Angular.js. In a real team, members focus on using existing technology to improve their products. From this point of view, they are conservative.

In Thoughtbot you will also see a similar situation in which everyone insists on using a small and efficient toolset (Rails,vim,postgres and Redis) in Thoughtbot. Because the toolset is small, engineers are easy to become experts in the field, and because everyone uses the same toolset, it's easy to interoperate with each other.

So the real question is, if an efficient team is the most effective at using a small, fixed toolset, isn't it best for people to use a small, fixed set of tools when learning to program. Those online programming courses and programming training camps are obviously thinking the same way.

But as an individual, there are so many tools to choose from, it's really hard to decide what to do. I know that because I've been there. A good programmer's skill set can be expressed in a T-shape--There are many fields, but there are few areas that are really good at it. However, after a few accumulated time, the T-shape will slowly become the next line.

I met a lot of people learning programming, come up to learn everything, everything, in the end, they all failed, give up their dream of becoming a programmer. I don't want this to happen to you, either.

  You need to focus on more aspects

Without further ado, here are some of the big mistakes beginners can make:

    • From this language to that language, and from that frame to the frame, or cheat yourself to be proficient in all languages or frameworks
    • Use niche tools to build your own development environment instead of choosing traditional, trustworthy tools.
    • Learning tools like Docker and famo.us simply because they are novel, though the more basic techniques are not yet mastered.

If I had to summarize my proposal in one word, I would say: focus.

I ask you, will you use the word focus to describe your programming learning plan? If you think your plan is focused, well, you can stop reading now and go back to your plan to start learning because I don't want to say anything that could lead to your loss of focus.

If you still have a plan that is not focused, then you are blessed-do as I say and you can focus, but it will take you a few minutes to make some tough decisions. Wait, you guys, don't go!

OK, you're not leaving yet. Here are the tough decisions you need to make.

    1. Select a software type that can be a WEB application, a mobile app, a game, or an embedded. I recommend the Web App because it's flexible enough. There are many resources to learn, and there are countless opportunities to work. If your point of interest is not on the Web app, turn off this page and enter "Getting Started in ___ development" in the Google search box to see the results of the return.
    2. Select a programming language: Javascript,ruby or Python. Each language has its own strengths, and there are relative tools for building Web apps (node.js,rails or Django, respectively). Unless you know exactly which language you should learn, I recommend that you learn JavaScript because it is the most widely used.
    3. Select an online course. Here are some options for you to choose: if you are interested in JavaScript, go to freecodecamp.com or  nodeschool.io , if you are interested in Ruby, go to Theodinproject.com teamtreehouse.com  If you are interested in Python, go to Udacity.com  to find it. Believe in the wisdom of the teachers who design these courses, complete the course in the order suggested, and don't jump.
    4. buy a new/old MacBook, or install Ubuntu Linux on your current PC. For other tools you may need, follow the online course recommendations to install them.

Once you make these decisions, the rest of the way is too simple. Just stay awake and don't be fooled by the new tools around you. Seven days a week, learn a little online lesson every day, even if only half an hour at a time. Trust the decision you made today. Finally, remember: As long as you have the patience, any capable person can become the peerless coder, of course also includes you.

http://news.cnblogs.com/n/509554/

A very useful programming story (turn)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.