借用一下这个很大很夸张的标题。内容都是摘录自coders at work
"Coder" is strongly associated with the smallest and most narrowly focused part of that whole software building endeavour. "coder" represents such a small corner of the whole processs. A good title should be: software developer.
Good Programmer
they are realy literate in whatever language they write to other humans
Ability to argue their point is important.
Curiosity is a key skill for programmers.
The bravado and willingness to “go ahead” with incomplete but essential info.
if they can't get enthusiastic about something, they're not going to get charged up in a group.
programmer – people who feel comfortable swimming around in the world of symbols(抽象思维).
write a lot of programs.
Talented programmers
it's just enthusiasm. you ask them what's the most interesting program they worked on, get them to describe it and its algorthms and what's going on. if the ycan't withstand my questioning on their program, then they are not good.
enthusiasm is not something you ask directly, but in the conversation you'll come with the enthusiasm-ometer.
我们有时也说 "passion for technology".
但是在面试的时候你不能问 - 你对计算机技术有热情么? 因为所有回答都是 yes。
你要在场景中, 对话中感觉对方的“热情”。 如果一个念了5-7年计算机专业的人,不能 “两眼放光”地给你讲他自己最得意,最激动人心的项目或算法,不能回答你的深入提问,除了老师的作业和实验室老板叫做的项目之外,没有别的想法。 你觉得这种人有多少 “热情”?
Code Style
When you are writing code you’re writing as much for human readers as for the computer.
The older I get, the more I realize it isn’t just about making it work; it’s about producing an artifact that is readable, maintainable, and efficient.
there is very few inherently hard programs. if the code looks very hard, that's almost always an indication that it was poorly thought thruough. if you have complicated code, put it in an encapulated place.
programs are meant to be read.
Tips on a good technical leader:
1) clear vision;
2) trust people; get everything figure out, but leave it open to team member to do it.
3) avoid micromanagement. if you’re worried and you’re insecure, and so you’re feeling like you hve to nail everything down.
技术带头人:
1) 清楚的远景。没有清楚的远景,只有强大技术能力的团队,就像盲人骑瞎马,还使劲用鞭子抽打,让马快跑。 看起来一度非常拉风,但后来免不了人仰马翻。
2)信任团队,把大方向弄清楚之后,把其他事情交给团队成员去搞清楚。 如果带头人详细规定了所有细节,那么团队成员干得还有什么劲呢?
3)避免“微观管理”。当你担心或者没有安全感的时候,你当然会希望把所有细节都搞清楚,但是这样反而会出乱子。