How to Cultivate into excellent programmers

Source: Internet
Author: User

A couple weeks ago, a presentation made the rounds online about Netflix culture. the presentation featured the specified benefits of working for Netflix and how the company goes about hiring (and firing) employees. while there was a lot of information about Netflix's
Treatment of employees, which clearly makes Netflix an attractive place to work, the missing part is a list of employee expectations. the beginning of the presentation touches upon the company values that point in the direction of expectations but doesn't
Go far enough to lay those out.

In recent weeks, a report reflecting Netflix's corporate culture has been widely circulated on the Internet. This report lists many of Netflix's commendable practices, including how the company recruited and dismissed its employees. There is a lot of information about how Netflix treats its employees, which makes Netflix a very attractive workplace. The report mentions a list of what employees expect, but does not list it. At the beginning of the report, we talked about the enterprise value issue, which was written from the perspective of employees. Unfortunately, we did not discuss this issue.

I don't work at Netflix, of course (I work for Yahoo !), But I feel strongly that what makes a great employee and a great engineer is the same regardless of where you work. There are a few things that great engineers always do.

I am not working at Netflix-you know (I am at Yahoo! Work)-But I deeply feel that no matter where you work, the process of becoming a good employee and a good software development engineer is the same. The following lists the experience and quality of excellent programmers.

Always do it the right way only do the right thing

One of the challenges of software is to learn how to do it the right way. the right way is different depending upon what you're working on and who you're working. exactly what "The Right Way" consists of is less important than doing it that way all
Time. junior engineers tend to have the most trouble with this, but it does happen with senior-level people too. there's an "emergency" project, or something that seems so different that it must have its own set of rules. that's bogus. good engineers know
That the right way applies to all situations and circumstances. if there's not enough time to do something the right way, then there's really not enough time to do it. don't make compromises, the quality of your work is what ultimately defines you as an engineer.
Make sure that all of the code you write is done the right way 100% of the time. Expect CT excellence from yourself.

We have a great challenge for the software team, that is, how to do things in the right way. What is the correct method depends on what you are doing and who you are. What is included in the so-called "correct method" is not the focus, but whether you can stick to this method. Junior programmers usually cannot stick to this problem, while senior programmers can always stick to the principle. There may be a "very urgent" project, or this project is special and cannot be developed as a regular process. This is just an illusion. Good programmers know that they must always do the right thing in all circumstances and circumstances. If the development in the correct way will lead to failure to complete the task on time, they will know that the project cannot be completed on time. Do not compromise. Engineering Quality is your only ultimate proof of being a good programmer. Make sure that all your code is correctly written in 100% in the correct method. You must follow the standards of a good programmer.

Be willing to suffer

This may sound silly, but good engineers are willing to suffer for their work. show me a great engineer and I'll show you someone that has, at various points in his or her career, spent days trying to figure out a problem. great engineers relish the challenge
Of a problem that keeps them up day and night, and knowing that it must be solved.

It sounds silly, but it is true that excellent programmers are willing to take care of the pain they have brought to their work. I can tell you when you say that a superior programmer has spent several days solving a problem in his or her career at all stages. Good programmers taste the challenges that difficulties bring to them, which makes them day and night. They understand that the problem must be solved.

Not-so-great engineers call for help at the first sign of trouble. they routinely ask for help whenever something goes wrong rather than trying to fix it themselves. their favorite line is, "can you look at this?" Great engineers first and foremost want
Solve the problem on their own. Problem Solving is a skill, a skill that great engineers take seriously.

Programmers who are not very good are different. They first want to seek help when they encounter signs of trouble. In the face of problems, they are used to seeking help rather than trying to solve the problem themselves. Their favorite sentence is: "Help me see this problem ". The first response of a superior programmer is that I have to solve this problem on my own. Solving problems is a skill and a skill that is highly valued by excellent programmers.

Good engineers become great engineers by suffering. suffering means not asking for help unless you absolutely cannot handle the task. asking for help is a sign of defeat, So ring that bell infrequently lest you draw unwanted attention to yourself. be willing
To suffer. Spend time toiling over the problem. That's how you learn.

Good programmers become excellent programmers through painstaking training. The painful training means that you can only seek foreign aid when you are powerless to solve this problem. Asking for help means admitting defeat, so try to reduce this situation. Willing to suffer. Make unremitting struggles with problems. This is what you want to learn.

Note: I am not saying that you shoshould never ask for help. I am saying that you shoshould try to accomplish the task on your own first, and if you get stuck, then ask for help. don't simply ask for help every time without first trying to solve the problem yourself.
Chances are, you'll find that you cocould have figured it out on your own once you know the answer.

Note: I am not saying that you cannot seek help from others. What I'm talking about is that you should first try to complete the task by yourself. If you cannot complete the task, ask for help. Do not seek help easily before you have worked hard. You often find that when you know the solution, you realize that you can solve this problem with your own strength.

Never stop learning is endless

Any engineer who claims that they don't need to learn anything new is not someone with whom I 'd like to work. in some careers, you can get away without learning anything new for years; technology changes too quickly to not pay attention. your employer is paying
You for your expertise and if that expertise goes stale, you become expendable. in order to be a great engineer you must first admit that you don't know everything, and then you must seek out more knowledge in every way you can.

If someone dares to claim that he does not need to learn any new knowledge, I absolutely do not want to work with him. In some industries, you may be able to do well without learning new things for many years, but software technology innovation is so fast that you have to keep an eye on it. Your boss has some skills to hire you. If your skills are outdated and expired, then you will have no value. To become an excellent programmer, you must first acknowledge that you are not at all. You must work hard to find and learn new knowledge every day.

Identify someone in your current company or organization from which you can learn and attach yourself to him or her. ask for advice on complex problems to see how they think. show them solutions you 've come up with and ask for a critique. if you can't identify
Anyone in your organization that can serve as a mentor, then either you're not looking hard enough or you're at the wrong company. if you can't grow in your current job then it's time to look for another.

Find people in your current company or organization that can help you learn and admire you. Ask for their opinions on complicated issues and see how they think. Introduce your solutions to them and ask them for criticism and guidance. If you cannot find someone around you who can be your mentor, either you are not looking for it seriously or you are staying in a company that shouldn't be left. If you cannot learn and make progress in your current job, it is time for you to change your job.

Read blogs. attend conferences. Go to developer meetups. Great Engineers never stop learning.

To read blogs on the Internet. Focus on some seminars. Communicate with other programmers. Excellent Programmers never stop learning.

Share your knowledge

There are some who believe that their sole value is their knowledge, and by sharing that knowledge they therefore make themselves less valuable. nothing coshould be farther from the truth. what makes you valuable is not your knowledge, it's how you make use
Your knowledge to create value for your employer. How better to create value from your knowledge than to share it with others?

Some programmers believe that their only value lies in their knowledge, so sharing their knowledge will reduce their value. This is a big mistake. What makes you valuable is not your knowledge, but how to use your knowledge to create value for the company. Will there be more ways to create value for the company than to share knowledge with others?

I 've interviewed at companies where hording knowledge seemed deeply-rooted at the organizational level. in that type of environment, a fierce competition develops between co-workers, and this opens the door to politics and backstabbing. I don't want to work
In an organization like that. You can't learn if everyone is keeping information to themselves.

I once interviewed a company. The idea of not sharing knowledge, mutual confidentiality, and mutual protection is deeply rooted in this company. In such an environment, there is a vicious competition between employees, which directly leads to intrigue and frame-up. I don't want to work in such a company. If everyone is confused about what they know, you cannot learn anything.

Great engineers want others to know what they know. they aren't afraid of losing their position because someone else can do the same thing. great engineers want to see their peers succeed and grow. organizations rally around und people who share information, and
As they say in sports, people who make other people on the team better.

Excellent programmers want others to know their knowledge. They are not worried about losing their advantage because they believe that everyone will do this. Excellent programmers are happy to see their peers grow and succeed. A company should be made up by a group of people who like to share knowledge, just like people on the sports ground, so that every member of the team can be strong and the entire team can be strong.

Lend a helping hand

Great engineers don't consider any task to be "beneath" them. always willing to lend a hand, you can see great engineers helping out Junior engineers in between doing their own work. if something has to get done, and no one else is able to do it in time, great
Engineers volunteer to take on the work. they don't scoff when asked to help on a project, whether it be small or menial or low-profile. great engineers are team-focused and therefore are willing to do whatever it takes to help the team. whether that be writing
1,000 lines of code or editing an image, great engineers jump at the chance to help out.

Excellent Programmers never say "this is none of my business ". They are always willing to lend a helping hand. They often do their work to help new programmers. If a task must be completed on time and no one else is competent, a superior programmer will take the initiative to undertake the task. They never laugh at people who ask for help, even if the problem is so small, so meaningless, and worthless. Excellent programmers attach importance to their teams and are willing to do anything for them. No matter whether you want to write 1,000 lines of code or edit an image, excellent programmers will immediately seek help.

Take your time

Great engineers aren't born, they are made. they're made by following the advice in this post and by hard work. if you're just starting out, there's still plenty of time to become a great engineer. patience is key. you don't become a great engineer over night.
For some it may take a couple years, for others it may take ten. there's no one keeping score. strong organizations recognize when someone has the potential to be a great engineer and will guide you along. you prove yourself through your work and how you make
Your team better. Focus and self-discipline go a long way towards becoming a great software engineer.

Excellent programmers are not born, but made the day after tomorrow. They are created by the factors mentioned above, and work hard. If you are just aware of this, it's not too late. You still have enough time to become an excellent programmer. Patience is the key. Excellent programmers can not achieve anything in the New Year's Eve. Some may take years, while others may take a decade. No one wrote tears for you. A good company will help you and provide a stage for you when you discover that you have the potential to become an excellent programmer. And you will prove yourself through your hard work and making progress in your team. To be firm and self-disciplined, the path to superior programmers will be long.

Added disclaimer paragraph to "be willing to suffer." seems like people are greatly misunderstanding my point.

Update (5 Sep 2009): Add a statement for "willing to suffer. It seems that many people have misunderstood my point of view.

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.