Archive for the ‘Software/Web development’ Category
Found this nice observation on work culture, that could fit in the ever growing asshole driven development list:
HiPPO – Highest Paid Person’s Opinion Wins:
“HiPPO’s rule the world when it comes to creating customer experiences. And that’s a bad thing. No matter what you think the optimal customer experience should be on the website it is quite likely that you walk into a meeting room, or office, and regardless of your competence the HiPPO decides what goes on the site.”
This is part of a longer post on how to overcome this for marketers, called Experiment or Go Home.
It’s a common thing among high level managers to poke at visual design issues – it’s an easy way to give the pretense they’re involved, or to remind people they still have power, without doing much work.
(via Bhooshan, via Dan)
Hi there. I’m now back from my ramble through Scandinavia.
If you were at my seminar in Milwaukee (we had many questions on estimates and schedules), or struggle with bad estimates somewhere else in the world, you’re in luck.
Next week my friend Steve McConnell is doing a free webcast on the ten deadly sins of estimation. As if the regular sins weren’t bad enough, these are the ones that kill. Registration and details here. Tuesday June 23rd, 10am PST.
And here’s more stuff from Steve’s consulting firm, Construx, on estimation:
There’s a new book, soon to be released from O’Reilly called Beautiful teams, edited by Andrew Stellman and Jennifer Greene that i want to give you a heads up about.
I’m a huge believer in teams. Team sports. Team players. Team leaders. It’s all about teams. Show me a great project and I’ll show you a good, or not totally sucking team. Show me a project in trouble and the first questions I’ll ask won’t be about methods, schedules or technologies, I’ll ask about the team.
I’m also someone who hates bullshit. Who gets frustrated by phony stories about made up concepts on how good teams are nurtured and how great teams function. I want the real stories from the people who were there. I want the dirt. I want the scars. I want it all.
So I’m thrilled to tell you O’Reilly is finally publishing a book on teams, with chapters from two dozen luminaries from the software world, on what they learned from the teams they worked on. Tim O’Reilly, Cory Doctorow, Grady Booch, Steve McConnell, Barry Boehm, Karl Fogel, Johanna Rothman, the list of kick-ass names who contributed to this book goes on.
The book is called Beautiful teams: Inspiring and Cautionary Tales from Veteran Team Leaders.
I was lucky enough to be asked to make two contributions to the book. A chapter about my experience on IE4 called “Why Ugly Teams Win”, and an extended interview with Steve McConnell about good teams and how they’re made.
As a kicker, profits from the book aren’t going to contributors, they’re going to charity – Playpumps International to be specific.
You can pre-order the book now at amazon.com.
Christian recently asked, in a comment on how project managers get power:
“…I only had a job because of the programmers…â€Â
Wow, this is humble, in the good sense! But how did you treat those infamous programmer-jerks? How did you handle rough inner team situations?
The best place to start is empathy. Why is someone acting like a jerk? There are basic psychological reasons for this: Either they are insecure, they are unhappy, or they are angry about something.
Ok, there is a fourth reason, that they are psychopathic hell spawn put on the earth to torture all living things in a 10 foot radius, especially you, but lets assume that’s not the case for a moment.
In all three cases it’s possible they have good reasons for behaving like a jerk. Perhaps they are angry at upper management for the same reasons you are, but they see you as part of management (which, if you’re a PM, you are). Or maybe their last project manager was incompetent. Who knows? Not you. You don’t have a clue.
Odds are good it has nothing to do with you – it has to do with how they feel about what’s going on around them. Starting with a little empathy opens the door to finding a solution. If you start with “Fred is a jerk so I will treat him like one” you are likely perpetuating his reasons for behaving like a jerk, and everyone loses.
That said, there are four assets you have: charm, ability, roles and allies.
- Charm to connect. Being likable goes a long way in dealing with people. I don’t mean false niceness or being a cheezeball. I mean using your sense of humor, your natural generosity, your shared interests with someone to establish some basis for positive interaction with another person. It could be almost anything, but look for it. Good morale events help make these connections happen. If you happen to like Metallica, or Porsches, and they do, you now have something positive to talk about where it’s safe for everyone to share and connect.
- Demonstrate your ability to help . If they love making great software, if that’s really what they want, then you just need to show you can help. Even if it’s just helping meetings run better, or eliminating stupid annoyances in how decisions get made, defusing politics, reducing meetings, etc. There are a thousand easy things a decent PM can do that the programmer will noticeably benefit from. Start by asking “what can I do to make you more effective? more productive?” And listen to their answer. Do some of what they ask, come back and ask if it helped. Even if it’s a small thing, you’ve now built a tiny basis of respect for how you can help them.
- Agree on the roles you both play. More than half the time PMs suffer because people do not understand what the PM is doing. What you need to do is sit down with the programmer and make three lists: what I do (write specs), what you do (write code), what we both do together (triage bugs). Invariably there will be disagreements as to who does what work, but by listing them you’ll find all the sore spots in your working relationship. If you strongly disagree on roles, and he thinks you should wash his car, you should be able to go to your respective bosses and ask for clarification.
- Get help from your Allies. Which programmers do you get along with best? These are your allies. Ask them for input on working with Fred. Get their perspective on the frustrations on being a programmer in your organization. You may be able to see Fred in a different light. Have other PMs worked with Fred? What insights do they have?
Of course if after investing some of this energy you decide Fred is, in fact, demon spawn hellbent on destroying all positive energy in the universe, talk to your boss. If Fred is as bad as you say, others will complain and it will become your managers job to solve the problem (fire Fred, move him to more isolated work, get him a therapist).
Most of the time the real problem is people not sharing goals, and not listening to each other. Two things that your average project manager should be good at identifying and resolving.
See also:
- By Scott Berkun on December 30th, 2008
- 1 Comment »
- Software/Web development
Jurgen Appelo over at Noop.nl put together a list of the top 100 blogs for software developers. My blog, the one you’re reading, slides in at #18, which is surprising given how little I write purely about software development these days.
Happy to be on the list – and if you now realize you hate this blog because of it’s lack of emphasis on making software, you now know where else to go.
- By Scott Berkun on September 30th, 2008
- 1 Comment »
- Software/Web development
Running a bug bash is a dirty secret of software development. You won’t read about them in software engineering classes, or in agile method workshops. But some managers, when overwhelmed with undocumented bugs and not sure what else to do, demand the whole team stop what they’re doing and get as many bugs into the bug database as possible. This is what’s known as a bug bash, and often they’re a waste of time.
It’s true that a proper QA effort, or test-driven development, minimizes the need for this sort of thing, but few software organizations truly qualify. Hell, many so called “first class” organizations don’t have any testers, or a quality assurance plan at all. I bet bug bashes are one of the most common QA techniques used in the world.
And they can be useful – but the most common mistake is doing them by half. A half-assed bug bash sends the message software quality is lip-service. But doing it the right way can turn a project around, raise morale and sharpen a team’s ability to find and manage issues.
How to run a successful bug bash:
- Don’t create panic. If you say “Tomorrow! Everyone find bugs! Aaaah!” You are creating a panic and look like an idiot. You should know a week or more in advance that the bug counts are soft, or the database needs scrubbing, and line up leads and key players to support the effort.
- Freeze the build. You can not do a bug bash on a moving target: you invalidate repro cases and bug findings. Pick a build, freeze it, and make sure no one, NO ONE touches the live codebase during the bugbash. This should go without saying, but you never know. If it’s your first team wide bugbash make sure the entire programming team understands this basic rule.
- Show what good bug reports look like. Remind everyone crappy bug reports create extra work. Provide two bug report examples: one good, one bad. In the good example show well written description, clear repro steps, and a search for duplicate bugs. In the bad, show incomprehensible descriptions, impossible repro steps, etc. If you don’t provide examples, don’t expect people to magically know what you’re looking for. Finding 1000 crappy bugs that need to be heavily cleaned up is a waste of everyone’s time.
- Have an area or type of bug to focus on . Saying “find bugs” is a shot in the dark. It shows you have no clue what’s going on in your project. Think through what the weakest areas are, or what types of bugs you are most afraid of, and designate them the primary goals of the bug bash. Or offer bonus points (e.g. bugs in area 6 are worth x2) for people who find the specific type of bug most valuable to you.
- Clear the afternoon from everyone’s schedule. A bug bash should be an entire team activity and a half-day is the perfect amount of time. Everyone should be working on the same goal: getting good data into the bug database, and getting that database in shape. If it’s voluntary, or only half the team is asked to do it, the bash will fail. People will smell you’re not serious about the effort, and will contribute accordingly. Get permission to reschedule all team meetings for that afternoon to later in the week, and send out a new meeting invite to the team for the entire bug bash time slot. Include details (see below) on where bug bash HQ is, what the prizes are, etc.
- Get support from big shots. Brad Silverberg, my VP on Internet Explorer 4.0, used to file bug reports regularly. When bug bashes started he’d set the tone: everyone gets involved. With the support of leaders it sets the tone of how important the activity is, and eliminates the BS excuses people find not to participate (“If Fred, our best programmer is doing it, I should be doing it too”). Find the key players on your team, either key leaders or the star programmers, and get them to help promote and contribute.
- Have a bug bash HQ. Finding bugs can be a social activity: have a bug bash headquarters. Grab a conference room, order pizza and beer, and invite people with laptops to hang out and find bugs together. This invites people to help each other find repro-cases, share knowledge and bug database tricks, makes keeping a scoreboard easy, and makes the bug bash a proper morale event. A case of beer and few pizzas costs $60. Well worth it.
- Keep score and have real prizes. Geeks are competitive. Use this to your advantage. Any bug database allows queries for open bugs by date: Get this up on a website or hallway monitor and show it in real time. Buy some nerf weapons, dinner gift certificates, or even some X-box video games, and have them visible at HQ – give them away as prizes, or set up a betting pool: $10 per person, and the winner gets the pot. You can get fancy and have special prizes for most twisted bug, the bug least likely to ever get fixed, etc.
- Create rival teams. If you are totally poor, use ego prizes. Have the designers challenge the programmers, or the marketing team challenge the management team. Throw down: “I’ll bet the whole marketing team dinner at Ruth Chris’ my 3 reports can find more bugs than your whole team can”. If you don’t have cash, bet embarrassment: loser shaves their heads, has to dress in costume the next day, has to wash the opponents cars, etc. Get two sets of people who have some built in animosity or rivalry, especially if it’s well known, to openly challenge each other. This rivalry will draw more people in, if only to follow along. Do this once and you’ll have a tradition to build on for the next bug bash.