Programmer's Dilemma

Source: Internet
Author: User

  • Original:programmer ' s dilemma-i.m.h.o.-Medium
  • Translated By:cssmagic

Recently I interviewed tens of candidates for a kernel programmer ' s position. These candidates is from big, good companies, which is famous for chips or embedded os/systems. Many of them claimed they has at least years on-job experience on kernel. Their resumes look fairly shiny-all kinds of related projects, Buzz words and awards ...

I recently interviewed more than 10 candidates for a kernel programmer's position. These candidates come from a number of good big companies that are well known in the field of chips or embedded operating systems. Most of these candidates claim to have 10 years of on-the-job experience in the kernel. Their resumes look dazzling--a variety of related projects, terminology and awards ...

But most of them cannot answer a really basic question: when we call the standard malloc function, what happens in ker Nel?

But almost no one can answer a very basic question: What happens in the kernel when we invoke the standard malloc function? .

Don ' t be astonished. When I ask one of the candidate to write a simple LRU cache framework based on glib hash functions, he firstly claimed he Had never used Glib-that ' s what I Expected-i showed the GLib hash API page and explained the APIs to him in detail, th En after almost an hour he wrote only a few lines of messy code.

Let's not be surprised. When I asked one of the candidates to write a simple LRU caching framework based on the glib hash function, he first said he never used glib--. That's what I was hoping for-so I helped him open the GLib Hash API page and explained the API to him in detail, and then about one hours later, He writes only a few lines of messy code.

I don ' t know if the situation is similar and other countries, but in China, or more specifically, in Beijing, this is Reali Ty. "Senior" programmers who worked for big, famous foreign companies for years cannot justify themselves in simple, fundament Al problems.

I do not know if other countries have similar situation, but in China, or more precisely, in Beijing, this is the status quo. "Senior" programmers who have worked in a good big company for years cannot prove themselves on simple, basic questions.

Why does this happen? What the hell is going on here?

The more I think on it, the more I believe it was caused not only by themselves but also by the companies they worked fo R. These companies usually provide stable stack of code, which have no significant changes for years. The technologies around the code wraps up people ' s skills, so that they just need to follow the existing path, rather than To be creative. If you happened to work for such kind of code for a long period and do not reach to the outer world a lot, one day you wi ll find yourself to is in a pathetic position-they called you " EXPERT " inside the team or company, yet you CA Nnot find an equally good job, the market unfortunately.

The more I think about this issue, the more I believe that it is not only for their own reasons, but also for the companies they are serving. These companies often provide a stable code heap, and often do not have a big update for years. The know-how of this code puts people's skills into a stereotype, so that they only have to follow the existing path without having to be creative. If you happen to work for this type of code and have been isolated for a long time, one day you'll find yourself in a miserable position-they call you " expert " in a team or company, but unfortunately you can't find a job with equal treatment in the market.

This was so called "  Expert Trap  ". From programmers dreamed of being an expert inside the team/company; However, when that day really comes we trapped ourselves. The more we dig to existing code, the deeper we trapped into it. We gradually lose our ability to write complete projects from scratch, because the existing code are so stable (so big/so p rofitable). What's the worse, if our major are just to maintain the existing code with little feature development, after a while, No matter how much code we ' ve read and studies, we'll find we cannot write Code-even if the problem is as simple as a Graduate school assignment. This is the programmer's dilemma:  we make our living by coding, but the big companies who fed us tend to dest Roy our ability to make a living.

This is called the " expert trap ". Everyday, programmers are eager to become an expert in a team or company, but when that day comes, we are already in the trap. The deeper we drill in the existing code, the deeper we ourselves are. The existing code is so stable (so big and so good) that we gradually lose the ability to write a complete project from scratch independently. What's worse, if our main job is to maintain these existing code and seldom develop new features, it won't take long, no matter how much code we've studied, we'll find ourselves unable to write code-even a task as simple as a graduate job. This is the programmer's dilemma: We make a living by coding, but the big companies that feed us are virtually obliterated by our survival skills.

How do I get away from this dilemma? How do you break this dilemma? For personal-Personal:

First of all, do your own personal projects. You need to "sharpen your saw" continuously. If the job itself cannot help, pick up the problems you want to concur and conquer it in your personal time. By doing so, the most likely you'll learn new things. If you publish your personal projects, say on GitHub, you could get chances to know people the Who could pull your away from your E xisting position.

First, build your own private project . You need to constantly polish your skills. If the job itself doesn't help you do that, pick up the questions you're interested in and use your personal time to conquer it. In this way, you should learn something new. If you publish your private projects, such as on GitHub, you might know someone who will help you move forward in stride.

Do not stay in a same teamfor more than and years. Force yourself to move around, even if in the same organization, same company, you'll face new challenges and new techno Logies. Try to do job interviews every months. You don ' t need to change your job, but you can see what does the market require and how do you fit into it.

don't stay in a team for more than two years . Force yourself to turn around, even within the same company, facing new challenges and new technologies. Try to go out for a job interview every 18 months. You don't really need to change jobs, but this can help you see the real market demand and how to keep up with the times.

For team/company-for teams and companies:

Give pressures and challenges to the employees. Rotate the jobs, let the "experts" has chance to broaden their skills. Start new projects, feed the Warriors with battles.

give staff pressure and challenge . The rotation system allows "experts" to expand their skills. Start a new project and use battle to hone your warriors.

Hold hackathon periodically. This would help to build a culture that embrace innovation and creation. People'll be motivated by their peers-"gee, which Bustard can write such a beautiful framework for hours, I gotta wo RK hard. "

periodically, a hackathon is held . This helps to create a culture of innovation and creativity, and people will be inspired by their peers-"rub, this bastard can write such a beautiful frame within 24 hours, I have to add strength!" ”

RELATED LINKS
      • Hacker News on the relevant comments
        Original link HTTPS://GITHUB.COM/CSSMAGIC/BLOG/ISSUES/23

Programmer's Dilemma

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.