Ask Slashdot: What Makes a Good Work Environment For Developers and IT?
An anonymous reader writes: I've been unexpectedly placed in charge of our small technology department at work. We have three dedicated developers, two dedicated IT people, and one 'devops' guy who does some of both. It's the first team I've managed, and I'd like to do a good job of it, so I ask you: what makes a good work environment? I have my own likes and dislikes, of course, and I'm sure everyone can appreciate things like getting credit for their work and always having the break room fridge stocked. But I'd like to hear about the other things, big and small, that make it more fun (or at least less un-fun) to come into work every day. This can be anything — methods of personal communication, HR policies (for example, how can reviews be not-terrible?), amenities at the office, computer hardware/software, etc. I also wouldn't mind advice on how to represent my team when dealing with other departments.
Bah.
I don't get people.
I don't want free drinks. Video games to play at work. A ping pong table. Any of that.
All of that, just EXTENDS the work day. You're not going to go in, play ping-pong for 4 hours, and then work 4 -- and get paid for 8. Instead, the expectation will be a longer work day.
In reality, all of these silly perks are just non-cash compensation for long work days.
You know what? Keep the free drinks, the catered lunch, the free this and that. Keep the ping-pong table, the toys.
JUST GIVE ME MONEY. Give me MORE money, and keep all of that!
Keep my hours SHORTER, so I can go out and PLAY WITH PEOPLE I WANT TO PLAY WITH. While people at work MAY be fun, when *I CHOOSE* who to play with, *I KNOW I WILL HAVE FUN*.
People should be able to choose their personal work space.
Most people would probably like an office with a door, but it people want something else, each person should be able to choose for themselves.
Do not tell IT anything and then blame them and throw them under the bus when it doesn't get done. Give a wonderful Window at 3pm on a Friday for somehting that needs to be ready by Morning. Also having IT management do 15% layoffs each quarter do wonders for morale too
Never invite them to meetings as they are a cost center. Create a culture of constant reminders of this and you will obtain the best and brightest talent
http://saveie6.com/
Open plan is bullshit. Headphones and earbuds aren't an adequate substitute for walls.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Make sure that everyone knows what they're supposed to do, what's expected, and when it's due. It's really not that hard, except that apparently it's really hard.
One of the smartest things the company I work for does is let people choose how they want to work, so long as it doesn't interfere with others. Lights off? Lights on? Headphones? Door closed? Door open? Window? No window? Within reason, it's our choice, and that means that we can tailor the environment to whatever works best for us. The end result is that we're not only happier, we're also more productive. Some people work better with ambient noise, others can't stand any distractions at all. Letting each choose their own is the only way to make it work for everyone.
Likewise, as you manage people, understand that they are each individuals. Understand what makes each of them tick. Understand that what works for one will not work for another. Learn them and then meet each of them where they are, rather than asking them to meet you where you are. Again, you'll get better productivity out of them if you understand their strengths and then tailor the tasks to those strengths, rather than expecting them to fill a role they're not good at.
I've seen quite a few "Ask Slashdot" questions that I felt were not legitimate questions. This is certainly one of them. I don't know if Slashdot/Dice is doing some kind of survey/research here, or perhaps getting kickbacks from someone else. Regardless, I just don't buy that this is a legitimate question. The entire premise just seems bizarre, and it matches so many other such Ask Slashdot questions in it's delivery: I'm blah, blah and I have been put into this blah, blah situation and I feel out of place and wonder what other people think about blah, blah and what I see is [topical generalities] and I think other people see these same things. What does everyone else think about blah, blah and should I do the same, because sometimes I think I should, but other times I think I shouldn't. What do you think?
Sorry, but I don't buy it. Blah, blah.
(How ironic I would post this as AC. ...just like the original question!)
I'm in a similar situation as you, OP.
Managing distractions is the key thing I am working on.
I manage a team consisting of a systems engineer, one help desk person and a bank operations clerk that depends heavily on the technology group.
We are unfortunately not back office, we are very accessible to the general bank staff. This has its blessings but far more detractors in my opinion. There's an expectation by the rest of the bank staff that my people are accessible at any time for walk up questions. This is far from the case, we all have our projects and work queues.
So what I have been doing to deflecting these walk ups and ad-hoc requests as much as possible. I find these distractions to be the biggest hindrance to productivity and employee happiness for my group. My people just want to keep things running and solve business problems. They do not want to help people download photos of Mr. Sniffles to their "hard drive".
Long story short, consider the distractions whether it be operational, logistical or even political. If you can insulate and protect your people from the minutia that is the modern workplace, I think you will find them productive and happy. Your people should feel like they completed something each day they leave. Also leave at good hours and be able to leave the office behind on the weekends.
What could possibly go wrong?
... was an older man who started by making it clear that his job was to stand between us developers and the management, and to shield us from all the shit that was raining down from above. He was also technically competent and understood what we were doing, that helped a lot. But most impressive was his integrity. He always gave credit to the guys who did the good work, and was always willing to take the blame when things didn't work well.
A good workplace is one that naturally creates transparency in work goals. There are often conflicting directives between elements of an organization. A well designed working environment involves getting all those sources of conflict out in the open and re-working job descriptions where necessary.
For example it's QA's job to stand in the way of getting software published if it's not as good as possible. It's Development's job to get that software out there as soon as possible. If QA and Devs aren't on the same page you've got a recipe for a nasty stew of workplace politics. It's one guy's job to keep the employees happy. It may be another guy's job to keep costs down. Again: conflict, politics.
The more you take into consideration what you're actually asking different people to do the less stress you'll see. In my opinion well designed work flow counts for more than all the free gourmet coffee in Columbia.
If video games influenced behavior the Pac Man generation would be eating pills and running away from their problems.
The beatings will continue until morale improves.
Learn what the correct fudge factor is for each individual working for you.
One of them might be very optomistic, and need estimates*3. Another might only need a factor of two.
Do not let senior management know you have done tye multiplication.
Hire for intelligence and enthusiasm: everything else can be taught.
Listen first, then talk.
Read up on Meyers-Briggs, and how personality types lead to natural conflicts... and figure out how to catch your own knee-jerk reactions.
Desk with computers on them for a start, and some lights, and maybe a door to get in and out the office.
I've also found electricity really helps, you can buy batteries or get it plumbed right in next to the desks.
Try to minimize distractions. Make sure you don't interrupt your employees constantly for trivial matters.
You might not have a lot of control over your layout, but also try to avoid placing people in situations where other people will distract them. For example, keep the coffee pot in a physically separate room, so chit-chat doesn't interfere with people trying to concentrate.
Sometimes you might need to enforce quiet hours.
No, I will not work for your startup
Pay me a decent salary, and
Trust me to do the things I say I will do, and hold me to it.
Enable me to do the things I say I will do, and hold me to it.
Listen to me when I tell you what cannot or should not be done, and consider it impartially as the advice of a well-paid expert on such matters.
Most of the comments you'll see here are naive personal preferences and simply will not work. This includes the money arguments.
Instead, why not look at what the psychologists have found experimentally about good work environments? Yes, the following is "pop" but it's also true.
https://www.youtube.com/watch?v=u6XAPnuFjJc
Get them 2-3 to an office. Don't force them to sit in a giant bull pen.
Distractions kill developer productivity. Facebook's move to giant open offices is about as counterproductive as you can get.
I've done software engineering, IT, "dev-ops", etc., with many technologies, languages, platforms, industries, and by far the major issue has been interruptions.
Most companies seem to know it's a problem, but few actually do anything about it. At one company (industrial controls / contract engineering) they had to institute quiet time windows. It wasn't enforced and faded away.
At another company I was getting pressure to produce more results so I stayed home and worked at home for several days. It irritated the managers, but I got the work done.
For me the interruptions are bad enough, but worse is not knowing, from moment to moment, when the next one is coming.
The most important thing - do not micromanage. Trust your employees.
To be perfectly honest, you want to be in a position where the only thing you're doing is making sure they don't get overworked and aren't doing projects that don't make sense. All you need for that is a simple repeating team meeting where you talk about what you've been doing and whats coming up.
If you have a problem employee, deal with /that/ employee. Don't fuck the whole team because of one jackass.
In short, treat them like fucking professionals.
--jcbender
Consider having the employees of the HR department crucified directly outside the windows where the IT department sits. I know that watching the crows pick at the rotting corpses of the HR scum where I work would put a smile on my face and a spring in my step.
Why don't you ask them?
Seriously: treat them as responsible professionals, and ask them what you and other people can do to stay out of their way, and allow them to do what everyone (including they themselves) want them to do: make everyone happy with the best software. To do that, start talking to them, and take them seriously.
You have a small enough team to just gather their feedback rather than posters on a forum. You have an opportunity for more tailored measures to make a good environment, though a challenge that some ideal changes are likely to be impractical to achieve for such a small team. For example if you don't have offices and they want offices, construction isn't going to happen for a team of 6. The types of things you can do are likely to be highly subjective.
For example, some people do best with morale boost by having their manager focus on the bright side without going much into the bad aspects of the current larger situation. I personally prefer the manager to be straight with me about precisely how we are doing, how we are falling short, and maybe I can think about how perhaps something can be fixed (or suggest when I think it's time to throw in the tile and focus on more productive things.
If you are in a larger company that does stack ranking, then review time is going to suck for at least 1 or 2 of your team no matter how awesome things are going.
XML is like violence. If it doesn't solve the problem, use more.
Just don't. Use a local network.
Clear direction
Room to experiment and contribute creatively
No outside of department staff subverting workflows unless through the team leader
Room to complete tasks to agreed level (as opposed to getting to done enough as quick as possible then jumping to other tasks)
Inclusion in or room to make suggestions on overall dept direction
The problem is that the day-to-day emergencies get in the way of the 11-month-projects.
But the day-to-day emergencies are soon forgotten and the 11-month-projects are what you are judged on.
Most people here are probably familiar with the "annual performance review" and how much they hate it. So drop it.
Instead, replace it with a LOT of shorter, more frequent reviews. Weekly if possible. Every 4 weeks at the very latest. Lasting between 10 and 15 minutes. Then the annual review for HR is simply a roll-up of 52 weekly reviews.
This helps because EVERYONE knows what the situations are AT ALL TIMES.
There will be problems and the sooner you've identified them and resolved them (or mitigated them) the better.
Try to listen more than you talk.
Be decisive. Don't micromanage, but there are some times where you have to make a decision. That's now your job. If you ever want to get things done, you need to decide things after an appropriate amount of time and then see it through.
You're not always going to be right, but you can't let that paralyze you. Better to be wrong and learn from it, than to do nothing when something needs to be done. Which is not to say that you don't think about it first.
Get goals from your boss. You don't have to make all the decisions. That's what your boss gets paid to do too.
Think about the business. If you're a middle IT manager, you're probably still at least a little technical. That's fine. What you aren't is a pure technician/admin/dev anymore. You need to start thinking about what makes sense for your team and your place in the company as a whole. Hint: retaining your staff is as important from a business angle as cutting costs, but you should think about both.
You're probably a supervisor now. That means you should take evaluating your team seriously. Reviews aren't there so you can give them all 3s (or 5s), they are there so your team knows how they are doing. That's *important*. Most people want to know how to make you happy so they can get raises. The others... need to know when they are screwing up. If you aren't spending real time and thought on giving good feedback, you're a shitty manager and you should resign immediately.
Be willing to do anything that you expect your team to do, including stay late or up early. However, again, you're not there to do the same things as the people on your team. Stay late and coordinate if that is needed. If not, go home and get some sleep so you aren't crabby the next day. Or so you can cover for the guy who was up all night.
Your team should be able to do their job without your assistance unless they are in a really bad spot. You are important because you will be the contact between your boss and your team. You will get the team the resources they need to get their job done. If they need Dev support, you contact the Dev manager to make sure they know about the need. If they need more network cables, you get the network cables.
Overcommunicate. You make sure that your boss and higher ups are not harassing your team for statuses. You provide the statuses. You manage up, as well as down.
If you are hiding in your cube coding or something all day, you're not doing your job. Walk around a bit and see what is going on and if anyone needs something.
You may not be their buddy, but you don't have to be aloof. Find out about the people on your team and what's generally going on with their lives.
When people leave your team... thank them for their work and congratulate them on their new opportunity. Even if they were an asshole.
Noise levels have been an issue at many places I worked, forcing me to use noise cancelling headphones and to play music whenever I was trying to get any actual coding done. And it's not just noise -- it's interruptions from people sneaking up behind you and tapping you on the shoulder when you're obviously busy.
As a result, even cube-land is vastly preferrable to the "open office" that some work environments provide. An "open office" just lets management see whether everyone is working at a glance -- it provides zero benefits to the people who are actually trying to get the work done.
I'm not advocating closed-door offices, though -- those destroy the team environment, and turn everyone into isolationists.
But damnit, man, don't insult your people by expecting them to put up with hearing everyone else's phone conversations and cursing-at-the-computer at full volume because there are no dividers in place to reduce visible distractions and dampen noise levels!
I do not fail; I succeed at finding out what does not work.
The absolute worst thing that can happen is when some clueless manager gets a powerpoint sales pitch, then comes in and says "we're doing everything in now!"
Inevitably, the sales pitch is either grossly exaggerated or outright lies, the "solution" costs a fortune, it's not flexible, anytime you have to customize something (and you will if your business does anything worth doing) it costs a fortune and requires an army of consultants, and you're just going to annoy staff into submission with both inferior and more expensive tools.
I've dealt with this. They come in and promise it can do the moon. Then you ask said manager if it can do any specific thing that we're actually doing right now. They stammer and have no idea, but they're sure it must be able to, because the salesman said it could do anything. In a couple of years when they realize it actually can't without five times more effort than what you had before, said manager will of course never admit their mistake.
If you're going to be making those decisions, involve your staff. They know what you actually need, since they spend every day dealing with it.
Also - walls. Walls are good. Open plan offices are productivity destroying monstrosities. The biggest problem developers have is distractions, and open concept offices are designed entirely to create more distractions. If two people need to talk about something, the entire office doesn't want to know about it.
-- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
Don't micromanage. Give employees plenty of their own space.
Good managers don`t torture their developers, you should be constantly asking what is preventing them from getting their work done and do something about it.
See subject: It makes a HUGE difference when the head knows where the ass SHOULD be going - you can't do that reliably with "leadership" for IT/MIS that has never "walked a mile" in their subordinates' shoes, in other words...
* From my own personal experience, I've had that twice (URS Logistics/Americold Logistics, & ITT Goulds Pumps) really only - @ least those 2 stick out in my mind, with TRUE SUPERIORS to me (my bosses were BETTER @ coding than I was imo) - I'd follow guys like that into the gates of hell (since I know they're competent & will get me out again).
APK
P.S.=> It's a way to put my point across, & I'm sure I'm not alone in that sentiment here, OR, having experienced the plusses of technical leaders (not just 'gladhander' babysitters that are overpaid, & ARE 'superiors', rather than literal inferiors in the art & science of computing) - I don't have to bother with that life anymore though (took me 30++ yrs. to break out of it & into my OWN business instead - much better, even though I loved the field)... apk
First of all You haven't said what country you are working in so I assume USA. Somehow USA people assume that everybody else lives here. Whatever. But it is important since the stuff you are asking is related to work conditions in given country.
> getting credit for their work
Probably irrevelant - they know their value, what they do and did so they need no patting on back.
> always having the break room fridge stocked
Also - whatever - people at certain age (I guess 30+) usualy tend to have own specific diet and also tastes so if you stock fridge with junk food or whatever it makes no difference since they probably go to lunch or ourder preffered food anyway. Just have a high-end coffe machine, loads of tea (you drink tea in US?) and maybe a blender. Food is individual choice.
> But I'd like to hear about the other things, big and small
1. As a manager - stand by them - whatever happens, if they do great, id they have some concerns, if they fuck up - stand for them as they are your people. Speak your mind to them but if it comes to relations with other business departmens you are the man to stand for the team.
2. Personally in my workplace I like a little flexibility in work hours - f.e. three times a week I go to work out at gym in work time - then I stay late the time I was at gym but I like it.
Have a look at the new book by Laszlo Bock of Google.
http://www.hachettebookgroup.com/titles/laszlo-bock/work-rules/9781455554799/
Every workplace and individual is different. A bunch of random people on the internet are not going to have better insight than your actual team.
Read Tom DeMarco on this -- I think the book is "Managing Programming People". In order to be productive, people need quiet and unmolested time. This means offices.
Also read "Slack" by DeMarco. In order to be happy, they need PROGRESS. And in order to get progress, they need time to solve the problems which come up which are not directly related to the deliverables. If you give them slack, you get less deliverables in the first part of any project, and way more by then end. You also have programmers not quitting.
Take a weekend and read everything DeMarco wrote.
Nuff said
Seriously. You're now the manager? Connect with your people. Listen to their ideas. Avoid telling them what to do as much as possible. If you have an idea, find out how to encourage that idea in others. Be subtle and don't try to flatter yourself for having ideas. Your job now depends on OTHERS manifesting them.
Then, go out and meet other people in the organization. Meet with other managers, process people, ask them what their job is and what they need. Become familiar with everyone. Your goal should be to be able to sit with anyone at lunch, and already knowing them well enough to have some meaningful conversation. If you're lucky, you will hear about stuff that is easily fixed, and can start making it happen.
Then start connecting with leaders, the top brass, if possible. By now, you know people well enough that you can slip into any setting. Find out what the company need IT for. If it's just to have the "IT machines running", you'll need to dig till it hurts, because that ain't it. Today, IT is part of everything a company does. How we improve? What investments need to be made? Without funds, it ain't going anywhere. So connections with other leaders will lead to more funds, eventually.
Outsourcing IT or seeing it as a cost center is usually a death-sentence for any modern company in the longer run. Find value and advertise it instead. Make change meaningful and fun!
It does require a unique talent for being a people-person AND enough technological understanding to make a difference. If you're able to do it, you're going to be one of the few real IT managers on this planet. Usually, the company sabotage itself before that can happen though. It seems companies love distracting their people to provide a fleeting impression of improvement and progress. Don't expect whatever you build not to be torn down..
If you believe that you are there to support your team then you've cracked it. Everything else flows from this. e.g. protecting your team from pressure from other departments, not harassing them with pointless processes, letting them choose what to work on as much as possible etc. I once worked for a great manager who simply called you into his office once or twice a week to ask what you were working on and whether you needed any help. He'd keep track of what tasks needed doing and let the team pick tasks for themselves. If anything was left over he'd assign it to someone. Good luck!
To er is human.
which gives you time to read slashdot at work
I get it, you want a broad scope of opinions, but don't forget to ask the six people you're managing. We can't tell you what will make them happy.
...run interference for their staff - minimizing the corporate cruft as much as possible.
Someone already mentioned reading DeMarco; also McConnell's "Code Complete", Brooks's "Mythical Man-Month", and Weinberg's "Psychology of Computer Programming." One interesting thing that came out of studies by DeMarco (et al.) was that productivity was most highly correlated with available space - maybe spurious, but something to think about.
Good quality, free coffee. Don't make them ever pay for coffee. Ever.
The best boss I ever had actually managed. He served as the conduit for all requests from other mangers and directors then set priorities, goals and time frames. He served as a buffer between our development team and the outside groups. It was great because it allowed us to do our jobs without random interruption and requests from people who shouldn't have been doing those things in the first place. He established processes to make sure that we had the requirements and goals before we took on a task. He set reasonable goals because he understood what it took to do software development because he had been there. I really miss working with him.
if you ever get to criticizing someone, treat them with respect and know when to back off. having someone walk out on you is the best case scenario, with someone going postal is the worst. if you treat people poorly, you can be sure that will come back to haunt you in the worst way.no holds barred, your life outside of work is free game
Good natural lighting. Quiet areas for concentration and common areas for meeting and brain storming. You might try the old "put some whiteboards by the bathroom and or coffee machine" trick. A nice break area is good too with plenty of palatable coffee and teas is good. It draws people together. The occasional payday lunch or pint after work on payday, either host or no host, helps people to connect as well.
Keep meetings short. Whether or not you are "Agile" a 15 minute stand up is a good way to start the day. Other meetings should never last more than an hour and you should ALWAYS have an agenda. It is your job as a manager to LEAD the team. Do not let meetings, or anything, drift.
Set clear goals. Say things like "We have to do X by Y with Z dollars". If they complain tell them you will try to get, but not promise, modifications and let them give you realistic parameters.
Be honest. Truly celebrate good news, do not try to sugar coat bad news. Be professional.
Leave room for growth and experimentation. Let them evaluate new tools but ask for a full report and review by the rest of the staff before adopting anything. Push them to be professional, it is in both your and their best self interest.
Listen.
A good work place is sort of an optimization saddle point of many factors.
OK, that is my list for now. Based on my experience as a lead and the good managers I have seen. It is Friday. I am going to have another beer and possibly
post more later.
putting the 'B' in LGBTQ+
I recommend you sit down with each of your employees and work on a plan to increase there 'market value' over the next year. Not value to the company, but value in the job market. They may ask for raises because of this, but the fact is employees are going to ask for raises in any case.
Lead by example - http://www.inc.com/magazine/20081201/how-hard-could-it-be-my-style-of-servant-leadership.html.
Be organized and your team will be too. Learn how to take good notes and be the note taker in meetings. Manage the wiki (and get one if you don't have one), make sure it's up to date. Get a Bug list and feature list for development.
Make sure there is decaf coffee.
Seriously.
Cube farm space. This dude is the most pissed off person I've ever worked with. Pounding the mouse, pounding the keyboard, 'not quiet' grumblings. Once he gets fed up enough (daily), he comes to one of the other of us, and starts bitching in person.
Nothing is good enough. There is always some problem, caused by 'them'. 'They' did this, 'they' are out to get us...
The days (or hours) when he is not in the office are bliss.
You, as a manger.....get rid of Leonard.
With luck yours might be the only place in the office that has power outlets that are at desk height.
You are concerned about the well being of your coworkers, hence I think you have good chances to succeed at improving it. Just do not loose the mindset.
1 - no more open plan offices
2 - no more placing your office in a downtown area
A clean quiet workarea with no visual or auditory distractions.
All I want to do is code all day long.
All you want me to do is code all day long.
Then, you bombard me with people walking by, talking around me, interupting me, IM'ing me, it never ends...
And I get NOTHING done... do you get it?
No, you never will. You manage by interupting me...
Sent from my ENIAC
Translator:
Mediate with reality as a guide between stakeholders and software/IT people.
Don't ever ask for an estimate then say something to the effect of let's try to get it done in half that time.
Live with the triangle and manage it. Something has to give. You decide what.
Waiter:
A really good waiter doesn't break my flow when I'm in the middle of a good conversation, and yet is there with useful solutions or suggestions when needed, and anticipates next needs. A good waiter facilitates a great meal experience for all concerned, by artful interventions and artful absence.
General:
Wins by exploring for and prioritizing risks and opportunities, well in advance. Uses an 80-20 rule. Get's er done. Earns respect by good personal example of doing the job well and consistency in the decisions and commitments of leadership.
Where are we going and why are we in a handbasket?
The "out of office" activities are great as long as
a) everyone does it - nobody staying behind and still grinding away
b) the schedule explicitly accommodates it.
Where I work, we have the horrible phenomenon of "activities" that might be something like "lunch plus an activity" scheduled from, say, noon to 3..
But a bunch of people don't show up until 1230 (because they were in meetings that ran long) and then a bunch of other people leave at 1PM (so they can get to their 2PM meeting).. and the managers bail out at 130PM (for their 2PM meeting that will start late).
Don't hire assholes. If you have assholes on your team, find a way to get rid of them quickly, and replace them with people who are not assholes.
I don't really care - and neither should you - if the person is the most technically amazing person that has ever graced the Earth. If they are an asshole, it will sow resentment, make your team less effective, and make your job harder in the long run.
Not sure if you have assholes? Start weekly 1-on-1s with each team member. These are good practice in general, to help find and solve problems before they become major issues. But you will also be able to pick out the assholes pretty quickly.
You may think I am being silly, but I am not. If you think back to any unpleasant experience you have ever had at work, I am willing to put money on the fact that it was caused by someone who was an asshole.
Ridding your team - and hopefully, your entire organization - of these types of people will result in a group of people who are willing to do anything for you or each other.
The world moves for love. It kneels before it in awe.
It all boils down to the important thing is removing the distractions. It takes something like 15 uninterruppted minutes to get in the zone where everything just starts to flow and constant interruptions screw that up.
Here is a handful of his blog postings on the subject, you should just read his entire archive, its all his opinion and view points but its pretty good stuff.
http://www.joelonsoftware.com/articles/fog0000000022.html
http://www.joelonsoftware.com/articles/BionicOffice.html
http://www.joelonsoftware.com/articles/fog0000000070.html
http://www.joelonsoftware.com/articles/FieldGuidetoDevelopers.html
...Even if he just has to pretend that he/she cares, I'd take that in a heartbeat any day. For example, I have worked many places, and one of the best places I've ever worked...was at Lego in Denmark (Their graphics department), the boss in there constantly wanted to know how I was, if I needed a break, if he could bring me some coffee or anything, and he didn't give up before I actually gave him a proper answer. My colleagues where playful and we often fooled around during the day, not wasting work at all...because of this we usually worked 3 times as fast because we felt so free that the work became inspiring to do. That's how I want my workplace to be. Makes me want to come in to work every morning, can't wait to do my job. Sadly, not a single workplace I've ever been to after that...has even come close to that work environment.
What this world is coming to - is for you and me to decide.
I hate open "agile" offices, cube cities, and such. I think software engineers/developers should have an office with a closable door - sometimes you need to pace and rant without upsetting your office mates. Good are common meeting areas where you can get together with your colleagues to hash out problems (need lots of white boards), or just spend some time to unwind. One of those whiteboards should be the kind where you can make a printout of the contents of the board.
I keep seeing all sorts of posts talking about how work perks aren't really free, but no one is accounting for a couple important realities. Number one, if that money were not spent on lunches, it would almost certainly not go to your paycheck, it would go into an executive bonus or shareholder dividend. Companies tend to set pay based on market rates, so if you're getting the market rate and a lot of great perks, chances are you're getting the best deal you're going to get, and the perks are effectively free to you. Secondly, companies have to pay various taxes on all the money they pay as salaries. Those payroll taxes do not apply to free lunches and ping pong tables. So there is some "free" money that gives the company the ability to spend more on perks than they could if they paid it out n cash.
Get rid of the benefit-dodging agencies that negatively affect productivity to obtain disposability.
Twitter supports and protects racists - by smearing their critics with the "Hate Speech" label.
There will be a million different right answers to this question. The problem is that the question is addressing the wrong crowd. Ask the people who work for you/with you what they want, what they find important. Stop guessing/asking strangers and just get to know people.
Read The Prince from Machiavelli and you'll get some ideas.
Here are some random thoughts (30 years of systems programming/systems administration and development)
I'm assuming the following.. The IT folks (I assume you mean system admin types that install/configure the network, and the base systems. The developers are architects/coders. And the devops person is someone who runs/manages the day to day operations.
Define the scope and duties of their roles.
A good work environment is one where people trust you and you trust them. Trust comes from communication. And I mean the clear communication that has a clear objective and purpose, not the management buzzword bingos that fill in meeting time.
Everything ends up tying back to good and positive communication.
Some insights:
- Setup an IRC chat. We tried many other group chat systems before, and we always come back to IRC. Choice of clients help as everyone will have their preference. There are also a lot of bots that can help also make it a more central communication hub. We have it with both our monitoring software and our build system. This help cut down on the noisy chatter in a dev area.
- Make sure that accomplishments are visible to the rest of the company. (If you follow real Agile/Scrum, that's your sprint review). This will help avoid the "cost center" label that brings underfunding.
- See if you can accomodate hardware/software requests. It makes no sense denying a well paid programmer a 200$ ram upgrade that can speed up his work.
- Bad news will happen. Your job will be to deal with it and to bat for your team. Don't throw them or a team member under the bus.
- Make sure the rest of the company communicates with your before going to bother your team. If need be, get a Scrum Master.
- You'll probably read a lot about offices vs open areas vs cubes. Cubes are a sucky halfway system. Open areas is better for communication but introduce distractions. Offices cut down on distractions but tend to create silos of knowledge. The best I've seen is an open area with offices available for meetings. If possible, get an open area that is not shared with non team members.
- Break down silos. Avoid having specific team members always working on the same system or module in the code. Its true that work will get done quicker by having the silo, however if when something breaks and that person is unavailable, its going to be much harder to fix it.
- Reviews: If the only focus of HR with the reviews is to have a paper trail when someone needs to be de-hired, they will always suck. Done properly, they are tools that can help your team members grow. You can ask your team member to fill out the form in a self-evaluation way, then have a meeting with them to see how their view of themselves compare to yours.
- Breaks are important. Be it coffee, lunch, paid break, evenings, weekends. They matter.
- Overtime only works for about 2 weeks, after that, the productivity level goes back down to pre overtime rates. There are numerous studies on this that have been published.
- Make sure that your team has all the tools needed to do proper QA. If your production environment is load balanced, then the QA must be load balanced.
- Whiteboards should be easily accessible, with plenty of fresh markers. At least have 2 more then the size of the team plus you. Whiteboard paint isn't so good as its much harder to clean to do the orange peel effect.
- Team lunches are nice, get some budget for them.
- If need be, fire the bad apple in the team. If someone is always disruptive, produces low quality code, keep messing up, is rude, you need to let them go. It sucks and its a very hard thing to do.
Agile / Scrum:
If you follow it this is critical:
- Do not skip the retrospective. This is critical as that is the way the team will improve.
- Make sure that all changes to a sprint go through the PO. The PO will need to remove the equivalent amount of work from the sprint. Ensure this happens.
- Internally, plan a buffer of time for miscileanous improvements. Let the team decide and take charge of that time. Do not let additions to a sprint chew up that time.
We used to take it in turns making coffee for everyone.
Pick up the tray, go around pick up everyone's cups, list of preferences in the tea room, return with coffees and cookies.
You get to know everyone, have a quick chat, stay wired all day, get away from the screen, move around.
But the main thing is keeping up the communications.
Go well
The best way you can improve the work environment is by improving yourself as a manager.
Next up is improving the standing and influence of your department within your company.
You might not end up with a stereotypical postcard of an office space, but you'll have an office full of confident people who work hard and don't stress out about ridiculous details and aren't worried about their jobs disappearing.
This is all "strong manager" "upside-down pyramid" stuff, and you need to be fearless.
1. isolate and drive out prima donnas, everybody else on the team will secretly worship you for this. Tell them what you want and when you want it, and hold them accountable. Be friendly but don't be their friend, be their protector and task master.
2. isolate and drive out anybody who can't row in the same direction as everybody else, can't follow simple rules, or who threaten order by failing to restrain their idiotic contrary opinions. Those who are here for a quiet paycheck and to support their families and obligations will appreciate this, and they are the people you want on the team, as long as they are talented.
2.5 show your willingness to pull someone over and enforce basic decorum. If they shit a brick, tell them to clean it up or get out. Now you're actually the boss. Before this moment you were a pinata.
3. establish a business-first, individuals second environment, while generously rewarding initiative, talent and hard work. Reward people who strengthen the team and punish people who weaken it. Avoid using favoritism as a reward mechanism, instead use praise, new responsibilities and stature and most of all money, if it is available.
4. use your demonstrable "tight ship" to gain favor with management, opinion makers and people who control funding, and make sure the team knows what you are doing to strengthen your groups position within the organization.
5. get on board with compliance-related matters, volunteer to be involved in security intitiatives, PCI, SOX, anything approaching governance is what you want. It will show that IT is more than a niche and can be trusted to sit at the big table for the real, future-determining decision-making. You want to be in the Monday meetings. Study the business of business, you need this to be take seriously.
6. absolutely don't allow any individual team member to gain a sepcial advantage and justify it by their "special" talent. If you are already in that position, find a way out immediately. You're trying to build a system with interchangeable parts, not a confederacy of cults.
7. the whole stocked fridge, ping-pong table, free soda, etc. is simply ridiculous. If other departments don't have particular perks, yours shouldn't either. Use the elimination of this crap to your advantage the next time reductions are called for.
8. be completely transparent in your motivations for the team, teach them that you are a straight shooter.
9. listen attentively, interact, and take action. Don't let even the smallest concern go unaddressed, and apologize when you forget things. Your staff will lay a lot of lightweight stuff on you that is only irritating, some day you may lay heavyweight crap on them that alters their livelihoods.
10. Be good to your staff, work your ass off, and follow all of HR's rules, they're there for a reason. Don't make lack of rule-following the hill you die on, or you won't be there for your staff when the real shit goes down.
11. Show them that you respect them even when you disagree with them. Stand up when they enter your office, offer them a seat, and take them seriously with whatever they have for you. You owe it to them. Don't let people interrupt or dominate each other - you make the rules and no one else. Stand up for the passive people to make sure they are heard, but don't coddle them, they need to learn how to participate. Be consistent and fair in all things large and small.
12. make as many work friends outside of the department as possible, the more the bett
Give some sort of budget for workspaces. I may want a bigger screen, while my neighbor may prefer more ram and the other guy may prefer to keep his PC for an extra year so he can have both. A little flexibilty to design what works for ME goes a long way towards keeping me happy. Just be sure to keep it somewhat balanced so that the people not on the favorite team don't feel disenfranchised.
go read "peopleware" by demarco and lister. this classic addresses what makes a productive workplace in creative technical work. indispensable.
This is not a only a IT worker, it according to your manage ability.A team we could not made every to be the bes, The best you do is make the 60%-70% workers do their best.So i could say you are a very good manager. You should know No one could make everyone do their best.Only most, So you should pick up the 60% you as your person and dig their potential.A company 80% business are creat by 20% man.So this is what you should pay attention.For you are a small team and you do not have so many workers. Try enter their life make them become your friend, this will help you, i should say it is hardly make every to be your friends , but the most is possible. After you did this, Then you could according to the shortage or advantage of everybody,make some plans,Know the real inner of your stuff.I think you could do it well.
Lifful the global supplier of Automobile,Electronics,Home&garden.Lifful better your life. www.lifful.com
You don't need to think or ask because there are a lot of studies about this. E.g.
- Two monitors
- Real plants
- Low noise levels
- Good managers
- Ability to decide about your own environment
Search for the studies.
If they know what they are doing, give them flextime. About free food, I would not get into that. Each has their own preferences. As for coffee, I enjoy a free coffee once in a while, but going for the cafeteria is a good excuse for a needed break or informal meetings. Rid me of the bullshit meetings with the bosses, and worse it of the petty RH affairs. Try and avoid people walking in all the time on the office. Better create a meeting zone out. Enforce the Helpdesk approach. We also well know the performance meetings do no mean anything, they are just show and tell. Unless they translate into raises (most places never do), try and make the method more informal. Want to create more perks? Also no room to give raises? Give people training.
I'm not overly fussed by 'perks' such as pool tables, games consoles etc. I've been a dev for 15 years and I think I've been roped into perhaps 3 games of pool during that period. When I was younger and green... these things seemed important. Really, they weren't to me and most of the people I see working. Generally the people I see using these facilities are Human Remains, Marketing .. not the people who create the products that keep us going. We need something different.
Frankly, the biggest thing for me is concentration and transport. I'll deal with the first. A quiet area with not much visual distraction (ie people walking past my eyeline). For me, 'feeling' as though I've had a productive day is paramount and generally co-incides with greater work output and I feel content and a bit happy. This sort of environment makes me want to come at work, stay till the job is done right, go home and relax knowing it's burbling along. I've recently been placed in another "open plan" office. Whilst I accept that this is a cost-saving and attitude-adjusting environment to re-enforce the 'you are a small cog in the big machine and not really as irreplacable as you'd like' .. the problem is that I don't enjoy coming to work, don't feel productive, don't enjoy being on a long bench with someone next to me half an arm length away. I try hard, but dislike the environment, can't concentrate for long, I'm definitely less productive than $old_office, and am generally clock watching.
Transport. Make it easy and quick for me to get to work. Provide free car spaces. Lots of free car spaces. Public transport bites when I live less than 20km away and it takes >1 and three quarters of an hour to get home.
It's amazing how much these things have had an impact on me. I really like my cow-orkers and get on like a house on fire with them, but the environment makes me continiously not want to be there.
So. Find a happy balance for your devs. Give them room to quietly get things done and concentrate on issues. If there's a pool table or ping-pong and some love to do that, fine.. but remember to try and create both the environment and the transport to get to the environment that encourages what the company actually wants.. which is consistent and good quality development.
The AC who said "more money"? I don't want to work with people like that. Sure, money is important, but it doesn't make the work environment pleasant, it just motivates you to not dropkick the job out the window. I've known some very well-paid people who were profoundly unhappy with their jobs.
Assuming you have decent, halfway qualified people, the best thing you can do is respect their skills. Don't micromanage them: make sure they know what their tasks are, protect them from outside disturbances (make sure that task priorities come through you, not through some idiot stopping your people in the hallway), and let them get on with their jobs. Give good feedback, and don't forget the praise when they do something well.
Enjoy life! This is not a dress rehearsal.
Read the book The Dilbert Principle. That should give you a fair idea on how to trust whome, and how to align and channel everybody's energy in the right way, without blocking their source of energy.
I have been in a similar situation, and what worked very well for me (just as keywords, just google it or get a book): 1. make the work, priorities and non-work visible through visual management techniques (Kanban Board etc.) -> see Lean 2. explicitly limit parallel work, think of your team as a laser not as a lightbulb 3. talk with your team about how different decisions are made, try to keep the decisions with the experts (them): see delegation poker or delegation board from management 3.0 4. They want to make the right things, really: Think about all information they need to do make the right decisions, (from business perspective, not limitied to tech) and provide them with that. Trust them. 5. remove non-work items. Meetings, calls, e-mails, etc. my most happy and productive current team does not own a phone, and has received less than 1000 mails in one year, including notifications - 8 people.
- When possible Hire people that are smarter than you.
- Learn the strengths and weaknesses (often related to likes/dislikes) of each member and try to tune their personal job to their strengths.
- Do not ever allow competition within the team to foster. It leads to people coveting information which is a bad thing in a team.
- Do not allow "bullshit answers".. Let your team know that any questions you ask, either answer becuase you know the answer or answer truthfully that you don't know but can research and get back to you with full answers. People love to look like they know answers, but often fill in 'gaps' with guesses or wrong information. Never allows this to happen.
- With a team vote: Decided if everyone shines or fails as a team or individual. A good team will always choose to present their success or failure as a team.
- Some employees will naturally try to bluff and push you back to test your position, don't be afraid to drop the horns and show the bull. As much as you want to friends with everyone, sometimes you need to be the asshole to center the team blame on you. Ultimately you're not there to make friends, you're there to produce a result.
And a thousand other things, real Joel Spolsky's blog for lots of insight into good management.
Whatever you do, don't ask for TPS reports! http://www.youtube.com/watch?v=Fy3rjQGc6lA
Not having senior coworkers who are cock suckers to you every single day.
You want to be a good manager, who cares for his people, and that's a good starting point, but I think you are on the wrong track. In my experience, what people really want is things like genuine respect and recognition for genuinely good work. It could be monetary rewards, but it could also be praise, a simple 'thank you' or being taken serious.Whatever you do, don't get into idiot 'reward' schemes where people get a choice of glitzy crap that only a sales droid would fall for - I worked for a company with that sort of thing, where you had to go to a web site and claim your reward; I was rewarded like that a few times, and I always decided that I'd actually rather not have any of it.
Secondly, to be a good manager, study the concept of 'servant leadership'; you will find there's a lot of quasi-religious and pocket-philosophical claptrap surrounding this, but it does not mean there isn't a core of very good sense in it. Some say that managing engineers is like herding cats - if you genuinely understand what that means, you'll realise that you can't; cats and engineers are not sheep. A cat will follow your lead if it feels you understand and respect it, but not always and sometimes in a surprising way; an engineer will want to find his/her own way to the target you set, and sometimes surprise you with a solution that better than you could have imagined, where your target turns up as a minor consequence.
I'm not expecting that my boss will always do what I want. I will settle for the knowledge that when I say something, my boss actually pays attention to what I say and gives it fair consideration. If you want to lose me, ignore me (and then expect me to clean up the mess that occurred because you ignored me). Remember, you are the manager; you are NOT G-d. Your people do know more about some things than do you, and you know more about other things than do they. If you work together, you can maximize your strengths and minimize your weaknesses.
linquendum tondere
Can't have it if leaders aren't really "superior" & can't do a job themselves.
* You're telling us it's best to be LED BY INCOMPETENTS, for Pete's sake!
APK
P.S.=> Tell me this - If a man hasn't played chess before, would you trust him to tell you YOUR next move? I wouldn't... apk
* consistent management, with constant goals over a year
* doable project deadlines
* fair distribution of responsibilities and influence
* colleagues who are professional and competent
* HR which actuallty understands it works for the rest of the company
First of all, ensure that there is honesty in all things - what projects are coming up, how much overtime will be required and when, what are each teammate's prospects for bonus and promotion. Encourage everyone to discuss it with you and each other. The later is legally protected at least in California, but still nice to acknowledge.
After laying all the cards open, trust your reports to be responsible adults. If someone is not able to finish the project on time or is not reachable during off or even work time, assume they have a good reason. Over time, you may learn otherwise and some people may need to be given warnings or even leave the team. But even a single episode of pestering when someone is, say, home taking care of a sick kid will make a good employee look for another job or at least kill enthusiasm for long, long time.
Finally, do things to make employees feel appreciated at least every couple of months. Hold beer keg parties. Give out swag after successful releases. Close the office and give everyone an extra paid day off after a crunch week.
If you hire smart people and do all of this consistently, you will not only get outstanding results but also turbo charge your own career.
A lot of other posters have focused on other aspects of the workplace and opinions are all over the place. As a manager with a few years behind me in that role, I want to focus on one of the last areas you mentioned: HR and corporate.
They're the developers that do the actual work that makes money. Your job is to enable and encourage them to do that efficiently. (This goes for every other kind of productive work too, whether it's developing code or manufacturing widgets.) So there's time management and making sure they're on task but one big thing you can do is INSULATE THEM FROM CORPORATE BULLSHIT. Dealing with the bullshit is YOUR job. As much as possible, you keep it from affecting them and their work. If they are more than vaguely aware of HR policies, that's usually you not doing your job.
Another aspect is to insulate them from each other's bullshit so they don't detrimentally affect one another's. Sometimes that's necessary, especially if you have one or more primadonnas on the team.
To make reviews not suck (as much):
1. Keep a log of the assignments you give each person, the times when they agreed they would be done and when they actually were done and the quality of their work.
2. Most corps will make you or them define "goals" each year. Make sure those goals are in line with what they should be doing anyway. Have frequent meetings with them either as a group for group goals or one on one for individual goals and ask them about progress. Provide a sounding board about them.
3. Come review time, you will have a list of the things they accomplished, an assessment of how well they did them and how timely they were and their goals will either have been accomplished to your satisfaction or you will already know the reasons why.
4. When there are problem behaviors, talk to your devs about them right away. Never leave them to review time.
The review is then mostly just a summary discussion of the stuff in your log, unless they were a problem. You identify the qualities that helped them get their work done and any problem behaviors that came up repeatedly. Compliment them on their good behaviors again as you should have throughout the year. Summarize by saying how they're doing relative to your expectations. (Not relative to other team members -- they can all be doing great or they can all suck.)
At a lot of companies HR will require you to fill out some form that addresses behaviors and goals. You have to do that, and you have to nominally discuss it with your employees. But keep that as terse as possible and then put your real assessment in the overall comments area or on an attached document. Make it clear that what's important to you is not the HR form but what they do every day, that their actual work is valuable to you and the company.
I run an IT department at a medium-sized firm.
Here is the most important advice I feel I can give you:
- Be flexible with their work schedules and locations when appropriate. If they feel you respect their personal life, they will give the extra mile in their work.
For instance, if the dad needs to pick up his daughter or drop his son off at the birthday party, or run some personal errands in the morning, let it be - they will appreciate your understanding of their priorities. You give them that and they will give you everything. It's mutual.
I let my team go work out on their own time, come back for a shower, walk their dog, and take care of personal business throughout the day, as long as they're reasonable. This has yield outstanding results and performance.
One word of caution is that whoever you allow to do that, will need to have good self-discipline. All my team members do and understanding what it means to self-regulate. Those who are mature will respect it.
Do not underestimate how much of a hindrance to people's work performance when you force them to be in the office and make them pretend to be working from 9-5. Let them have some control of their daily lives, and their results will shine.
- An IT department supervisor
If you have an on-call rotation, then put a dev and an op guy on call at the same time. Have your ops+devops guys rotate on 1-2 week shifts between support and writing tools for the ops and dev teams to improve things. Include your ops guys at the meetings at the beginning of any project.
Get rid of the BS "open collaborative environments" and cube farms. Let people work in peace and quiet. If they want to talk about something, have conference rooms available.
The best place I've ever worked followed this philosophy: Focus on the user, be transparent and collaborative, and give everyone huge amounts of autonomy. Follow an agile methodology. No middle management allowed. Decisions should be made by consensus of small teams closest to the problem. If you can't reach consensus, only then does your job title materialize ensuring rank is pulled sparingly. The team evaluates their peer's performance anonymously and bad performance gets you fired.
This works incredibly well but requires hiring competent staff who are self motivated.
Probably NSFW
In my personal experience as an employee, if it's possible for you and your company, allow them to work from home once or twice a week either through Remote Desktop/VNC/whatever on the company's VPN or bring a laptop home. If your employees are responsible, working from home means less interruptions, greater focus and therefore more productivity. It also means less commute for them and more free time, less stress and they can take care of home chores like doing the laundry while they work or take their time preparing dinner. It's also easier for them if they have kids since they can just be there when they come home.
I think in any company two things are essential for a good workplace environment: - immediate acknowledgement of a job well done - letting everyone know what is going on Especially the second point is important because it goes way beyond the scope of the current project, it needs to include information about business decisions, financial performance, and personnel issues as far as it is allowed to share this. With this everyone knows where they are at and where they are going.
It's a marathon, not a sprint. There is always more to do.
Keep the team focused on what matters. Most deadlines are artificial. Don't try to do too much in too little time. Most of December is vacation/holidays so don't treat it as a 30 day month. People get sick, take vacation and equipment breaks. If people are spending lots of overtime every week to get things done, you're doing it wrong.
First, get to know your people, their strengths and weaknesses. Make assignments according to their strengths, and do not commit to projects that have holes in skills you need to complete them. A project needs the right mix of personnel, time and resources, not hopes and prayers forced by inept management.
Second, your first job every day is to untangle knots and keep the path clear of obstacles for the development process. If there is a technical problem, see that it is solved promptly even if you need to go outside for help. If it is a sick employee, a lost file, a snowstorm, make whatever alternate arrangements are needed. Make sure everyone on your team knows that moving ahead is not just a goal, but an daily activity.
Third, set the standard for quality work, testing, software engineering, test suites, user involvement in the testing process, and keeping the libraries and repositories clean. If the team cannot be proud of their work you will get garbage. Make sure you sell this quality to management.
Finally, keep the management monkeys from tripping your software people. I once had my best developer sidelined to work on the VP's personal computer glitch. He was told not to let me know. Don't let that ever happen to you. The team needs to talk to users, but they are not paid slaves to every management whim. That includes such things as the "feature of the day", the "crisis of the week", and "fiscal year end billing push", which has cost me many Christmas and New Year's holidays.
Arrange for ongoing skills upgrades and budget for new tools as they come through. Carry the vision for the kind of development your tema does now and into the future. Be fair in your dealings, and take you turn cleaning out the filthy microwave once a week.
Keep in mind perks paid for by the company are a great way to dodge income taxes, and thus be a higher quality than you would pay for on your own dime. Of course, this is more important if you pay them well enough for this to matter more.
Examples of expenses I would pay for anyway, but essentially get income tax free:
- Food and coffee
- home computer
- home Internet (fastest my local ISP offers)
- gym membership (that can be used for any physical activity, e.g., ski passes, martial arts, personal trainers)
- private school for children (this is a huge since our public schools suck)
- professional memberships and dues, e.g., ACM, meetup.com, github.com
- any work related book, manual, or specification
Anything that makes life easier for your employees will make them want to stay and work hard for you. One that wasn't a tax dodge for me, but extremely helpful when taking the job, was fronting part of my first year's salary to help make a down payment on a house.
As a manager I'm always on the lookout for those types of "revenue neutral" things that can really help an employee through life, but really don't cost the company more money, just a bit more paper work.
There are two good things that managers do: get their people what they need, and shield them from upper management.
A manager once found us a System/360 with a paper tape punch in Detroit so we could recompile the software we was installing at Michigan Bell. We had to use it on third shift, but it sure beat having to come back to New Hampshire for every bug fix.
A different manager told us that one of the mechanisms he used to shield us from having our priorities changed so frequently that we never got anything completed was "That horse has left the gate." He took the position that once we had gotten a project to a certain point, we were going to complete it and deliver the product, even if Marketing no longer thought it was the most important product we could be working on.
I've been around the block a few times and worked in a lot of different environments. The best ones have had a mix of private offices and available small-team rooms combined with management that knows that their job is to create an environment most conducive to the development taking place. That includes:
* Make sure requirements and expectations are clear and complete. If stakeholders know what they're getting and are comfortable with it, they're a lot less likely to feel that they have to intervene to "help things along".
* When the market changes, manage the impact of those changes on your development schedule. Again, stakeholder management is crucial; if they understand that the situation on the ground has changed and what they get has to change as well they're a lot less likely to get the creeping anxiety that leads to micromanagement.
* Minimize noise and interruption when the developers are in a flow state. Older developers know how important this is; younger developers (I have worked with) think they're better at multitasking than they actually are and think they're better at slipping in and out of flow like they're changing lanes of traffic. Designing and building any kind of system requires a 3D (or higher) mental model of the system and it's very hard to build and maintain one of those when you have to put up with a stream of people walking by your desk or random loud hallway conversations or people having speakerphone conferences two offices or cubicles down at the top of their voices. Private, quite thinking and working space is vital.
* Keep other managers out of the developers' hair. This goes along with helping the developers maintain flow.
And, since this is a two-way street..
* Keep the developers on track in a supportive constructive manner. This normally means "management by walking around" (or its technical equivalent like Kanban) and seeing first-hand what your developers are doing, but try to do it without hovering or nagging. "How's it going? Is there anything blocking you that I can help with? No? Cool! I'd love to see this working; when can we take a private look at it?" are all ways to say it and sound like fanboy (or fangirl), and nothing succeeds like a compliment.
* If needed, crack the whip. If it gets to this point, someone has failed in the hiring process or in managing the environment and own up to it. If you've done it right, the team will almost do your work for you since good *experienced* developers know when they've got it good and won't allow a laggard or screwup to ruin it.
I need only three things.
1) Tell me what you want done, when you want it done, and listen when I tell you what's actually realistic.
2) Trust me to do what I say I will do. Don't pay any attention to when I show up, when I leave, if I show up to meetings and if I'm paying attention to you or to my laptop when I do bother attending. Pay attention only to my results.
3) Give me feedback when I ask for it. In step 1, I'll tell you when iteration 1 will be done ready. Take a look at it when I present it to you. Give me feedback so iteration 2 will be more like what you really want. If you don't the final product will be what I want, not you want. You'll be stuck with something useless (to you) and I'll have padded my resume with all the latest skills so getting that next job that pays more will be a breeze.
Who the heck cares about coffee and ping-pong and any of that other crap.
You really only need three rules:
- no slurping of drinks
- no eating with mouth open
- no tapping on the desk as you walk past, whistling as you work, or other annoying stupidity