Want to become an excellent programmer? These few suggestions are dedicated to you when you are young

In a blink of an eye, I have been working for 8 years. Two days ago, a colleague who was new to the company asked me to give me some suggestions and experiences. I think this topic is very valuable. I write this article based on my personal thoughts and experiences, hoping to give some inspiration to young developers.
I have worked for three companies, NVIDIA, Slide and Glow. Two of them are well-known large companies. Slide I joined Ethiopia Sugar after the D round. At that time, there were about 150 people.
Glow has been from the first day it was founded until now. My personal responsibilities also range from Developer, Tech Lead, Engineering Manager to CTO. These experiences have given me a more comprehensive understanding of the personal growth path of programmers.
If you ask a young front-end developer, how can you improve your capabilities in the next 3 years? He may say, “I am familiar with the Web front-end now, but I want to have a deeper understanding of AngularJS. In addition, React is developing very fast now and I also want to take a look. After that, I will spend time learning iOS and Android development.” It’s going well, but it lacks a systematic purpose. It may be said that he planned what to learn, but he did not think carefully about why he should learn it.
In the field of technology, there are too many things that will expire quickly. How to use limited time to maximize your long-term benefits? I can give a few suggestions here.
Build your toolbox
If a worker wants to do his job well, he must first sharpen his tools. Every developer should have his or her own Swiss Army Knife. These tools can save you valuable time in the long future of your personal work lifeEthiopia Sugar, and help you better organize your personal knowledge base. Give two examples:
A set of efficient development of the surrounding environment, an information collector and a notebook
Efficient development of the surrounding environment
We can start from the main editor, here is IDE vs Text Editor , there is Vim vs Emacs, there is Sublime vs Atom, so how to choose? Before making a choice, let’s think about our Ethiopians Sugardaddy goals. We hope that this is a long-term investment and that this writing tool can be used for a long time. Through continuous polishing, it can fully suit your own habits and maximize the efficiency of writing. If the programmer is a knight, the main writing tool is the sword in his hand.
Although I am a heavy user of Vim, I feel that when I chose VimSometimes there is a need for consideration. If I were to choose again, my first choice would be Emacs, and my second choice would be Atom. Emacs has been around for 30 years, the community is still vibrant, and its extensibility is unrivaled among major editors. Emacs’ scripting language elisp is also a dialect of lisp. I think learning lisp can improve programmers’ understanding of core programming ideas. Another plus point is that Emacs is developed by Ethiopians Escort. Due to its own high threshold and lisp characteristics, Emacs has attracted a large number of high-quality programmers. Its community can be described as hiding dragons and crouching tigers, and it has even given birth to god-level plug-ins like Org-mode. Looking back at Vim, the essence of Vim lies in Mode editing, which is worth learning and can greatly improve the author of this article Ethiopians Sugardaddy Potency.
But after you become familiar with this concept, I think you can switch to other main writers, because Vim’s architecture and Vimscript limit its scalability. EET Escortsmacs fully supports Mode editing through the Evil plug-in. Other mainstream editors also have similar plug-ins, so once you Once you master this concept, it can also be used in other editors. Some people may say that no Vim emulator can achieve 100% of the performance of Vim, but the point is not whether a certain instruction can be transplanted, but whether the essence of mode editing thinking can be transplanted. I think the answer is yes.
Looking at Atom vs Sublime, Atom is very scalable, and most of its core functions are also implemented in the form of plug-ins, which is similar to Emacs. And its open source characteristics make me believe that it has longer lasting vitality than Sublime.
About IDE, my opinion is that I do not exclude IDE, but each IDE serves a specific task or programming language. As an aspiring programmer, you can use an IDE, but you still need to be proficient in a powerful general-purpose main writing tool.
Similar to the main author, efficiently develop the surrounding Ethiopia Sugar Daddy status also includes Shell, Launcher,Window manager, document browser, etc. Some of them only require you to spend a small amount of time to complete the configuration, and their return on investment is very high.
Information collector and notebook
The former is used to collect information that happens to others, while the latter is used to collect information that happens to oneself. A simple example of the former is the browser’s Ethiopians EscortBookmark. You need to be able to archive a useful set of information at any time and find it quickly at some point in the future. The most intuitive example of the latter is the notebook that comes with Mac OS or iOS. The purpose here is to record your own thoughts anytime and anywhere. In essence, you need to have a set of useful tools for your knowledge management (knowledge management), which can also be said to be an internal backup of your knowledge and ideas. I currently use Evernote to collect information and take notes at the same time. If you have a good process, you can use two tools to do these two things well. But I suggest that you spend enough time thinking about how to organize your personal knowledge base.
The above are just two typical examples. What you need to do is to find those tasks that you want to do for a long time (which often do not change with technology or with the company), and adjust the tools needed to complete these tasks to Optimal. As another example, I pay attention to the keyboards used by the programmers around me. Only a small number of programmers will buy high-end electrostatic capacitive keyboards, such as HHKB. In my opinion, this is obviously a very worthwhile investment. Programmers need to deal with the keyboard most of the time at work, Ethiopia Sugar DaddyA comfortable typing experience is very rewarding, not to mention that this high-quality keyboard is very durable.
Broaden your vision and build your technical system
First of all, you have to set a goal for yourself, just like a company would set its Vision.
The goal should be big enough so that you can see more scenery. The goal should be set on which type of problem to solve, rather than which type of skill to master. Techniques are just techniques, not goals.
For example, the goal “I want to become an expert in iOS developer” is far less meaningful than “I want to become an expert in front-end application development”. If you learn more about the former, you may delve into all kinds of tricks in the iOS framework, while in the latter you will start to follow the visual and interactive aspectsEthiopia Sugar Daddyesign, studies the differences and common trends between platforms. Obviously, the latter is more conducive to your personal growth.
But even with understanding The purpose of choosing which type of technology to learn and how to learn is still a problem in today’s information overload. The common view is that the latest technology should be learned because the old ones are outdated, while the opposing view is that the new ones are new. The technology is not yet mature. My personal point of view is that when entering a field now, choose the mainstream technology framework; when you have certain experience, you should pay more attention to the promoters behind it when choosing technology. I believe in excellent people and The team can always build excellent products, whether it is a commercial company or an open source community. Don’t worry too much about the newness of the technology, because what you really want to learn is the ideas behind the technology. Many languages ​​​​and open source projects will write their coding philosophy, which is very interesting. You can read it from their source code Ethiopians Sugardaddy To verify these programming concepts. Taking Python as an example, if you execute import this, you will see its concept, and then For example, Celery, a well-known open source library in Python, has a special section in its documentation to describe its programming concepts. The impact will be more profound than these techniques themselves. This is my advice to beginners. For the same reason, I highly recommend reading the source code of some excellent open source libraries or languages, such as PythoEthiopians Sugardaddyn’s standard library is mostly implemented in Python and is very readable. If learning a technology only stays at the level of use, You haven’t fully absorbed the essence of it, and the benefits of learning will disappear as the technology becomes obsolete.
My other learning principle is, ET Escorts When choosing to learn a new technology, maximize the difference between it and your existing knowledge base. It may be difficult to read, for example, if you know Django, next you should learn Ruby on Rails Still NodeJS? According to Ethiopia SugarFor this principle, you should learn NodeJS, because its asynchronous IO model is conceptually the same as Django’s Ethiopians Sugardaddy The step-by-step model is very different, and RoR is more similar to Django. But a better choice is not to learn another Web framework, but to learn ZeroMQ or Redis , these two are also very helpful for Web development, so as to maximize the difference. From the perspective of building a programmer’s technical concept, I would recommend that each program at least understand Lisp or a Functional programming language. Regardless of whether you will use it in the foreseeable future, they allow you to look at programming from a different perspective.
Finally, I proposed that every programmer should run a product of his own, which can be an app. A website or an open source software. Unless you are an early employee of a startup company, you may not have the opportunity to put all the skills or concepts you have learned into practice. There are many people who want to become a full-stack engineer. The fastest The shortcut is to create a product of their own. Any designer will specially create his or her own portfolio, but most programmers will not.
When evaluating a programmer’s coding ability, I will look at it. Are there any outstanding projects on Github? Unfortunately, most programmers in the country have nothing on Github, maybe only some very simple programs. I suggest that you manage your projects on Github well. This will not only improve your reputation, but also improve your reputation. It will also be very helpful for your future job hunting. When you complain about being asked all kinds of nonsensical procedural questions during job interviews, have you ever thought that the interviewer is also helpless because he has no other way?Ethiopia Sugar Find out what your coding ability is. If every programmer has his own work, I think the programmer’s interview will be much easier.
Pay attention to the cultivation of communication skills
When asked, “What is the biggest difference between Junior Developer and Senior Developer?”, my most natural reaction is communication and documentation. Communication includes communication within the programmer team. Communication with other teams, communication with Manager, etc. I don’t think I have the ability to explain these issues in a very comprehensive way, but I can give a summary. /”>Ethiopians Sugardaddy’s article suggested that you first learn to communicate with your Manager and let him teach you other departments. Many companies will set up a 1:1 relationship between Manager and team members. An effective 1:1 should be led by team members most of the time. This requires you to spend enough time Ethiopians Sugardaddy before the 1:1 to consider the questions to ask, and Ethiopia Sugar Daddy And it is best to send it to the Manager one day in advance to give him a chance to think about the answer. Many people don’t pay much attention to this, and may only ask very specific questions instead of some open questions, so that it will be difficult for you to learn something from your Manager. If you gradually understand how to use 1:1 time, it will very likely become your highest return on unit time investment in any business. movement.
Accumulate your connections
Everyone knows the importance of connections, but in fact it is not difficult to do it. Dining and participating in some offline meetings or activities can be one of the most direct ways to expand your network. Unfortunately, most people seemed to just attend a technical lecture and then go home. Of course Ethiopians Escort Of course, this is also related to the time setting of many sports. The lecture time is too full, the tea break time is short, and the Sometimes guests are late or fail to manage the time well, so the coffee break is simply cancelled. In fact, getting to know one or two gay people is far more valuable than listening to technical lectures. Next time you go to dinner or attend such a meeting, you might as well set a goal for yourself, such as adding at least two colleagues’ WeChat accounts. In the future, you may need to spend more time maintaining your connections. Have a coffee with your friends after work or on the weekend!
OtherEthiopia Sugar Daddy I think everyone needs a workplace mentor, he can be your first job mentor Or Manager, or other seniors you are familiar with. You need to maintain a very long-term relationship, not limited to one company, and preferably throughout your personal work life. Whenever you encounter confusion, you can ask for his advice. I think this will be your most valuable personal wealth.
Find a platform to display your talents
The last and most important step is to find a company that suits you. as job searchInterviewers can look at three aspects when evaluating a company:
The company’s development prospects (if you are in the company, look at the development prospects of the department you are working in) The salary and benefits of the team you are about to join
So when interviewing a company, you need to understand The interview is a two-way street. While the company is interviewing you, you are also interviewing the company. Before the interview, you should do enough research on the company Ethiopia Sugar and prepare some questions that are relevant and quality, such as referring to the quality of the products. Questions about the development process or how to conduct performance reviews Ethiopians Sugardaddy. At that time, you can also check whether your interviewer is qualified.
Every time you choose a company, you should take into consideration the above three aspects, but the focus will be different at different stages of your career. For example, when you are just working, it is most important to join a good team. They can teach you many things and improve your abilities. After working for 5 years, you need a platform to display your talents, reflect your personal value, and the importance of the company’s development prospects Ethiopia Sugar be promoted quickly . When you make some achievements and prove your own value, you gradually enter the harvest period and you have the criteria for asking the company for the price. On the other hand, team strength also has a great impact on the company’s prospects.
To a classmate who has just graduated and entered the workplace, Ethiopia Sugar Daddy is a question that has been asked countless times in recent years. Should I go to a start-up company or a large company for my first job?” My answer is still “the most important thing is to join a good team.” For some well-known large companies, the quality of the team is guaranteed to a certain extent, but this is not the case for start-up companies. The quality of the team varies, so as I said earlier, you need to interview the team and make your own judgment. However, in addition to team reasons, I would like to mention several advantages for graduates to go to start-up companies.
First of all, during the period just after graduation, the economic pressure is low and it is the period when you are least restrained and can take risks. This period is often not long, so you should seize this prime time to start a startup company. Secondly, after entering the company, all students will assume low-level positions. To a certain extent, it is a continuation of school learning. The standards are structured, but they lack independence and innovation. This is what most Chinese students want. Perfect. Ability in this area can be quickly tempered in a start-up company, but in a large company, you may not have this opportunity until you are promoted to an intermediate position. Personal opinion, for reference only.