I would have preferred the title, "Recognize who you're working with"
I have worked with many programmers and it's not always readily apparent who is better than me and who is not. And of course, some are better than me in some things but not others.
We don't always have the luxury of choosing who we work with, and have even less chance of only picking those better than us. So it's probably more practical to learn which habits to emulate and which to avoid in those we actually do encounter.
For example, that database whiz may suck at algoritms, so just because you learned one great thing from him, it does not necessarily follow that you should learn others. Also, I have often found a big difference between the perceptions of others (especially bosses and users) and my own assessment of their skills.
There is something to be learned from everyone. Just get good at figuring out "what" from "whom".
Exactly, 'careful' implies that you are a powerless sheep - which is actually true for an alarming percentage of the population.
I think Paul Buchheit's recent article 'Two paths to success' does a very good job of illustrating the distinction between intrinsic and extrinsic motivation. Seems like one's personal ratio of extrinsic vs intrinsic motivation can be used as a sort of co-efficient that limits or enhances how you are influenced by your network. Further, if you pick some of the most intrinsically motivated entrepreneurs and innovators, you will find many people who will actually be affected negatively by what their network is doing.
In my opinion, for the sake of innovation, the world needs far more entrepreneurs and technologists who are highly intrinsically motivated, and far far less people who are so impressionable that the need to be 'careful' about who they work with. Just like you say, there is something to be learned from everyone.
Skill isn't one dimensional. If I'm better at X and my colleague is better at Y we can both learn from someone 'smarter' and everybody is clearly better of by cooperating.
You see this phenomenon in Rock Climbing quite clearly. There are only maybe 30 guys in the world who have climbed routes graded French 9a+ or harder. Of those, more than half are from a tiny region in Spain.
You might think that this is some weird genetic thing going on, but if you go there to investigate you'll notice something strange: your climbing improves. A lot.
Suddenly you're thrown into a world where climbing 8a (a lifetime goal for most dedicated sport climbers) is something that pretty much everybody does, often within only a year or two of starting out. Your concept of what is "hard" changes, and suddenly it doesn't seem so outrageous to get on a route that should be way over your head. It gets in your blood. You train harder. You climb harder. Just because you're there.
It's not a fluke of grading, either. You can take that ability you gained back to your home crag and demonstrate for yourself that it's real by polishing off projects that you'd been working on for years. Then you can watch it fade away over the course of maybe half a year as you slip back into climbing with your old crowd.
"always be the worst musician in every band you’re in" -- GOLD!
FYI, the continue reading link either shouldn't be on the page, or it should take you to the rest of the article - not sure if I got everything or not.
I found another formulation in reddit, a few days ago, that you might like also: "if you're the smartest person in the room, you're in the wrong room".
I really enjoyed my last position. I was a team lead of a team of junior programmers, but the other teams had better programmers then me. I got the best of both worlds.
Helping someone learn new, cool shit is just exhilarating... Almost cooler then learning new stuff yourself.
When I was a TA in college I gave similar advice to my students: If you are the best person in your study group, you are in the wrong study group. Now, the problem is, on a purely meritocratic level, the better study groups do not want to have you because you are slowing them down. You gotta bring something else to the table so they let you in. What that special something is, everybody has to figure that out for himself. I can't help you with that.
I am definitely seeing lots of parallels to work and other aspects of life here.
the problem is, on a purely meritocratic level, the better study groups do not want to have you because you are slowing them down. You gotta bring something else to the table so they let you in.
"Do you like your espresso long or short" works for me.
I am NOT joking: Every project in the world has some mundane thing that has to be done but everybody is too busy to do it. Make coffee, write and maintain build scripts, write test cases, documentation, whatever. If everyone on the team is smarter than you, they all would rather be doing something else, and they will value a team member that gives them more time to do it.
The process of learning a musical instrument isn't too different from learning how to program. As a long time musician, I heard the quote a long time ago and it comes to mind frequently.
Taking part in a programming community like those surrounding more academic languages such as Scala, Haskell or J is a challenge a lot like playing in a jazz band with music majors and 60 year old musicians with amazing grace. That's the wonderful thing about being online - you can interact with a nearly limitless variety of social circles. There's always someone with inspiring talent, skills, ideas or enthusiasm to inspire you.
That's one of the reasons HN is so good - this community challenges members to make contributions which are intellectually substantive, unlike Reddit, TechCrunch or other superficially similar sites.
It sounds great but most places seem to hire based on current abilities or previous accomplishments, not potential, so how does one go about implementing this advice for anything other than an entry level position?
Of all the places I've worked as an employee, I've always been around people smarter than me. I never found it difficult to find them. Maybe this is because I'm not very smart! :-) I like to think it's because I looked for them. Even if they weren't in my direct group of peers, they were somewhere in the company and easy to associate with. Without fail, if I became the top person in my group, it was time to move up or move out.
The only real time I've had a problem with this is when consulting. I usually WAS the expert, or at least perceived expert, and had difficulty finding people to work with that could elevate me to the next level. The easy solution to this is to go to local meetups with people who share your passion.
Work for companies that are weak in what you're strong in, but strong in lots of other areas.
When I joined Google Search, I was frequently the smartest guy in the room when it came to JavaScript quirks, or web development, or rich AJAX apps. I was usually the dumbest when it came to massively distributed systems, or information retrieval, or i18n and accessibility, or unstructured data mining.
Over time, I've transferred a bunch of my frontend knowledge to other engineers, and I've learned a whole lot about how massive software systems are architected. I'm a better developer, the people around me are better developers, the company is several hundred million dollars richer, and everybody wins.
Hey Chad, seems like a good post. . . not being one of those crazy typography guys, but it was very hard to read this post. I'm in Chrome, xp, and on a 21 inch monitor. The letters look like they are weighted differently in thickness. Maybe move to a more standard font? Anyways, just an fyi.
Excellent points on the spreading of behavior and emotions via social networks.
In "The Hidden Power of Social Networks" (an excellent book on social network behavior within large organizations), Rob Cross reports work looking at the effect different people had on energy. Some people, when you meet with them, everybody comes out energized ... others, you come away totally meh. Who's it more productive to associate with? I don't know of similar studies with startups, early customers, and partners, but I'd bet dollars to donuts there would be similar patterns.
An extreme version is to work for energy, not money. Instead of choosing clients, customers, markets, suppliers, angels based on profitability (or future profitability), base it on energy.
There's a reasonable probability that energy will translate into value creation and then into money, anyway.
And even if not, would you rather be full-of-life and poor, or half-dead and rich? (to dichotomize for dramatic contrast.)
I am pretty strongly affected by the environment that I'm in, so this post really hits home for me, but there's a conflict I can't resolve about always being the worst x in your collective noun:
Why would a collective that is better than you, which probably subscribes to this moderately common notion, hire you?
Actually it was Groucho who uttered the phrase to which you refer. However a little research shows that it was apparently originally from the "Forsyte Saga" novels about edwardian era upper-middle-class british life. You learn something new every day.
I agree with this premise entirely....however, in the .Net world, at least in my experiences, the smartest (in terms of raw mental capabilities and depth of knowledge) are also the people that write the most verbose, complicated code to do the simplest things...generally I suppose under the guise that it will be "more flexible" I suppose. Often times after enough frustration I've rewritten some of the code in question in one fifth the size, which handles more scenarios, runs faster, and usually even a junior programmer could figure it out.
I often read people making fun of the grossly overarchitected solutions in the java world, but I personally feel the same way about the .Net world, at least when it comes to code written by people who are in most ways genuinely the smartest, most capable developers I have worked with.
Any other .Net people feel this way or am I missing something?
I've noticed a corresponding tendency, but amongst the most experienced (But not most capable).
The longer someone's been a '.Net Programmer' (rather then a programmer who does .Net) the more likely they are to over-architect, over design and use frameworks and tools that are just...wrong.
"If behavior spreads through social networks, then working in a toxic or slow-moving corporate environment is really really bad for you."
1) I think working in a toxic or slow moving corporate environment is really bad for you for reasons much more direct than behaviors moving through a social network
2) Researches demonstrated that certain moods and obesity appear to be correlated in social networks - but they have not demonstrated causation or show that this applies to behaviors and moods in general. The fact that two nodes in a social network are likely to both be obese together only shows that obese people move in the same social circles, and there could be a wide variety of social and economic reasons why that are more directly causative than two people knowing each other.
Not to be a downer, it just seems to me that this article makes an unfounded leap there.
According to the papers cited about alcoholism and happiness, you are not affected by the behavior of your coworkers. For smokers, they only claim that coworkers influence each others' behavior within small firms, which makes sense because people are more likely to be friends anyway and there is more pressure to smoke socially. Even then, the confidence interval is huge; they claim smoking cessation by a coworker decreases your chances of smoking by 34% but with a 95% CI between 5% and 56%.
I haven't read the papers, and maybe they explain this, but I wonder what happens when more than one of your friends stops smoking; surely they can't decrease your chances of smoking by 34% each.
I have worked with many programmers and it's not always readily apparent who is better than me and who is not. And of course, some are better than me in some things but not others.
We don't always have the luxury of choosing who we work with, and have even less chance of only picking those better than us. So it's probably more practical to learn which habits to emulate and which to avoid in those we actually do encounter.
For example, that database whiz may suck at algoritms, so just because you learned one great thing from him, it does not necessarily follow that you should learn others. Also, I have often found a big difference between the perceptions of others (especially bosses and users) and my own assessment of their skills.
There is something to be learned from everyone. Just get good at figuring out "what" from "whom".