Politics-Oriented Software Development
thelesserbean writes "Up at K5 there's a tongue-in-cheek look at the dirty world of software development's inside politics. Presented as a guide, it is actually full of useful advice and lessons learned the hard way. For instance, in the 'Ass-Covering' section, we read: 'The chief difficulty is reaching a satisfactory compromise between ass-covering and not appearing too negative. (...) The emails you sent will be used in evidence against you. Keep a professional tone: before sending any sensitive email take a moment to think how it would look at an industrial tribunal.'"
One of the very first posts for this story at kuro5in was "Oh man, I bet slashdot is going to pick this up".
Seriously, they give email to 'everyone'.. what they should do is give corporate email accounts to select people who have to deal with outsiders.
Now, if you're a sadist like me, that is probably *not* a good question to ask yourself. Or, at least, I can think of all sorts of stuff to write in my emails that would be friggin' hilarious to hear publicly recited by a no-smiles lawyer at an important tribunal.
When things get complex, multiply by the complex conjugate.
Developers! Developers! Developers!
These posts express my own personal views, not those of my employer
You know, universities should pay more attention to real world scenarios like this. Maybe then there would be less effort on screwing with politics, and more on doing a good job. Oh well, just add this to the list of things fresh programers get slaped with right out of college.
This kind of politics-oriented software devel
here
(With apologies for the blatant plug.)
Someone had to do it.
From the article:
Also remember that someone who points out a problem early is a troublemaker; someone who fixes a problem at the last minute is a hero.
That's a dangerous line to tread, because there's a third option: someone who identifies a problem at the last minute and can't fix it in time is shortsighted and incompetent.
I remember the days when it was kuro5hin who was second fiddle to slashdot!
The good thing about arse covering is that it works both ways - management send you a metric crap load of hate mail, store it, print it, keep it.
Management meeting, threatened to sack you for simply existing, sideburns too long, whatever.
I've think I've been on both sides of the fence long enough to know government is about running favors for each other.
Maybe a better idea would be to edit all the email server's /etc/hosts file to point hotmail, yahoo, and gmail to localhost?
~/.sig: No such file or directory
Covering Your Arse (CYA) was a big thing at the last company I worked for. Being a lead tester, I had to document everything that could be used against the developer to put the blame on them if the project screws up. The developer was also doing the same thing to me. That made crunch time in the last two weeks of the project particularly difficult since we're being nice and stabbing each other in the back at the same time.
The department manager has the option of casting the blame on the lead tester and firing him if QA loses the blame game. I didn't like that option and documented everything that the manager did (but usuually didn't) do to protect my job. One manager got himself promoted out of the department because he thought I was going to get him fired on numerous occasions. (Not surprisingly since he was trying to screw up my projects to get me fired.) The next manager wrote me up for insubordination when he found out that I was documenting his actions when he explicitly told me not too. I quit my job soon after that. After six years of that crap, there has to be something better out there.
The only part that I really disagree with is the first point 1. Most software fails because it is designed to fail
By the quite long experience the real reason why projects fail is much simpler: STUPIDITY
Be that stupidity of those who defined the project, stupidity by those implementing, stupidity by the management, stupidity by the client, stupidity by subcontractors, stupidity by equipment providers, stupidity by...
I am sure you get the point.
This type of stuff is why the government normally has so few qualified people.
:)
The brainiac folks know how insidious politics like this are, and simply wont put up with working at a place that doesnt judge you on your skills.
Its just a theory, but it explains an awful lot
Nobody can pull out the old emails and pull a trick like this if they've been deleted. And if you save them, you're violating policy, so you're screwed either way.
Talk about a clusterfsck. My problem is I get documentation in emails, and that doc gets wiped after 30 days if I forget to save it somewhere.
John
"Politics-Oriented Software Development"
I work in the toilet-paper industry doing software development. I know all about ass-covering.
i might get modded down for this but the thing i find most interesting is that so many of the points being attributed to software-development in the article seem to be applicable in any project in any environment.
i help out in a school district and every single meeting i go to has me thinking about the same types of things. who is in it for education's sake and who just wants a feather in their cap?
maybe it's more of a human element that just happens to be looked at here in the context of programming.
Keep the faith, share the code
Run away, if you can, from places like that. TFA says to keep a daily record of what you've done. I've worked at a place where that was violating policy, and was a firable offense. Needless to say, I ran away, when I could. (They also prohibited managers from saying anything good about people on their reviews (I'm not joking or exaggerating) -- basically, they wanted to be able to fire you in a trouble-free manner, and they wanted you to help!)
Attention zealots and haters: 00100 00100
"Remember that managers are essentially secretaries who can fire you."
Politics-Oriented Software? Oh... I thought it was about the developement of something like Campaign 84 for the Colecovision...
Circumcision is child abuse.
...I'm starting my new job on tuesday, and have met some of this crap in my last job (in my last workweek) -
especially the "Why on earth did you do this (3 months ago) ?"-part rings many bells...
You young ones would do well to read it carefully and think about it. It will help you not only to survive but also to move up the food chain.
Remember, if you do things "right" in your current job, even if you get fired for it (i.e. keeping a record of your work, achievements, problems, conflicts, etc.) it will help you when you go to get your next job.
You can be choosy about who your next employer is.
A good idea is to be a member of a professional organisation, such as the Britsh Computer Society, where you can achieve recognition for your efforts as you go along. It's more evidence to take with you when you go looking for a new job when the inevitable happens.
Stick Men
It is not because they dislike management (although I am sure that has some role). Nor is it because the Machievellian environment described in the article is inaccurate. It is because they prefer complaining about problems to solving them.
Here's my version:
"Politically Oriented Software Development"
0) Don't Tick Anyone Off
1) Be Smart, Willing, Able, and Nice to work with (SWAN)
2) Don't add negative value. Remember that you are being paid to help your group/company make money. If this is not kosher, move on and join the Peace Core.
2) Avoid sending e-mails whenever possible. If you must, keep them extremely neutral. Use phone calls and personal conversations for any type of discussion or criticism--technical or otherwise.
3) Make sure your work is visible, and helps your group's visibility. Well developed, flexible software that meets the customer's needs provides the ultimate visibility.
4) Disabuse yourself of the ridiculous concepts of "Customer Requirements" and "Use Cases." They will not come. If they do, they will mutate into uselessness VERY QUICKLY. Avoid people who believe in such nonsense. Instead, thoroughly analyze the problem, the customer, and the market and create your own "requirements."
5) Innovate. Do "cool stuff" (prototypes, new concepts, algorithms, research) whenever there is a lull. If you do not do this, you will either get replaced or doom yourself to a life of mediocrity--probably both. Leverage the "cool stuff" at an opportune time to help your group.
And if you think management is unnecessary (as many commenters on K5 seem to), go ahead and start your own _successful_ company.
(BTW, IANAM--I am Not A Manager).
Yes, that includes QA saying things to developers like "you don't even smoke-test your work and I'm NOT going to do that for you", or (developer to manager) "why do you ask with what I'm busy? You're the project manager".
Of course, you have to let some steam off once in a while by joking and horsing around.
I find this highly amusing. Two day lag between kuro5hin and Slashdot :D
/. front page by dave331, 01/30/2005 02:51:54 AM EST (none / 0)
---
*
This will probably end up being posted (2.00 / 3) (#8)
by wiredog on Fri Jan 28th, 2005 at 08:14:10 AM EST
(my username at gmail dot com)
on Slashdot. Especially if several of us submit it. Good work, and oh, so true.
Wilford Brimley scares my chickens.
Phil the Canuck
* Submitted by wiredog, 01/28/2005 04:30:46 PM EST (none / 1)
o Posted to
'If you're flammable and have legs, you are never blocking a fire exit.'
Things won't change until companies *meaningfully* evaluate their employee's performance. This is easier said than done, but most companies don't even try.
Think about the differences between working and studying. In uni if you do good work you generally get rewarded for it, you don't get rewarded for sabotaging other students!
not even politically motivated, robbIE MiSuses this junk just to protect his monIE supply (yet another example of how way too much is never enough), &/or his greed/fear/ego based felonious stock markup FraUD execrable cronIEs/sponsors.
all in all, senseless greed motivated censorship could only delay the inevitable, which is freedom of speech, one of the mandates of the creators' wildly popular planet/population rescue initiative.
consult with/trust in yOUR creators, rebuilding declining civilizations since/until forever. see you there?
There are several other contexts where a project is designed to fail. Suppose that your company chose an external contractor for some work but a different one, which has some friends among the high management at your company, has more power to win contracts (by bribing politicians to name one). How long do you expect it will take for your bosses to start doing any effort to slow down the project until the company is "forced" to contract the other one?
Having worked in such environments for a while I can assure that the article is quite optimistic from this perspective.
The article may be tongue in cheek, but it is bang on right about one thing: You might be doing incremental development but the senior management still want a 'clean' project. The system will be delivered end Q4 and no later. Yessir Mr. Big Customer, you have our word on it (without asking the development department if it's possible).
After that, they hurry down to the development departments and after some panicky discussion and massaging of the project sheet, decide that Release 2 will happen 9am Nov. 15th. So yes, you do end up de-scoping during development. I have deliberately targeted sections for de-scoping and I am sometimes deliberately vague about will be delivered (rather than adding 40% contingency). For example, administrative functions will be delivered (but they might not have the gleaming front-end that they expected). And anyway, I get lumbered with a development team cobbled at the last minute (gotta save costs!) from half the losers in the company and a prima-donna who just sneers at the usefulness of unit testing and documentation.
Managers have surprisingly little power to get the best people for the job. When a board level manager decides that all sourcing will be now be internal, instead of the shit-hot guy I interviewed the day before, I now have to persuade a luke-warm candidate who really didn't want to move, to relocate 800km. Senior managers so often think people are like PCs. Roll 'em in, plug 'em at the desk, they start being productive that morning! Project finished (well,sort of)? Roll 'em out, there's another desk waiting.
Did he inhale?
At my first job out of college, being in a strange town with nothing to do anyway, I would routinely work late. When I left, instead of going down to the bottom floor, signing out, and then walking up several flights of stairs in the parking garage to where I was parked, I would just exit through the fire escape and walk down to where I was parked.
Then one day I walked into the senior vice president's office and saw him looking at the night and weekend signin/signout log maintained by the guards on the first floor.
After that, I always went down to the first floor and signed out.
And it worked. One morning I really overslept and came in about 11 am to find a note that I needed to report to the senior vice president's office.
So when I went in to report, I apologized for being so late. He told me not to worry since I worked late so much of the time.
I think that this article is a huge reason why the "open source" model is working... not just because it is a development strategy that may or may not be superior, but because it is a political alternative to the sort of corporate politics that are almost inevitable in a capital/industrial environment. Econodwarf wisdom idealizes a competition as a deliverer of optimal performance... tighten the screws, and output increases. but the competitive mindset doesn't disappear when employees clock in. The pressure that drives companies to compete among each other can also generate the internal competition that drives this sort of political BS. And the more complex and collaborative the problem is, the more vulnerable it becomes to this internal ego jockeying. I conjecture that's a huge reason why we see politics playing such a deadly role in the development of software. The problem with the "economic incentive" model that we seem to hold as the solution to all of societies problems and the deliverer of all of our culture's wants is that the incentive emphasizes the wrong thing. It pushes us to promote ourselves, whether for the sake of vanity or survival, and the product that results is often merely byproduct. Better would be an incentive that drove each toward the collective goal. In free software projects the incentive, while perhaps somewhat vanity oriented, seems much more about loyalty to the creation itself. The systems may break down along less integrated lines, like two unrelated projects that mesh together after the fact for an unplanned-for synergy, like the LAMP platform, but less energy is wasted in painful CYA-like activity. Obviously not every project can be developed collectively like this. Any ideas on how the community spirit can be better harnessed in an environment in which the job is less fun? Managers, from my experience of layer upon layer of them, don't seem to be it. How do companies make people want to work toward the project working? Is the current, sad, mess of a situation the best we can do? What do developers suggest?
i am sure this has all been covered in dilbert cartoons already.
Soundproofing Warning do no
Howto: write bad documentation
The two most important points you made were: What the customer wants and needs is paramount. Everything [and I mean everything] else is bullshit. Your job exists for the sole purpose of satisfying the customer [at a price that's profitable to the enterprise]. This is the most important point, and it's the reason our ancestors died in hellholes like Argonne, Normandy, Bastogne, and Chosun Reservoir: So that pissants like you [dear
PS: You made some other good points as well. For instance, I've been fired from the last two salaried jobs I had precisely because I sent emails that were politically incorrect.
But fuck 'em. At my age, I've got to face the fact that loners like me just don't make good organization men.
Do you work for ADP?
You can't handle the truth.
I suspect the companies prefer everybody having in-house email rather than something external. It probably helps them catch a lot of company employees up to no good (at least from the perspective of the company).
If you thought Slashdot was a confessional for your past misdeeds - you were wrong. Judging by your inability to deliver and loss of the key account, it seems you deserved much of the blame for the downsizing of the company.
What's their retention policy on printouts of emails? Ie, print out the really important messages and file them.
Very good description of the first principles. The projects don't matter, good design does not matter.
All that matters is what is easily visible and even more importantly - the perception.
-disclaimer-
I am a contractor, worked as a contractor for the past 4 years. Prior to contracting I've done 5 years of permanent work. I live and work in Canada, Toronto. In the past 4 years I worked at 6 different organizations on a total of 18 contracts.
--
The goal of any contractor is to find a well-paying contract and to make sure that the job is done satisfactory, so that the contract maybe extended for other projects within the same organization (hopefully for more money.)
My latest contract is quite interesting in that it is with an organization (no names) where the tactics are very close to those described in this submission. I was hired because a different architect was let-go (the union will not allow contractors to stay for more than 2 years,) and there was an important project to be done (the project is a legal obligation to the government, so it's serious.)
The overal feeling within the department is that the head manager of the department is a micromanaging, self-indulging, brainless moron with a serious attitude problem. From point of view of this k5 story, this is the only IT department, so there is less competition between the management on the higher levels to compete. But there are many other problems. The air within the department is that of complete secrecy.
You probably know the expression: job security?
Well, everything around here is based on that. The projects' success does not matter. The effectiveness does not matter. Maintainability does not matter. What matters is that you do not do what you are not supposed to do, even if it takes you 5 minutes instead of waiting for the specialized help for a week. You do not invade into the very narrow spaces of very narrowminded people, who are good at one thing - maintaining their job security.
Documentation to the projects is obviously outdated and has nothing to do with the system that needed to be improved upon. The system itself is based on technology (from a well known company) that should never have been used, but someone's ancle/aunt/father/brother whatever helped this tech to be pushed into the environment (obviously this tech is so obscure and specialized that noone else in the world uses it, so it's not updated.) The project is understaffed, the deadline is too damn close and the resources are not there (not enough money)
--
As a contractor I am interested in the project succeeding and as a developer I am interested to make sure that the design and development are based on some good principles.
So here are the problems (obstacles) to success and the steps I had to take to go around them.
1. The sources of the original system are controled by a special team. To gain access to the source control system there are too many obstacles. The advice to me was for our group to use a shared directory as a source control tool. Obviously this would not have worked - we would have spent all our time synching the sources. There are very serious barriers to getting a different source controlling tool being installed on a dev server.
solution: install a source controlling tool on your own machine. Import the sources. Set up you developers as users. Don't forget to make sure that the master source gets backed up somewhere every night.
2. Documentation to the original system is not good at all or non-existant. Knowledge is power and power is not to be shared with anyone. The tools for documentation control are out of reach.
solution: install a Wiki server on your machine (I use Tomcat and JSPWiki, it's good enough.) Start by setting up project space in Wiki, create sections for requirements, design, testing, assumptions, team, migration, issues, resources, standards etc.
Always update Wiki. Nothing must get past it. Remember:
You can't handle the truth.
Ok, let me give you my take. I work in one of those companies that has a small software dept that is critical to survival of the company. Essentially, we get blamed when things don't go well and ignored when things are good.
I am a manager that manages a project that historycally never had major problems in 9 years and brought home lots of bucks. I manage another project that is essentially infrastructure for the company and never gets noticed. Then I play hero when other projects fail and I fix them for good. The former type of projects gives me visibility, but my reputation is built on the fact that my projects work for good, not in the short term. In this way, I can distance myself from politics and leave projects when they become political. Because I have credibility I can do code reviews, architecture design and all the good practices. Oh by the way, (I think) I work harder than any of my employees. I work week-ends, they never do. Needless to say, people want to work in my projects. All my failures happened when I did not do all the good things that should happen in every project. Now, I prefer being fired over wasting time and resources. My company knows it, they need me, they need successfull projects, so they don't fire me. My VP doesn't like me, possibly because I told him his was bullshitting in a big meeting in the first days of his tenure, but guess what: my stuff works and our budget is limited. All of this to say: you can be a good manager, be successfull and be respected, although not always liked. It is not easy, takes effort, but at the end of the day, I go home happy. My employees go home happy. My customers go home happy.
Cynicism appears to be the original author's primary job skill. In my experience, those who complain the loudest about "politics in the workplace" tend to be social retards. This shit just ain't that hard.
Here's a better guide for office politics:
1) give your boss timely and accurate information. If you're delivering bad news, include a coupla potential solutions for the issue. Otherwise, you're just the office "whiny bitch."
2) understand different groups and individual have good reasons for their very different views on risk. If it always seems like "the fucking accountants won't let us change anything," there's a reason for this. Likewise, when "goddamn IT upgraded the server and now everything's fucked," there was a reason they upgraded beyond just trying to make your life more difficult. I've come to the conclusion design by contract between groups should be used for change--one group promises to avoid gratuitous changes for dubious benefit and the other group promises to avoid impeding change "just because."
As a corollary for extra credit, there are two kinds of risk--risk of action and risk of inaction. In my experience, people readily understand the former but rarely understand the latter since it's often a long-term issue.
3) Treat people the way you'd like to be treated. Put simply, if you wouldn't want your fuckup publicly pronounced, refrain from doing it to other people's unless they've done something illegal*. While you might think no one's noticed they've fucked up, everyone knows.
4) Before I leave, some practical advice based on my own experience. If your boss' brother works for you, never ever write him a "Needs Improvement -- step up from being canned" review even if it's necessary. Even if she swears she won't care, she will.
*this is different from "oughta be illegal" -- like my co-worker with a supa-fine ass and perky tits who always wears a thong and apparently doesn't like bras.
... microsoft certified engineer manual got out?
Just put it into your own *.pst after two weeks. There you go, problem solved. They can delete anything they want. You already have your own copy.
This is why I'd rather do everything solo, and have the "other people" out of the picture. I'd like the software and hardware right infront of me, and the "peopleware" behind 6 inch thick plate glass with the blinds down. That would really help me to conentrate and get the job done.
They also prohibited managers from saying anything good about people on their reviews (I'm not joking or exaggerating)
Are you at liberty to say what company that was? In our company (60,000+ employees), if you don't get something good on your review, you're on the way out. I haven't kissed butt in a while, and reviews are next month. Hopefully, my performance will save me. :)
I've work for big companies that didn't play the blame game too much, and small companies that did all the time. I miss working for the big company because there the processes worked (we had a test department!), and action was taken before things became a crisis if possible. If there was no way to avoid a crisis everyone knew it was coming long before and was at least prepared. Well up until the end when they closed down, so not all was well.
In all cases it is upper management who sets the tone. When upper management refuses to play heavy politics, the lower ranks don't have much to play with. When upper management starts playing those games everyone must. (I ignore them anyway, but I'm sometimes lucky to have my job because of that)