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'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.
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
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
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.
Jesus, you're paranoid. If I was put in that situation, aside from reading a lot of books, Slashdot's one of the first places I'd go for advice...considering we're the same kind of people he'd be in charge of. Remember when comments here used to be valuable?
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
You know I really really want a Sims game that's specifically office management now. Theme Hospital was the closest thing and it's old as hell and not even that similar.
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.
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.
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.
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.
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.
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+
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.
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.
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 first place i would go would be to my staff. There's only a few of them, just ask them what they want from a manager - that'd be a fucking first!
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.
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
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.
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.
And if you cannot give an office, at least try and enforce some common sense rules. No music at all, people bring their headphones, and no loud servers on the open areas, there are, or there should be rooms for that. Strictly off limits to clients, customers or partners. You have meeting rooms for that.
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.
. If your a professional with more than 2 years of experience and can't figure out what work conditions help you focus and what work conditions don't, you should probably just go work at McDonalds and save your boss the hassle of firing you eventually.
So after 2 years you had the self-awareness and experience to know whether you worked most effectively in open-plan or offices, the benefits and needs of teamworking, the balance between heads-down time and communication and collaboration, the motivation curve associated with increased pay, the multiple other ways that you could be motivated, the optimal work/life balance that you'll need over the next several years and how best to achieve it and the forty other things that vary across a team?
I know that I didn't.
Mmm. Sim Architect. Throw in some complex material choices, start with a garden hut and work the player up to a skyscraper or a sports stadium.
It's all easy until you're trying to factor in water pressure at half-time and every toilet in the stadium just flushed, or a goal is scored and 40,000 people just jumped in the air and landed at the same time - assuming you didn't create a Hillsborough style crush through poor entranceway design.
I'd rather have a good manager with poor technical skills than the inverse.
I don't need my manager to be able to do what I can do. I need them to trust me to do it, and to let me get on with it.
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
* 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.
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.
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.
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.
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 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.
What color do you want that bike shed?