Bruce Eckel deftly identifies the root cause of all software development problems:
We are in a young business. Primitive, really -- we don't know much about what works, and we keep thinking we've found the silver bullet that solves all problems. As a result, we go through these multi-year boom and bust cycles as new ideas come in, take off, exceed their grasp, then run out of steam. But some ideas seem to have staying power. For example, a lot of the ideas in agile methodologies seem to be making some real impacts in productivity and quality. This is because they focus more on the issues of people working together and less on technologies.A man I've learned much from, Gerald Weinberg, wrote his first couple of books on the technology of programming. Then he switched, and wrote or coauthored 50 more on the process of programming, and he is most famous for saying "no matter what they tell you, it's always a people problem."
Usually the things that make or break a project are process and people issues. The way that you work on a day-to-day basis. Who your architects are, who your managers are, and who you are working with on the programming team. How you communicate, and most importantly how you solve process and people problems when they come up. The fastest way to get stuck is to think that it's all about the technology and to believe that you can ram your way through the other things. Those other things are the most likely ones to stop you cold.
Bruce misremembers the actual quote; it's "no matter what the problem is, it's always a people problem." But Bruce's reformulation has a certain ineffable truthiness to it that is certainly in the spirit of Gerald Weinberg's writing.
Let's say I was tasked with determining whether your software project will fail. With the responses to these three questions in hand, I can tell you with almost utter certainty whether your project will fail:
That last question isn't a joke. I'm not kidding. Do you like the company of your teammates on a personal level? Do you respect your teammates professionally? If you were starting at another company, would you invite your coworkers along? Do you have spirited team discussions or knock-down, drag-out, last man standing filibuster team arguments? Are there any people on your team you'd "vote off the island" if you could?
It may sound trivial to focus on the people you work with over more tangible things like, say, the actual work, or the particular technology you're using to do that work. But it isn't. The people you choose to work with are the most accurate predictor of job satisfaction I've ever found. And job satisfaction, based on my work experience to date, correlates perfectly with success. I have never seen a happy, healthy, gelled, socially functional software development team fail. It's a shame such teams are so rare.
As Weinberg said, it's always a people problem. If you aren't working with people you like, people you respect, people that challenge and inspire you-- then why not? What's stopping you?
So very true. We once lost this awesome guy at my last job (he went to some Vertigo company) and work became just so aweso.
The quality of people and how you mesh/clash determines happiness.
Jarrod on January 9, 2008 7:23 AMIt's *what* you know and *who* you know. The who you know trumps what you know. Get the people on your side.
How might your project go if everybody was on your side?
jd on January 9, 2008 7:31 AMDon't forget that this goes all the way up the management ladder. There's certainly a discount factor for each level up, but that truthy saying still applies.
trousercuit on January 9, 2008 7:32 AMNot all development environments are created equal. At one firm you may be able to pick and choose individuals to work with and will possibly be successful. At another you may be forced into a group of people you don't get along with at all and have no say in the matter: "Stop arguing and get it done."
Josh on January 9, 2008 8:07 AMHm.. wel written.
This is such a simple thing that it must not be written about at all. We all need to know this stuff.
I completely agree with this. I think it's just a universal truth rather than specific to programming. I don't even work in software development, but any project I am tasked with or simply my day-to-day duties successfulness are determined by:
How well have I planned today (or this project) prior to starting?
What is it that I'm trying to accomplish, when am I done?
Do I get along with my co-workers?
Jeff, I have to agree. I wrote a similar article recently about the importance of the people in a team: http://shipsoftwareontime.com/2007/11/12/building-a-great-team/
one reason why I like this blog is that you often write about something what I was just exactly thinking a few hours before. I'm sure there are plenty other developers feeling the same and that's why is your blog so popular.
lubos on January 9, 2008 8:45 AMI'm an actuary (and part time developer) in a large consulting firm, and I see this working there, too.
I also spent a lot of time researching how to make our spreadsheets safer and more accurate, and the answer I found was to make them easier to check (simpler, clearer, consistent, etc), and having a strong culture - all of which comes back to people, not technology.
dermot on January 9, 2008 9:12 AM"What's stopping you?"
Well, (not me personally), it's LOTS of things:
- companies hire people that are jerks, and hide them from you in the interview process only to be unleashed after you accept an offer
- companies hire people who are "properly" emotionlessly professional as managers, and you think that once you get to know them and work for them they will be pretty cool
- companies hire lots and lots of people with form but very little function, who use words like "collaborate", "user experience", and "systemically", and cause your heart to shudder and cringe
- companies reward people for the wrong things, and not often enough for the right things
I could go on, but perhaps that's why I work for myself. The best job in software I had lasted from 1986-1990, and it hasn't been matched since. Now THAT'S a freaking shame...
Steve on January 9, 2008 9:40 AMI think Alistair Cockburn rules! He has done what one should do, and that is to compare realworld projects and their methologies.
http://itc.conversationsnetwork.org/shows/detail175.html
Things are the way they are because they got that way ... one logical step at a time.
Wow, someone must have had a blessed career to think that. Most of the disasters I end up fixing are due to people not putting any thought into the things they do at all, let alone logical thought.
a on January 10, 2008 1:18 AMIf you don't get the processes right, you are in trouble.
"Individuals and interactions over processes and tools."
http://www.ambysoft.com/essays/agileManifesto.html
It is possible to go to far in either direction (heroics) but I think it's important to have some perspective: *process* doesn't write code. People do.
Jeff Atwood on January 10, 2008 1:19 AMIn Weinberg's writings, there's more to the "people" aspect than whether you like your coworkers or not. There's the way organisations are set up and how different people will view the business using quite different preconceptions.
A reoccurring theme is to look at the system as a whole, starting from the viewpoint of the "Helpful Model" - that people are trying to be helpful *according to the way they see things*, which may well appear as if they are being very unhelpful from one's own viewpoint.
So my own people-oriented criterion for project success is "is what you are trying to do reasonably well-sligned with the way that people interact in the organisation?".
Part of this is whether your own personality fits into the wider culture well. For instance I personally like having a reasonable autonomy, for people to act in a generally agreeable fashion to each other (particualrly if they are at different levels of the organisation's hierarchy), and trying out fresh approaches to problems. This makes be a good match for some organisations, and a terrible match for others. Whether I like my co-workers is not quite so relevant.
Matt Morris on January 10, 2008 1:26 AMI agree.
If you work with people you like (and I do) it's easy to say things like "I don't know how to do this. Can you help?", or "I think you did that wrong. Let me show you how.", or "Dammit, I screwed up: how do we fix this?"
teedyay on January 10, 2008 1:39 AMAlso, with the right people, process can be fixed.
The right process cannot, however, fix the people.
Brooks Moses on January 10, 2008 1:40 AMBy one study, using the Myers-Brigg (MBTI) personality catgegorization system, the most effective software team were composed of Extroverted (not Introverted) programmers, a Feeling (not Thinking) manager, and a Thinking architect. My own personal experience would suport the belief in extroversion as being important in software teams. On one team I was the leader of, the extroverts shared information and worked together while the couple on introverts on the team lacked initiative, rarely got involved, and generally did not share ideas.
I agree with this on the whole, however, there are some cases where the line between people and technology blurs.
This is more related to larger organisations, technology can help remove mistakes caused by people, like the obvious build and deployment tools or code repository's.
Where tasks can be automated and simplified, reducing the need for communication between people, then technology can have a huge impact on the 'success' of a project. But perhaps some would count that as process, rather than technology?
stewart on January 10, 2008 2:57 AMThe editor of c't (big german computing and technology magazine) recently wrote "Time is to valueable to hang in the wrong places" ... that's correct but what defines the right places? The people you find there!
so ... Time is to valueable to hang with the wrong people!?
Hinek on January 10, 2008 3:05 AMAre you sure you're not mixing up cause and effect? Perhaps people are happier when they know they are succeeding, rather then succeeding because they are happy together.
I'm not saying your idea is wrong. As an indicator, it may be pretty good, but I doubt that it's as clean cut as that.
izb on January 10, 2008 3:34 AMI totally agree on what you wrote in your article, Jeff. I work in a particularly large organization, leading us employees to collaborate in "client-provider mode" which is, from my point of view, not a healthy way to work. It is really hard to make people feel involved in such an organization, they do not believe in your product: project fails.
Dogbert on January 10, 2008 4:28 AMI agree with you on the team. I work in a happy, healthy, gelled, socially functional software development team, were yet to see if we fail or not, but we are having fun and learning through the process...
Fernando on January 10, 2008 4:32 AMAt the moment I'm having a problem (as is everyone) with one particular member of our team. This is in no way a software/technology team either, not that it matters.
There are two ideas at the moment. Firstly, get rid of them. They are a stone in the shoe, and every body will be better off with them gone. True.
Secondly, 'there are idiots everywhere and learning to deal with the most difficult is a challenging and rewarding experience'.
I'm all for the easy solution - slice off the infected arm. But learning to over-come a situation could be beneficial for every body involved. May I mention the emphasis in that sentence is definately on the word 'COULD'.
`Josh on January 10, 2008 4:32 AM@izb:
A great team doesn't fall apart in the face of problems. They deal with it. A bad team will start bickering and moaning soon as things go wrong (if not before that).
What you've pointed your finger at is that what looks like a good team might not actually be one: the culture in a group is not necessarily reflected on the surface of it. Hence successful teams can be crappy, you just won't know it till you start facing obstacles.
Or, in other words: happiness in a team is much more likely to be an indicator of the group-culture than of success. Or would you expect people that dislike eachother to suddenly be happy together, just because something worked?
Regards
Peter
This is a great subject. I really like what Matt Steve wrote.
The work environment is not about individuals. It is about organizations. Organizations (companies, departments, teams, and groups) are made up of individuals. Teams and groups are two different things. Groups are individuals that come together for some reason. Teams are individuals that learn to work together toward a common goal. Teams learn to work with the strengths and weaknesses of each team member. Everyone has strengths and weaknesses. No one is perfect, although some people thing they are.
If one person on a team is critical of the others on the team, it erodes the respect that the team has for that individual as well as the individuals that the one person criticizes. Effective teams learn to respond to coaching by a leader and then to coach each other. (Coaching is different than criticizing.) Teams succeed together and fail together. Any individual that is concerned with his or her team's success would never do anything to erode the effectiveness of that team. Individuals who only care about themselves want their teams to fail so that they can try to distinguish themselves as the only shining star on the team by dimming the luster of their teammates and portraying themselves as perfect.
Dr. Tom on January 10, 2008 5:03 AMI think programmers, by our very nature are less people and team oriented. Programming is difficult enough without dealing with "that other guy", office politics and super-sized egos.
PaulG. on January 10, 2008 5:05 AMFor an indepth study of how stress in the workplace affects software development see:
http://the-programmers-stone.com/about/
It's long, but also posits a number of countermeasures
I fully agree with you. As a consultant I work for many companies and you can tell the big differences between one an another. Sometimes just one guy has a tremendous effect in the bad atmosphere.
regards...
Jorge Diaz Tambley on January 10, 2008 5:21 AMAnd the lesson is work on your own !
:-)
Hey Now Jeff,
I couldn't agree w/ you more. Your co workers should feel like family.
Coding Horror Fan,
Catto
I'm still in University (first year!), and not taking Computer Science (as my Math marks sucked and I guess it's a requirement you are a Mathematician..), but I do know that the first thing I do at a new job or when you're working in a group with someone, such as in my programming class, you should try and get to know them if you don't already. I tried working with someone I didn't know in High School, and that worked out pretty horribly. I ended up re-writing the entire project 2 nights before it was due because the asshole felt like not learning how to code properly and was using parallel arrays, and it was a requirement we DON'T...
Take a co-worker out for a drink or something after work, get to know them, find something you both enjoy doing and schedule days to go have some fun with them. The better you are as friends the better you will get along, the better you will learn from each other, the better you will succeed.
Sean on January 10, 2008 6:16 AMThis article goes along with the saying, "Be the dumbest person in the room."
I've worked at two companies and at both I was the most experienced and knowledgeable one there. It was terrible. The internet was my only resource. I could never ask others questions (because they wouldn't know). I could never depend on them to finish or do a good job.
In college I worked on an embedded system on a team of 4. 2 of the 4 people were lazy and incompetent. I was very green, but the leader was very smart and very dedicated. Our project wasn't going anywhere. And then, summer came and the 2 other people dropped off the project. After that we got loads of stuff done and in the end we had a successfull project. Those 2 were really holding us back.
David on January 10, 2008 6:41 AM"[...] The secret to programming is not intelligence, though of course that helps. It is not hard work or experience, though they help, too. The secret to programming is having smart friends."
The Graphing Calculator Story (http://www.pacifict.com/Story/), Ron Avitzur
When you quote someone else, is it cool to insert links in the quote to your own writing? As far as I can tell, Eckel didn't have that link in the original. I find this modification to be misleading -- at least you should surround the replacement with "reference added -ed." or something.
Jerome on January 10, 2008 7:33 AMOn occasion, I have seen a few 'bad technology' problems cause big losses. True, there was always at least one person stubbornly refusing to give up on the technology, but I often see them as a secondary problem.
Clearly, while our 'processes' are so venerable towards 'people problems' we are still in a very primitive stage. When we can build huge systems with hundreds of programmers and the above three questions no longer have an effect on the outcome then we will have arrived at a state where we can actually build things that lives up to the potential of the underlying hardware. Until then ...
Paul.
http://theprogrammersparadox.blogspot.com
I don't agree completely. The pendulum has now swung so far on the other side, that technical competence doesn't matter any more. I've been a programmer for 20 years and when I go on an interview now, I'm not even asked one single technical question. The only thing people want to know now is if I would be a good drinking buddy.
Gettng along in the workplace is only one thing. A professional person will be able to get along with almost anyone - except the most idiotic jerk. Try not to hire those people. But to say that the utmost important thing is to build a team that would be great golfing or drinkign buddies has taking the hiring process to an unbelievable extreme.
We now have teams made up of communistic, good-ole-boy, fraternity, drinking clubs where happiness is the most important thing rather than building a great software system that does what it's supposed to do on time and inside of budget.
If I become a manager again, personality will be ONE facet of the hiring process. But it's not going to be the only one, or the most important one. I would expect my engineers to act professionally. Which means they might not have the absolute best buddy-buddy experiences of their life at work. But they need to do their best to get along and get the job done.
Individual success is also a part of job satisfaction. It's as important as the commeraderie in a team. We're also competing with each other as well as being a team. A good balance of that is what is needed. Not more gab-fests where we feel good at the end of the day if we talked (communicated) all day.
"And job satisfaction, based on my work experience to date, correlates perfectly with success"
Perhaps, but I don't think that the reverse is true (lack of job satisfaction correlating with failure). Sadly.
I've been at companies with people that I'd have happily shot into the sun, but we've still got product out. The mere fact that I loathe my co-workers can force me to loose myself in the work.
A well-known example is EA, which is massively successful, but (at least, until recently), had appalling work practises, and was allegedly heavily populated with hateful idiots.
Wow. Nailed it. I mean huge hammer, like hitting a roofing nail with a sledge hammer hit it. One thing is tho, if you have the group I think it still comes down to people somewhere in the mix. Maybe not in the dev side, but people on the client or management side. Somewhere, somehow it will seem there is a cylinder not firing with the others. If dev is working good together, someone in management is the cog in the wheel. Sometimes its the client, its all a matter of human indecision coupled with personality conflicts. Now lets all get drunk and play ping pong!
Tim on January 10, 2008 8:35 AMI believe! I am so on your side with this. It isn't just programming. To the couple of repeated comments about working alone, that just isn't the way things are done anymore. I read that no matter what you are doing code wise if you are not in a team what you are doing is basically meaningless.
I code away at my VBA apps in total isolation, and would kill for a bit of interaction with another knowledgeable individual, and that would be so much easier if I liked them yes? Who do you want to live next door to, the guy that never talks to you, throws loud parties on the night your term paper is due, parks his monster truck in front of your mailbox, or the folks that you chat with, that invites you to his parties, you can help each other with chores/tasks and you feel comfortable with? We spend more time at work than we do at home, the same should apply. It is when we have to deal with sloth and envy or indifference that we end up at odds in our teams.
Craig on January 10, 2008 8:36 AMSo many people fail to realize the fact that 95% of all programming occurs off the keyboard. Most people think we just sit and type all friggin day. Programming is actually an extremely taxing cognitive task which requires a certain state of mind. This is why teams who co-exist in a friendly, challenging, supportive, and inspirational environment tend to excel. This is also why I think that all programming companies should get out of the 9-5, 5 days a week mentality. Good programming isn't something you just turn on and off when you come and go from work. Good programming requires a clear and active state of mind, and often a great deal of inspiration.
Mattkins on January 10, 2008 8:49 AMAs Steve implied, typically when interviewing for a new job, the company's own interview process has you talk to only the hiring manager, plus maybe 2 or 3 of your prospective teammates. The personalities of the remainder of the teammates, then, are unknowns until *after* you've accepted the job.
I agree; it's a concern. Nobody seemed to like my interview strategy suggestion:
http://www.codinghorror.com/blog/archives/000226.html
And the lesson is work on your own!
True as far as it goes, but working alone can also be a barrier to personal growth:
http://www.codinghorror.com/blog/archives/000890.html
When you quote someone else, is it cool to insert links in the quote to your own writing?
Interesting; I don't think of it that way. I'd *never* insert actual words in a quote (thus changing the essential nature of the quote), but I view hyperlinks as a flexible meta-layer on top of the writing. For example, I might link Bruce's words to a Wikipedia entry further explaining what he means.
Jeff Atwood on January 10, 2008 10:07 AMI found that you join a team at a very small company of 5 or so people who have been working their for 8 or more years, they general have no people skills. Such isolated teams become snobs.
When you work at a bigger company with atleast 100 employees, you can't afford to look like a snob because then everyone will hate you no matter how smart you are. And for every smart snob there is another smart humble person.
kashif
When you quote someone else, is it cool to insert links in the quote to your own writing?
Interesting; I don't think of it that way. I'd *never* insert actual words in a quote (thus changing the essential nature of the quote), but I view hyperlinks as a flexible meta-layer on top of the writing. For example, I might link Bruce's words to a Wikipedia entry further explaining what he means.
Linking to definitions is one thing, but linking to opinion articles is another, especially since you're quoting a blog post, and readers expect blog posts to contain links. Ask yourself: What would you have done differently if Bruce's original post had actually contained a link to your site? What if Bruce had linked the words "young business" to a blog post with a totally different take on the topic?
Inserting links that aren't purely informative is IMHO a very minor sin --- and IMHO not a sin at all if you're inserting them in a quote of a dead-tree book or other obviously linkless source --- but it's a sin that could have been completely avoided in this case much more elegantly than Jerome suggests:
Bruce Eckel deftly identifies (link)the root cause of all software development problems(/link): that the software industry is (link)too young(/link). (blockquote)
Anonymous Cowherd on January 10, 2008 10:47 AM@steve
companies hire people that are jerks, and hide them from you in the interview process only to be unleashed after you accept an offer
No wonder you work for yourself! If you start out antagonistic and defensive, if you start out thinking everybody hates you then everybody will. There are always difficult people to work with, I do my best not to be one of them. I also accept that I'm not perfect and no-one else is, anyone can have a bad day. Have a look at http://mooseonthetable.com too. I've worked in a lot of environments that match the one described in the fable.
Slightly off-topic. A good defence against open plan is headphones. However, one of the things they talk about in "Peopleware" is that listening to music isn't the best thing to be doing when you are trying to solve certain classes of problem because the parts of the brain used to attend to music and solve them are the same. I usually notice this when I'm working on refactoring or moving chunks of code about to make it cleaner. I use Dan Gibson's Ocean Surf, which is a recording of waves breaking on a beach, to blank out the background noise in a way that doesn't engage my music centre.
Also thanks to Dave L for the link to Programmer's Stone - I'd forgotten about it.
Francis Fish on January 11, 2008 1:19 AMThanks, Jerry - the "loan" was just down the hall to a bright newcomer I'm mentoring, but she has had it for months. "Secrets" is one of a handful of books over the years that I've kept several copies of and handed out - time to restock!
David on January 11, 2008 2:56 AMI've lent my copy of "Secrets of Consulting" to a friend so I can't check the exact quote, but my memory is that Weinberg's point is that if you're asked to act as a consultant (which he defines as providing advice at the asker's request), it'll be because of a people problem - that technical problems can be solved internally.
This is unsubtly different from simply saying "It's always a people problem" in all circumstances.
IMHO.
Your mileage may vary (I've only been doing this since 1967)...
David on January 11, 2008 5:11 AMDavid is right. I feel understood. (and not just by David, but by others on this thread)
When someone asks you to help them solve a problem, they're usually pretty desperate (especially if they're ego-centric programming types). Their desperation in itself is a people problem. Working in desperation is not generally the best mode for solving problems (in spite of the hero-image that some of us like to cultivate).
As David also says, he's been doing this since 1967 (and I've been doing it since 1956). We make our living based on this insight. Ignore it at your peril, but if you do, it's more business for us.
One more insight, for David: Don't lend your copy of "Secrets of Consulting." Make them buy their own. Evidently, few people return their borrowed copies--another people problem.
Gerald Weinberg on January 11, 2008 7:01 AM"As Weinberg said, it's always a people problem. If you aren't working with people you like, people you respect, people that challenge and inspire you-- then why not? What's stopping you?"
Uh...
Rent
...and they don't take platitudes in exchange for food at the Safeway...
Jeff Lewis on January 11, 2008 10:43 AMI have to agree with Jeff. I am fortunate in that where I work (a fairly small development outfit), all of the developers get on well together (inter-team as well as intra-team).
One thing my company does when hiring new staff is to have a 'pub lunch' with the prospective hire before an offer is made (usually after having had a 2nd interview). This allows them to meet a broader range of the people that they would be working with and in a slightly more informal setting. We have found it to be a successful way of ensuring the people hired fit in with those already here.
MT on January 12, 2008 7:33 AMIf only someone would just pay me to assemble my dream team!
I guess there's always the lottery. . .
Zippy on January 13, 2008 7:01 AMThese kinds of posts are why I keep reading this blog. I'm new to the dev career, starting from a team of basically two people that has grown into about 5. Every time we add someone knew, there's this weird trepidation... I didn't realize why until #4 tried to bullshit me and we ended up in a fight. Cost me at least a week of productivity. And to this day, he's still filing bugs on my code that have to be closed as wontfix. Methinks he will get reassigned soon....
boboTjones on January 14, 2008 5:21 AMI'm glad people like Einstein, Beethoven, the Write brothers, Columbus, etc. stayed true to their own vision instead of letting the majority (other team members) erode it back down to where they fit nicely into a team environment. I fear that while much ‘good’ can result from a thriving team-environment and warm fuzzy relations with other teammates, there is some (maybe much) ‘greatness’ that is lost. People, don’t ever lose your allegiance to the greatness that is within yourselves. Don’t sacrifice something you know to be right for what the rest of the team wants. The majority vote is not always the correct one. We need more people who are willing to risk being the jerk who doesn’t fit in to the team in order to achieve the greatness that we are capable of.
Mike on January 15, 2008 10:19 AMThere are two more factors that compound the problem in tech:
1) Few engineering programs emphasize team projects, and those that do rarely provide any training for how to deal with typical team situations. People leave college without a toolkit for interpersonal work relationships - and sometimes with self-propogating stereotypes of the challenges of working with other people.
2) CS tends to attract people interested in working alone, or who have a preference for working with machines. At it's core it's not a field that initially attracts people for their social skills.
I don't buy that the problem is the age of the industry - working in teams is hard everywhere.
Scott Berkun on January 18, 2008 9:47 AMQuote: "And job satisfaction, based on my work experience to date, correlates perfectly with success. I have never seen a happy, healthy, gelled, socially functional software development team fail."
Erm, what kind of crack are you smoking today, can I have a piece?
Your statement has it backwards, let me correct it for you:
"And *lack of* job satisfaction, based on my work experience to date, correlates perfectly with failure."
See?
I do agree that teams that don't work on a social level won't
get shit done. But I **strongestly* disagree that "happy" teams
guarantee success to any degree. If that would make the slightest sense then companies would be hiring "groups of friends" instead of
"skilled individuals".
Furthermore I have seen a lot of "happy" teams fail awfully.
It's a pity but a bunch of idiots who totally like each other
will *not* deliver significantly better work than a bunch of
idiots who totally hate each other.
We had all complained frequently about the poor attitude of the bad apple. But, as management told me, he gets things done.
I'll never forget how nice it was to go to work after he was laid off. The productivity and cohesiveness of the team went through the roof.
On the bright side I learned more about team dynamics at that job than I could from any book . . . even Peopleware. That said, if you haven't read Peopleware follow Jeff and Joel's advice - read it.
MattH on July 18, 2008 11:06 AMThere are lots of useful comments here. After reading all of them I thought wait, did anyone say 'trust'? And I grepped the page, and indeed no one had.
On my dream software team, the single most important thing to me is that everyone trusts everyone. Each team member is good at different things, and the benefits of that can only spread if there's trust.
Personality and drinking-compatibility are valuable, sure, but not necessary. But it seems that most of the negative phenomena in this thread could be chalked up to distrust, and most of the positive ones can be realized through trust.
If you took me to bar you wouldn't know anything about me except that I dislike bars and people who need to drink or smoke in order to socialize.
And if you don't need to drink in order to socialize then what are you upto? Are you trying to get me a little bit drunk so I might reveal something I might've not otherwise have told you? How could I possibly interpret that as you being a potential friend?
Approach I prefer is to go through what you like to do for fun (drinking/bars, pr0n not qualifying as they are too generic), what are you good at doing and if time allows show and attempt to teach me some of that. And show your what weird/crazy/funny stuff you like looking/reading in the internet or the games you play, whether it's in youtube, sa or wherever.
Certainly that doesn't tell same things someone might divulge over a beer immediately, if you want me to divulge more personal bits you'd need to actually learn to know me first rather than coerce me tell you with external substances.
ubergeek on August 27, 2008 6:54 AMCommenter Steve said:
- companies hire people that are jerks, and hide them from you in the interview process only to be unleashed after you accept an offer
This is a good point -- when considering taking a job with a new company, what, if anything, can be done to check on how cool each of your new teammates will be to work with?
As Steve implied, typically when interviewing for a new job, the company's own interview process has you talk to only the hiring manager, plus maybe 2 or 3 of your prospective teammates. The personalities of the remainder of the teammates, then, are unknowns until *after* you've accepted the job.
One idea might be to ask the manager for a list of the names and work email addresses of all of the team members, and then email each person on the list individually, explaining that you are a new prospective member of the team and asking a question or set of question, and then try to get some kind of feel for the personalities on the team based on each person's responses (or lack thereof)?
Would this kind of thing be reasonable to do? Is there any other guidance out there on how a typical (non-entrepreneurial) developer can position themselves on a team of all quality ("cool to work with") people other than by chance?
Jon Schneider on February 6, 2010 10:20 PMI've always found the "If I started my own company, who would I take with me" to be the perfect test of how much you like your team.
I HIGHLY recommend reading The Three Signs of a Miserable Job by Patrick Lencioni. It's a quick read, I burned through it in maybe 2 hours. It breaks down the team/job dynamic in elementary terms and I believe could be effectively used in a job interview to find out what you're going into. I'm technically just a programmer peon, but reading this book reaffirmed the way I want to treat my coworkers and the way I want them to treat me.
Steve Jackson on February 6, 2010 10:20 PMI think the "People Problem" relates more to productivity than to technical problem solving/coding. If you have people problems, most likely this will lead to slow downs, increased aggravation, and stress levels with in your team.
But, I also believe that problem solving and technical challenges play a huge role in programming and "engineering" in general. At this time, I don't think we can consider programming to be an "engineering" disipline. Consider the problem of creating a circular charge around a core of an A-bomb. A very technical problem which requires smart people. People personalities only go so far to solve the problem. Programming is like that as well.
For programming, these traits are essential for good team:
Problem Solving - Get Things Done
Technical Ability - Smart
Understanding your limits - Help I'm stuck on a problem!
Honesty
Proficiency, Skill Set
Do we like this person?
Any company hiring a programmer should give a quiz on the language that is being used for code. A good quiz is to have the person sit down in front of a computer and solve a problem. Use the internet, visual studio help, whatever. If you interview with a companies with no technical interview, then you probably be working with some under qualified personel.
Jon Raynor on February 6, 2010 10:20 PMMany people call process problems people problems. For example, if your reviewing doesn't work, maybe its not about wrong people. Maybe your processes are flawed. Alright, if you have bad processes, its ultimately somebody's fault. But then again, who is this somebody? A person? No, somebody is just a concept. Somebody is not a real person.
So you need to get your processes right. In the end, the process might be automated. Then it has no people in it. People are the problem. When you automate, you don't need any people - no right no wrong people.
Still plenty of problems are related to peoples, when they are behaving badly or something. But its not always about being a good team mate and a real good pal. If you don't get the processes right, you are in trouble.
Don on February 6, 2010 10:20 PM Nobody seemed to like my interview strategy suggestion:
http://www.codinghorror.com/blog/archives/000226.html
Jeff, have you had the chance to put that suggestion (have prospective candidates give a 20-minute presentation on one of their areas of expertise to a few of your key team members) into practice yourself? If so, how did it go? (Maybe a topic for a future blog post?)
Jon Schneider on February 6, 2010 10:20 PMProcess doesn't write code. (Unless its automated process.)
But its better to get the process right before you start writing so bad code that it is not maintainable. Happy people that enjoy working together, do lots of neat stuff, and share ideas willingly: If the process is bad, those people are not very sustainable.
Usually people who are considered productive and good working fellows are more like extroverts. But at the same time they like to do more experimenting, share ideas, have good time solving tricky problems, entertain the customer and so on. But who thinks about the process? Process is not someone who you would consider to be entertained or cared for. But everything you do, is actually part of a process, written or unwritten. People change jobs and company, but the process stays.
With the right people process can be fixed, yes. The question is, are they fixing the process?
Don on February 6, 2010 10:20 PMJust had some Lean manufacturing and 5S training. The trainer's main points were not the processes and techniques, even though he spent most of his time on them. His main points, which he kept repeating were, to get the people on side and create the culture that lets Lean and 5S happen.
John Ferguson on February 6, 2010 10:20 PMThe comments to this entry are closed.
|
|
Traffic Stats |