How to get from rookie to pseudo master

Source: Internet
Author: User
Tags linux http server

How to grow from rookie programmer to (pseudo) master

Directory

Display

1.Summary

Recently some of my graduating colleagues asked me, "Do you have any tips when you work?" How to become a master quickly? ”

When I think of the new recruits and training, I also discussed the question with other colleagues: how can we become the industry Daniel? At that time I just feel that interest is the best teacher, thinking method or not much to think about.

The time to join the architecture Department of the microblogging platform is not short, taking advantage of the Spring Festival summary of their work since the beginning of the micro-bo, from the Internet development of the half layman, to now be able to design some architecture, troubleshooting some problems, share some experience, harvest a lot, feel a lot, but also gradually realize the importance of ideas and methods, Here to share with you. Mainly divides into the study, does, wants three aspects.

2.Learn to learn

Learning is undoubtedly one of the most important qualities of programmers, especially the Internet, the ever-changing industry, the more than half of learning as a job.

2.1.Autonomous learning

Recently found around the people do not want to learn, but every day in the struggle to learn what is good: simple without challenges, complex to see, old technology is afraid of outdated, new technology has no direction ...

Talk about their own experience after graduation, after graduating to a moderate-sized company, the work is mainly to do some XX management system and other things, no challenges, also use no technology, basically the front end with a extjs behind a SQL Server to solve. Work stable for a few years, in addition to wow no other things to do in spare time, feel so idle is not the way, so after a year of time, with work to feel fish and work rest time learned these things:

    • Idle bored want to do a small game, found that the game related books are mostly English, do not understand, a bite of the real-time rending 3rd "of the first few chapters, just beginning to understand, can only a word a word of the dictionary, a sentence to ponder a few hours in the end what the author said in the end what the meaning. After translating hundreds of pages of English books, I found that there were no obstacles in reading English books, so I began to use the time of rest and fish to read every day.

    • After reading the game engine's book, the Code of the Irrlicht engine was looked over, then a 3d rendered scene manager was set up and a simple rendering engine was found.

    • To own the game engine wrote a script-based language interpreter, for this look at a lot of compiling principles and virtual machine book, understand the program is what things, this is I think the benefit of a very big thing.

    • Look at the compilation principle of the book when the knowledge of the operating system is somewhat deficient, and to see the Linux kernel-related books. Then bought a development board every day to modify the kernel to play, after graduation once again understand the kernel CPU scheduling, memory management and file system, understand how the application is running on the operating system, operating system is how to run on the hardware, which is also a big benefit of the thing.

    • Read the operating system and look at the network-related books, and then put LIGHTHTTPD code to read it, with C wrote a Linux HTTP server, several network programming models to realize it again.

    • Implementation of the process of the HTTP server feel that their coding ability or lack, the code to go through the whole, followed by the design pattern of the book, and with their own understanding of each model with the text re-described again.

    • In the middle also read a lot of language and framework related books, not listed. can refer to here.

I divide the direction of study into three categories:

    1. To work, to meet the current work of the necessary knowledge

    2. Knowledge related to current work (depth) in order to improve

    3. Broaden your horizons and knowledge that is irrelevant to your current job (breadth)

Learning (1) then just a skilled worker, 2 and 3 is the way to improve themselves, along with the improvement of knowledge reserves, contact with new things easier to find similar knowledge to compare, speed up understanding, but also easier to grasp the essence. If every day in the tangled "What to learn", then can only explain or learn too little. (There is really nothing to learn, Daniel should not read here ...) )

So, if you think that there is nothing to learn, then you can consider learning more depth of knowledge (such as virtual machine or compiler), or completely different knowledge (new language or the current direction of fire), or even completely irrelevant knowledge (simply practicing English reading, learning ppt layout, etc.). With the increase of knowledge reserves, their own shortcomings and the direction of future learning will be more clear up.

2.2.Learning from History

Taking micro-Bo as an example, the development of micro-BO has experienced many twists and turns, and gradually derived the current system architecture. The question that many new people like to ask is, "What do you do on the line now?" ”

It's a good question, but it's not good enough. In the programmer's world there are few "silver bullets" that can solve all the problems, and the current practice will not be replaced for long, if you want to know one thing, then pay more attention to "how does it turn out to be today"? Learn to use the vision of development to see the problem, to understand some experienced lessons, harvest will be more than simply learn a thing more.

So, how to learn from history?

    • The company's internal database, wiki and other large metropolis have old-fashioned information, just into the job is mostly not too busy, these databases are not enough to dig the treasure

    • Sharing within the department, such as when I was in the first time to listen to the "Weibo XXXX architecture Evolution process" and other internal sharing

    • Ask yourself, "Why isn't it so designed?"

    • The old staff Yikusitian blow the time more flattering a few words _ (: З"∠) _

2.3.Learn from others

There are two extremes here,

    • Some people like their own to do, nothing to ask, this is necessarily unfavorable to their own improvement;

    • Also some people encounter problems on the question, this also has a problem, wasting others time not to say, more crucial is that this person to others learning ideas wrong, to learn others is not a specific knowledge (to learn the knowledge of reading can solve), but to learn other people's way of thinking.

But the way of thinking is hard to learn through communication, and then I find a simple way to learn: a mantra. For a few examples, let's take a look at:

"This is actually two questions."
"There's no better plan."
"Can you give me an example?"
"Can you give a summary of a sentence?"

In addition to the mantra, many cows will have a very bright way of thinking and work principles, if fortunate to work with the industry's Daniel, then congratulate you, as long as more exchanges, more observation, more thinking, then the speed of ascension will increase several orders of magnitude.

3.Do more meaningful things.

Some people waste every day on things that have nothing to do with the problem itself, such as when I want to design the architecture and also consider how to draw the architecture diagram, write the code will be repeatedly deployed to test several rounds to pass, check the bug when the time wasted on the sweep log. People's energy is always limited, waste time on these things, so that their time to improve is less.

3.1.Practice, more practice.

Here's a myth: "Doing something meaningful" doesn't mean "just do what you haven't done".

For programmers, writing code is the basic skills of the basic skills, coding norms, design tradeoffs, and even handy IDE shortcut keys are on weekdays trial and error and accumulation, it is difficult to pass a few books or a few days of training to understand.

Have seen some people write code a year later began to do some small project design, and then can't wait to focus all transferred to the design and even architecture, this lack of basic ability to support the design and architecture can only be regarded as high-level, most of them did not wait for the landing on the abandoned, meaning little. The reason, most of the design out of the things "bad" or "bad use", like only read the textbook to take the high number of exams, reality? (Genius I was wrong ... )

For example, a few years ago in the process of looking at the design pattern, using QT to do a look at the comic book application, the mode can be used to try again, of course, there are a lot of inappropriate places, it is these inappropriate places let me on the object-oriented programming and design mode of thinking deeply, how to weigh flexibility and complexity has a new understanding Later in the design of a lot of systems, the time to take a lot of detours, not only to ensure that the time point and ensure the quality. If I was expecting to say "when to use it," it would have been a project pit.

3.2.Use tools

Tools can solve the problem with tools to solve, good tools can save a lot of time spent on more meaningful things.

Tools are widely available, such as Linux commands, such as various systems within a team, such as handy apps, and even bicycles for commuting. As long as you can save time and improve efficiency, it is worth a try.

Here I cite a few things that have greatly improved my efficiency:

    • Dual screen display

    • Handy keyboard

    • Google (not baidu! Not bing!. )

    • Mac

    • Apps on Mac: Idea, Alfread, OmniFocus, even synergy and istats menus are not as likely to develop as they are.

I prefer to use tools as a way of life: whether I want to focus my life on meaningful things. If you agree with this point of view, then think about the investment and the ratio of return is very substantial.

(Of course, the great God who cracked the application for no money ...) )

3.3.Increase the utilization of time

Time is the most valuable resource for all those who expect to improve themselves, the efficiency is high, no time to do it is meaningless.

There's a pretty broad picture on the Web: The cost of disturbing programmers. In fact, my daily work time is very fragmented, after coming to the company may continue to answer the phone, asked questions, was pulled to a meeting, reply to the mail and so on, often have time is not enough or nothing to do confusion, here to share the experience:

    • GTD can integrate many fragments of time. In addition to finishing things, it is helpful to focus the context-related things together. For example, a few things you want to do in other offices to integrate into a trip to complete.

    • Reduce meaningless waste of time, such as staying on the edge of the company can save a few hours a day to learn or do other things. (But if the time saved is used to brush Weibo, it's not necessary.) )

      • Another very interesting phenomenon: a software registration fee of 10 a few knives, more expensive hundreds of knives, the daily use of all the tools to add up the cost of all the top not a kidney 6 expensive, but many people still adhere to the concept of not cracked, for hundreds of dollars wasted a lot of time.

    • Overtime can create a lot of time and can effectively reduce the chance of being disturbed, but it also brings a great burden to the body and mind. So what you do overtime must be able to generate enough income for personal progress. If overtime is only used to deal with meaningless work, it should be a matter of daily work.

    • Things can be divided into urgent important, urgent unimportant, important not urgent, not important not urgent four categories, in the Todo list at any time to have important not urgent things.

4.Learn to think 4.1.Bottom

When there is no problem can not be solved, many people will have fear or procrastination mood, the typical mantra is "just so do with it" or "first of all, there is time to study again", said these words are mostly not really so busy, and even some people brush the micro-bo side with me said no time to study ... (Are you kidding me?) )

To overcome fear emotions is actually very simple, find a specific indefinitely problem, think of ways to study the problem clearly, experience several times to solve the problem of happiness, build confidence.

Most of the problems in fact there is no advanced scientific principles, and even as long as a few pages to solve the problem, but encountered problems do not delve into, over time will form a self-suggestion: These problems are I understand, those are I do not understand, but their own progress on the road to plugging.

When it comes to how to drill down, there are several tips:

    • Think about why, and ask again and again why. A lot of seemingly understandable problems after a while to think about, often will find before there is no consideration of the place

    • There's a definite answer to the question, philosophy or something.

    • Choose authoritative books or websites when looking for information to avoid being misled

    • Talk to someone, or just pull in a small partner, you can communicate with each other and supervise each other.

    • Share your results

    • Don't go into everything, you'll put too much pressure on yourself.

4.2.Say more, write more, communicate more

There is a feeling in the ordinary work, the communication and writing habits of the people will be more clear ideas, can be exposed to more ideas. This aspect actually belongs to my weakness, probably summarizes several viewpoints.

    • It is best to summarize your recent work in writing, for example, by writing a sentiment, or by continually updating your resume.

    • There are two difficulties in writing: Summing up and abstracting the things to be explained, forming the main line of unity of opinion and clear conditioning, and taking things into account from each other's perspective, and avoiding talking to yourself.

    • Find someone to discuss before you have a basic complete idea, otherwise most of the time will be spent on the interpretation of the principle of the Internet and so on the faster things.

    • After the discussion, there is a sentence to explain the white conclusion and describe the clear point in time.

    • Some people like to struggle with "This is not my problem, why I deal with" such things. It seems to me to be a good opportunity. Not only can the growth of knowledge, but also to show the level of a serious and responsible for a good reputation, why not.

5.At last

Finally, I would like to share my understanding of the self-cultivation of programmers, in my opinion, can be summed up as: responsible, re-reputation.

Responsible, say more specific: Write the code themselves have not measured, do the framework of their own have been used, the design of the architecture itself has not seriously weighed.

Reputation, say directly: There is no measured code, no use of the framework, no trade-offs of the plan has no face delivered to others.

Share with you.


How to get from rookie to pseudo master

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.