Making Changes to an IT Business?
everythingeverything asks: "Recently the IT development company I work for has undergone many changes, mostly focused on the streamlining of the development teams. Three people have recently been laid off, and massive pressure is being exerted on myself and my colleagues to develop more efficiently and delivery bug-free code. This is great - very positive changes. However it's blatantly obvious to many of my workmates that the sales and accounts team are not meeting their end of the bargain. They consistently oversell our services, write incomplete and inaccurate project specifications, set deadlines and budgets without consulting a TA or a developer, and frequently give in to clients when they want to change the spec halfway through. Management have agreed that there are problems and we have given them detailed research and documented solutions, but nothing happens. How have other employees in similar organisations brought about an effective, non-hostile and mutually beneficial resolution to the problem?"
Perhaps the best model for an IT company is an old fashioned one -- Start small, don't spend money you don't have, and try to keep your customers happy. If you try to go at breakneck development speeds on a skeleton crew, you wind up overextending the company, becoming unstable, and then falling apart after a few bad quarters.
Slow and low -- that is the tempo.
Got Rhinos?
The only reason they get away with this is the the uppermanagement has let this happen. Your boss should be standing up for you, your projects, and your teams outlook. If you have problems with the salesmen the way you say, you should get them all in a room with everyone involved and figure out who is saying "you guys do this". Why on earth would uppermanagement want to saddle down the salemen, when they sell something and you guys are on salary? If you don't get overtime and someone is making unrealistic goals for you who cares. Not uppermanagement, they are all for the slave labor bit. Sounds to me your in a job that is taking advantage of you, get a backbone, get gone, or bring it to boil. People use people because they don't say anything or standup for themselves. Your scared you might be over payed, or would have trouble finding a job if you got fired. Figure out which it is, face it, and move on.
I say this as a spinless jellyfish that is in the same boat. I recently got a backbone, had it snapped and handed back to me.
Neck_of_the_Woods
#/usr/local/surf/glassy/overhead
>and frequently give in to clients when they
want to change the spec halfway through.
If they are smart they have a clause in the contract for a "change order"
and bill for it.
When I was freelancer , a poorly written spec and a change order clause
was like the client forcing you to take extra money.
Have you considered that "give in to clients when they want to change the spec halfway through" may be part of their sales tactic, and that major changes is already in the budget for the project?
In any case the best you can do personally is keep track of the resources spent implementing a project. This will enable the sales persons to better estimate how much a project should cost. It also enables you to provide much better estimates for future projects.
This will of course not help right now, and it could be a bit delicate to point out that they have problems keeping the customers in line. Do you eat with them at lunchtime? If you do then drop a line like "uhhh... that new feature X in project X will take some time to implement"
If you were an AC asking this question I would have bet money you were someone I worked with.
I feel for ya, man. I really do.
Software Wars
How have other employees in similar organisations brought about an effective, non-hostile and mutually beneficial resolution to the problem?
In my experience, management fires the techies who speak up the most, leaving nothing but a week-knee'd devel department who cave in to the endless demands of the Marketing department.
See? No conflict!
OK, I took some flak for hiding. I admit it, I wrote the anonymous post about working down the hall...
Seriously, though, there are days when I feel like Dilbert.
What is your Slash Rating?
I'm guessing that your sales teams do not contain an engineer (I'm including IT guys in my definition of "Software Engineer). This may or may not be possible, depending on the size of your company, developments teams, and projects, but here's my suggestion: Always have an engineer at every meeting between your company and the client. Ideally, a project manager or head coder (Even better if those are the same person).
At my company, (granted, we're smaller than you appear to be...), our engineers deal with their engineers. No salespeople to get in the way, and it works very well.
We've gone through a similar transition but things are now getting better.
.com bust, and probably thought they could hide in the glut without any technical knowledge -- not anymore.
The only thing that really works is to cut the problem off at the the root. Get rid of the preppy Ivy-league MBAs who don't know anything about building real software. A lot them are probably hold overs from the
Replace them with seasoned sales/marketing folks who've been burned by over promising before. Best situation is to get some former engineers into the business side who are willing to push back against the unrealistic.
The market ought to be full of good people these days, the trick is to have some software experts on the interview panel, rather than accepting blind recommendations from someone's rich parents' friend (unless you're interviewing prospective US Presidents, rich parents are apparently enough).
Don't blame me, I get all my opinions from my Ouija board.
That's an organizational misstep. The sales team should NOT be writing spec. The sales team should NOT be estimating hours. The management, having realized the problem, have the responsibility to restrict the authority of the sales department.
'course, in our company, the project managers are highly involved with sales, and it's worked well. I don't think we have a full time salesman that isn't our CEO.
i actually really liked the consultant... probably because he ended up telling the owners what I'd been telling them for months (the obvious problems mentioned above). everyone was pretty pumped up for a change.
three days later we were all called to a meeting where it was explained to us that "now that all our past problems have been solved...". i was baffled... we hadn't actually implemented anything the consultant had proposed, we merely talked about it. i stood up and said "I don't understand. What have we done to fix the stuff we've been talking about?" to which I got stares and bewilderment. Everyone was thinking the same thing (several folks told me afterwards), but I was the only one with the balls to actually say it.
I was fired within a week for my "attitude problem".
my point is -- real change is hard; 90% of folks would rather just talk about hard stuff than actually do it to improve their situation. don't settle for any Mickey Mouse shit. good luck! :)
is to outsource your sales team.
I should have picked out the nickname Demosthenes!Tecumseh.
A percentage of the cost overruns for a given project comes back out of the commission. :)
This will be perceived as hostile by the sales team but upper management should be fine with it provided you guys keep good documentation.
The flip side is that if you do sign off on something and slip up the sales team will be all over your ass.
After a few months or a year the good sales people will have straightened themselves up and the dead wood will have left voluntarily.
Good luck!
P.S. This is generally easier to implement if you guys have some skin in the game too... Work out a per-project percentage-of-profit (or gross, profit figures are easy to manipulate) for you as well.
Here is how it works in the REAL world...
SALES drives the company, you can't change that, get over it. Execution is everything, and we (IT) wind up with our asses cashing sales' checks... thats just the way it works in this fast paced industry.
You have to find a balance and a system, if they are cutting back on people then you will have a tough time, but for developers you ABSLOUTLY MUST have 1 dedicated person for QA. I have tried and seen developers "test" their own code....we try, but we subconciously can't catch the easy stuff.
Here is how it breaks down:
Developer is hired by the company.
Developer maintains legacy code left by previous employee.
Developer gets ancy and an opportunity to perform new development.
The new project is released.
Developer has to maintain "his" project for sales while performing other duties to bring in money and gets burned out.
Developer finds another company, and the whole cycle starts over again for both parties.
I once had a salesman at my old Wells Fargo job, tell me that there was going to be a change in the way I did my processing. I told him it wasn't possible due to time restraints and the fact that I had no plan to put a cot in my vault. He said I had to. I asked why the sudden change and why the boss let him promiss. The best answer he could come up with was that it was what the customer wanted. He also hadn't told management yet. I told him he could shove his bonus up his ass the next time he decided he was going to sell me down the river. It's been four years. They still haven't done it. I've been gone for three. :P
Someone hates these cans.
First, tell them it can't be done with current technology, but start working on it immediatly.
Multiply all work estimates by a factor of 4, then tell them it's 'iffy'.
Ignore their spec, write your own as generic as possible. When they change it 1/2 way through, you bitch and moan, then write the gui that will give them what they want.
Yes, those first few conversations the sales people have with your clients are part of the design stage. What it took in our company was a discussion with upper management of past failures, with specific examples, cost, etc of where this stuff bit you guys on the ass. Take time to make your case water-tight...and don't focus on INDIVIDUALS that hurt the business process. Focus on where the business process hurt the team.
You've already got 1/2 the answer there yourself. You've got a good idea of the things that typically go wrong. Now, what can you do to make them typically go right? Of course, there are ALWAYS going to be cases where the client is just a "bad client". You may be making profit on those clients in your books...but it may be "bad profit". Consider not doing work with them again if you (collectively) have made every effort to reign them in. And *always always always* have "post-mortem" team discussions at the close of *ALL* projects to discuss successes, failures, and areas of mediocrity. Again, don't focus on the individuals that failed, if at all possible...focus on the process that failed.
And finally, you think upper management only cares about $$$'s? You're right. So put it into terms they can understand. While they probably aren't as technically adept as you would want, they're also probably not TOTALLY clueless. If you can show, on their terms, where your business process needs help, you've crossed the first hurdle. Show them specifically how much money they lost in cases where salespeople oversold, or were unable to filter unreasonable changes mid-way through the development process. Just don't start such a conversation without also having some ideas on how to fix things.
You know, I know you're an AC...and maybe you're trolling...but I'll bite. People these days jump ship too quickly. Change is frustrating, and difficult to implement...but for the few of us that can actually see the failures in business processes, it's a waste to just quit. It does nothing to help the company, or the industry.
If you like your job enough and the people you work with, my advice is to try to make things better.
There's been a lot of good advice, but all of it assumes that the sales people will try and change which happens sometimes, but sometimes doesn't.
When things get busy where I work (2 developers) and they come in and ask for more or changes or this or that or the other thing we tell them how long it will take and point to a board with a list of all the other things they said they wanted and make them decide where to put it.
This makes them realize that this new request of theirs is going to push out someone else's request (or even one of their own).
There must be a balance of power between those who order the work and those who do it.
The best balance of power setup I've seen is part of Extreme Programming. In XP, the suits can ask for whatever they want, and they can change their mind every week. The developers get the final say on estimates, and the suits can only order as much work for the next week as was done last week. The developers deliver a new version every week, so everybody can see exactly how the project is going.
This sounds too simple, but it works really well. Every week, the businessfolk are forced to balance their desires with the reality of the development situation. With only a week between data points, nothing can get too far out of whack.
Of course, some bosses are just unwilling to face the fact that for X dollars, they can only get Y features; they will refuse to implement any system that makes that clear. But most people just want to get good software, so they will come around if you put it to them properly.
I've had a single experience like this... sales was making promises, and then coming back to engineering and saying "is this possible? Whew! Cause it has to be done by X".
The VP of sales (co-owner) and the vp of engineering (not a co-owner) almost came to blows.
Adobe eventually bought us out and said VP was gone in a remarkably short amount of time.
No one missed him much.
Thats more a war-story than advice... advice... hmmm.
Try to get the sales guys and eng in a boxing match? Heh.
Seriously though. We actually managed to get the prez (the other owner) to read Rapid Development by Steve McConnell (though there are several books that cover similar territory, I personally swear by anything McConnell writes). Half the 'bad examples' in that book should sound Very Familiar to you and yours.
The problem has been identified. RD contains numerous suggestions on how to make fixes. Then it's "just" a matter of putting those processes into place.
Heh.
Fooz Meister
That's never stopped the Software and Entertainment industries.
And my advice is that if you are one of the few people who can see the failures in the business process, you can almost invariably see what caused the failure in the first place, and how almost invaiably those causes will prevent any try you make to help things out.
You are not beholden to the company or the industry. Do what's best for you and your common man. That is never wasting time and money on a sinking ship.
It also does nothing to just sit in a company and watch it destroy itself. Sometimes jumping ship is the best thing you can do.
Is common practice in 99% of companies. if you see any real change, they'll be eliminated when another company buys you out or some other factor dictates a change.
I just don't get the feeling that's the situation here, though. It sounds to me like the complaint the original poster had was a common one, typical of many industries...not just IT. It's probably aggravated in the IT industry because of the technical lingo and lack of understanding exhibited by many of our clients re: what exactly goes into a software development project...but I don't think the company he/she describes is going down in flames...I just think it needs some fine-tuning.
And, as far as my thoughts go re: not jumping ship -- if everyone who can see failures in business processes jumps ship without making some attempt at fixing the problems, you end up with an industry with a poor repuation for company viability, an industry marred by wasted venture capital, an industry that makes people nervous when considering investment. Turnover rate and rate of improvement within a company are inversely related...the higher the rate of turnover, the lower the likelihood that there are enough employees with enough history with projects/business process to improve them. I am certainly NOT blaming all dot-bombs on employee exodus, but it does not help.
Bottom line, if you personally are unhappy, by all means, get out. There's nothing worse than toiling away at a job that you hate. BUT, just because you can see problems does not make you unhappy. It just makes you insightful and a useful tool to your company's management. If/how you decide to present yourself in that manner is up to you.
invariably those causes will prevent any try you make to help things out.
I forgot to address this. Yes, I understand where you are coming from 100%. I have been there. It is extremely frustrating. And, if that is really the case, then again, by all means, get out. I just don't think that just because a company has problems with its business process, it means that the company is a lost cause. There are lots of reasons companies can have problems with its business processes...not all are unrepairable. And not all managers are unwilling to consider suggestions from those of us who are in the trenches. If, in your opinion, what is necessary to fix your problems runs counter to corporate culture, then you're screwed. But, if it is just not a part of your corporate culture, then there is hope.
In our company's case, we had the salesperson overselling issue too. We eventually came to the understanding that, for all "large" projects, the company's "Ace" Development Team would be involved from day 1...involved in all conversations with the client...and responsible for educating client and salesperson alike about the technical hurdles their project creates. Do we still have the overselling issue? Occasionally...but it's nowhere near the problem that it used to be. Probably because it only happens on the smaller projects (when it happens) and the scope makes it easier to deal with, usually.
It is necessary to train the sales force as to what is actually achiveable - this can be difficult. You are helped greatly by the simple fact that if the product is not on time, or stable, the salesperson looks bad too.
The single hardest thing to do is to find out what the customer really *needs*. To define it correctly, both you and the salesperson have to meet with the customer. This can be a three step:
1) Decide with the sales person what is the information that is needed from the customer meeting. The customer will have a whole bunch of wants, but he will not articulate his needs at all well. You will have to coax it out of him. The summary of this premeeting will be a table - features -> benefits to the customer -> costs. While you are with the salesperson, ask him what he feels will be the next step in increasing his business in the account. This is an unusual question from a techie, and should score you business points which you can negotiate with, later.
2)The customer meeting, itself. Have a presentation as to what areas are do-able, and a relative idea of the costs ( especially elapsed time). If possible, try to block the project up into smaller deliverables, so that there is continued involvement with the customer. At this point you are negotiating what gets built, when. Add feedback loops and kill points so that the risky items are clearly marked out. Don't ever commit to calendar time at this point - the analysis is not done, yet. Formally, this is scoping the project, and is an important part of success in project management.
3) Post meeting: document early and often, and now let the salesperson earn his keep by keeping close to the customer. The salesperson is your interrupt mask - make sure that he is the point man for the effort. Appreciate him, preferably in front of his boss. Sales is a people job.
Most of the grief I have been witness to has been squarly the problem of poor project manangement, unstructured, unprepared meetings, and general cluelessness. You can mitigate cluelessness, and the other things are either under your control, or can be influenced by encouraging the right questions to be asked, or asking them yourself.Hope this helps. It's my personal opinion that the developers should not live in a cave, but should rub elbows with the outside world, from time to time. Large organizations have special people to act as technical bridges, but in a small company, you get to do this yourself...I like small companies for that reason.
This is progress?