A useful programming story and Value-Oriented Programming story
Abstract: One online course is learned every day seven days a week. Even if you have only one and a half hours at a time, you can feel that the decision you made today is correct. Remember: as long as you have patience, anyone who can do this can become a coder, and of course you can.
A Cautionary Tale of Learning to Code
This is a real story about myself. How is a rational individual going crazy step by step?
I sat in my office in a suit and had a vague entrepreneurial idea in my mind. Then I decided to learn programming. I once accidentally heard a few people brag about how they use a Ruby language to easily implement automatic office. I want to "Oh, Ruby ". Back home, Google Ruby. 15 seconds later, I randomly selected a Ruby tutorial to start learning.
A week later, I attended my first hacker gathering in my life. Everyone is discussing Scala, Clojure, and Go. I think they have learned a lot. I borrowed three o'reilly books and read about 50 pages each.
What? Why didn't I finish reading a book? That's not because every book is easy to understand at the beginning, and then starts to make assumptions. If you have this knowledge, I suppose you will use that tool, but I will not be able to do this?
One of my friends told me that I should learn Emacs and gave me his configuration file. I spent several hours learning basic Lisp syntax so that I could set the configuration file myself.
Then I walked by and saw that I was using Emacs. Then I asked, "Why are you still using Emacs? Do you know Vim is better ?" I thought "Oh, Vim", so I began to recite Vim's many keyboard shortcuts.
Engineers often discuss this topic. Which text editor is strong? In addition, engineers regard this as a religious war. The criteria of judgment lies not in objective principles, but in historical differences.
At that time, I thought that the faster I typed, the faster I programmed. So I abandoned the traditional keyboard layout and used the necessary Dvorak keyboard layout for programmers (just like below ). Objectively speaking, this is the most efficient keyboard layout for programmers.
Looking at the keyboard layout above, can you tell me how many keys, numbers, and special character keys have not changed? The answer is the single digit.
When I was able to start Linux successfully, I began to learn Python through reading books and Udacity courses when I was able to break ten words in a minute.
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 configuration files I was using. CTO politely listened to me and nodded from time to time. After I boasted my profound knowledge, he gave me a glance and said, "In fact, there are many solutions to most of the issues, but only a very small part of it makes sense ".
Four years ago, my company decided to use Ruby on Rails to build their products. All engineers have no opinion on the language selection. Now, many of their original code is still working. All engineers use MacBook because it is not only reliable, but also similar to the Ubuntu Linux server they use in their products. The engineers here do not discuss Vim and Emacs which are strong. The text editor used by everyone is RubyMine. This is a powerful integrated development environment and the default configuration is very useful. The tools used by each engineer here are exactly the same, meaning that everyone can select their seats and immediately start programming with colleagues on the left or right, you do not need to worry about the configuration of the development environment. Using identical configurations can greatly facilitate cooperation between two developers.
Although I don't know Ruby on Rails, the company thinks I can do the job well. Because I will use Python and Django and win the hackathon competition, the company thinks this can be explained.
The first few weeks were really tough. Not only did I come to a new team and use a new language, framework, and code library, it is because I found that people around me are learning programming with a self-abuse attitude.
I have been sitting in the library and cafe for a few months. Every day, I am blindly installing various tools through the command line to debug the Linux driver and solve some minor issues, such as mismatched brackets. I got involved in every online course that I could think of and offered countless MOOC courses. I think I did not actually learn anything until I got to the fifth place in a certain month's assessment. These experiences give me the impression that programming is a battle that you will never win. I began to understand that programmers who seem to be normal are actually so gloomy in the past. They have been through too much and have been depressed for too long. I have to say that learning programming is simply an anti-social task.
I uploaded this selfie when I quit my previous job for the first weekend. I got up early that day and wore a decent suit to remind myself that I am a programmer. Facebook's slogan "my new office-on the dining table. I live a life of 8 to 6 every day. I only have to rest when I have ". In my life, I learned to talk to programmers and think like them. Now, I am used to this word.
My colleagues have almost never encountered syntax errors because their IDE solves this problem for them. When they encounter an error message that cannot solve the problem within a few minutes, they will send an instant message to other colleagues and ask for help from others. They will jump to others' tables at will and start Pair programming. Programmers here will not be too self-conscious or arrogant as elites. They do not think programming is a pain point. Some are only constructive conversations between adult friends.
The tools used by members of a team are highly consistent. In the Passion Project and hackathon, developers may use new JavaScript frameworks, such as Angular. js. In a real team, members focus on using existing technologies to improve their products. From this perspective, they are conservative.
In ThoughtBot, You can see similar situations. In ThoughtBot, everyone insists on using a small and efficient tool set (Rails, Vim, Postgres, and Redis ). Because the tool set is small, engineers are easy to become experts in this field. Because everyone uses the same tool set, it is easy to interoperate with each other.
So the real problem is that if an efficient team is most efficient when using a small and fixed tool set, so is it best for people to use a small and fixed tool set when learning programming. The online programming courses and programming training camps clearly think so.
But as an individual, there are so many tools to choose from, it is really difficult to decide what to choose. I know this because I have experienced it. A good programmer's skill set can be represented by a T-shaped representation-there are many fields involved, but there are not many areas that really are good. However, after years and months of accumulation, the T-shape will gradually become an underscore.
I have met many programmers who want to learn everything and everything. In the end, they fail and give up their dream of becoming a programmer. I don't want this to happen to you.
You need to focus on more aspects
The following are some major mistakes that beginners may make:
From this language to that language, from that framework to this framework, or cheat yourself to be proficient in all languages or frameworks
Use niche tools to build your own development environment, rather than traditional and reliable tools.
Learning tools like Docker and Famo. us is just because they are novel, even though they are not mastered by more basic technologies.
If you have to use one word to summarize my suggestions, I will say: focus.
I ask you, will you use the word "Focus" to describe your programming learning plan? If you think your plan is focused enough, well, you can stop reading now and go back to your plan to start learning, because I don't want to say anything that may lead to your loss of focus.
If your plans are not focused enough, you are also blessed. You can also focus on what I said, but it takes you several minutes to make a few difficult decisions. Wait, don't go!
Okay, you are not leaving yet. The following are the difficult decisions you need to make.
Select a software type, which can be Web application, mobile application, game, or embedded. I recommend web applications because they are flexible enough. There are also many learning resources and countless job opportunities. If your interest is not on the web application, close this page and enter "getting started in _____ development" in the Google search box to view the returned results.
Select a programming language: JavaScript, Ruby or Python. Each language has its own strengths and has its own tools (Node. js, Rails, or Django) used to build web applications ). Unless you know exactly which language you should learn, I recommend that you learn JavaScript because it is the most widely used language.
Select an online course. Here are some options for you to choose: if you are interested in JavaScript, go to FreeCodeCamp.com or NodeSchool. i/O. If you are interested in Ruby, go to TheOdinProject.com or TeamTreehouse.com. If you are interested in Python, go to Udacity.com. I believe that the wisdom of the teachers who design these courses should be completed in the recommended order.
Buy a new/old MacBook or install Ubuntu Linux on your current computer. For other tools you may need, install them as recommended for online courses.
Once you make these decisions, the rest is too simple. You just need to stay awake and never be confused by the new tools around you. Seven days a week, learn some online courses every day, even if one time is only half an hour. I believe in your decision today. Finally, please remember: as long as you have patience, anyone who can do this can become a coder, and of course you are also included.
This article is organized and published by anthropomorphic www.zaojuzi.com.