Are Quirky Developers Brilliant Or Dangerous?
jammag writes "Most developers have worked with a dude like Josh, who's so brilliant the management fawns over him even as he takes a dump in the lobby flowerpot. Eric Spiegel tells of one such Josh, who wears T-shirts with offensive slogans, insults female co-workers and, when asked about documentation, smirks, "What documentation?' Sure, he was whipsmart and could churn out code that saved the company millions, but can we please stop enabling these people?"
why are the mutually exclusive?
Reiser?
Couldn't resist.
But only if you're married to them.
Give me Classic Slashdot or give me death!
Translation: Control is more important than productivity.
I think it would be a lot harder for this guy to have made his point without such an extreme example.
How else would we get attention from the office females?
It should ensure that lots of bored IT people with god complexes flock to his article and dream about how important they really are. Of course the reality is that just about everyone could get hit by a bus and within 2 months their names will be forgotten and the company will be just fine.
It's not necessarily "enabling". I've known a lot of people who are just eccentric but incredibly bright (and have been told I'm one, which surprises the hell out of me), and it's probably just part of the territory.
If he's taking a shit in the plants, though... yeah, get that stopped...
Lack of documentation only chains you more to a developer. It makes it that much harder for someone else to maintain the code base.
I've never met one of these coders in real life. For that matter, I've never been with a company who's internal politics would even allow such a person to exist.
What cyberpunk novel does this hypothetical "Josh" live in?
It is by my will alone my thoughts acquire motion; it is by the juice of the coffee bean that the thoughts acquire speed
Most quirky developers don't defecate in the lobby or egregiously insult coworkers. They just have poor social skills, may have poor hygiene, may perform poorly on teams, and so on. In those (by far more common) cases, I've almost never seen a situation where the company would be better off without that person in some capacity. Usually it just requires moving them off some team project to a big one-person project that's been festering on the TODO list.
It's actually pretty hard to find really good coders, so I'd say unless they actually are so terrible in other ways that it's screwing everything else up, if it were my company, I'd try to find somewhere to put them that plays to what they're good at while minimizing any potential friction.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Some developers are quirky because they do someone no one else understand and think they are better than everyone else they work. They go out of their way to be a pain in the ass to work with, and I really don't understand why any manager puts up with it.
Others, like myself, are quirky because...we just are. No amount of trying to fit in with office life is going to be considered a success. No one minds if I'm quirky so long as I work hard at being a member of the team.
When kids are recognized as being highly intelligent and gifted, parents, extended family, and teachers go out of their to coddle them. To treat them as special. To give them far greater leniency and independence than kids with normal intelligence.
Is it any shock that these kids grow up to think the rules don't apply to them?
If someone says he and his monkey have nothing to hide, they almost certainly do.
i remember a book from the dot com boom days claiming that a company in san francisco hired a network engineer who stipulated in his contract that he:
1. would only work in the middle of the night
2. got to work completely nude
he got away with it, because it was simple economics: his services were needed badly
any employee who has quirky behavior that is somehow provocative to fellow employees gets away with their oddball offenses to the extent that their services are needed that badly. beginning and ending of issue. you don't have any power or influence over the guy if he is that valuable. you just don't. so accept his behavior. you can moan all you want, but if you want the guy to disappear or act more uniformly, then just hope for a sudden influx of really good programmers from some magical place. thats the only way his behavior becomes a liability
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
Sounds like Dr. House for developers. People think because they are smart and/or great at their craft they can basically do anything they want. This ties back to the /. article about the younger generation being more narcissistic than ever. Shows like 'House' glorify it and apparently make people think it is okay to be an asshole as long as you get the job done.
These stories always make up a developer with a bad attitude.
Well, you should tolerate such an employee the same you would tolerate him if he was a great salesman than drove everyone else crazy.
Apparently bad attitude is worse when it comes from a developer, why?
To make an analogy here, he sounds like the TO of coding...
One experience I had with him was that Robert (working remotely) broke the system one day which affected my work and when I mentioned this to the owner, rather than him speaking to Robert, the owner went and quietly fixed the issue himself.
It was things like that that pissed me off and eventually led to me quitting.
I am Slashdot. Are you Slashdot as well?
If you need to cut, there's no tool as good as a sharp knife. If you need to turn a screw, a sharp knife probably isn't the right tool. If you have a guy who's a sharp knife, and you're using him to turn screws, maybe the problem isn't him. Maybe the problem is you.
"Josh" is the kind of guy that develops Googles, Yahoo, etc. This idiot is obviously one of those guys who is jealous of any who show better skills then themselves. That does not mean that "Josh" should not be encouraged to change for the better, but a lot of that is simple maturity. OTH, this poster will never be a better coder.
I prefer the "u" in honour as it seems to be missing these days.
It's up to management to apportion work to where it's done best. Some people work well in teams, some better as individuals. Make use of people's strengths and give them the work that suits them. Rudeness is not necessarily an offence (though harrassment of e.g. female coworkers is) - it's just part of the price. If it's not worth the cost, then don't employ him. Similarly with obscure code and prima-donna behaviour: if the overall cost of writing and maintenance is lower when it's all done by easily-managed people, then that's who you should employ. And make sure the same test is applied to the CEO.
I worked for a small company that severely underpaid it's employees. As a result, most were people who were just out of college (me), couldn't get a job elsewhere, or didn't want to move because of family connections in the area. Many employees quit right after a spouse graduated from the nearby University.
One of the programmers was brilliant, but actually insane. He could look over your shoulder and debug the page on your terminal in a few seconds. That is, when his meds were working. He would check himself into the local mental hospital for weeks at time, during which he was truly unavailable. They kept him around because they couldn't afford to hire real programmers.
All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
These myths of one coder being so valuable that he/she can't be replaced are just untrue. When they are gone people either pick up the code they left behind or if it's incomprehensible it gets rewritten. If you really feel as a manager that you have to keep someone on your team who can't play nicely with other people then it's your responsibility to make sure they don't do any damage to the company or their coworkers.
"Some days even my lucky rocketship underpants don't help."
The "Josh" you're referring to has management pissing in their pants.
They let him get away without documenting one program and he'll keep his job forever.
He purposely obfuscates his work to prevent anyone else from doing it. Management knows he holds the keys and they are scared of him.
Management doesn't know much about programming.
On the flip-side, should you really maintain documentation that will make it easier for someone else to do your job? Professionally, yes. But the way employers treat programmers, I'd say Josh was ensuring his job security.
They're using their grammar skills there.
"i thought this was a news site"
Really? That's so cute!
Bad experience is a school that only fools keep going to.
... but they always seem to self-destruct on their own.
They either:
1) Take of too much work because they never know how to balance things, and burn themselves out.
2) Stop working on needed projects, and only focus on the fun ones, which loses their value in the company
3) Get Hooked on drugs and/or alchohol, and mess up their own future (MODERATION, people, moderation).
4) Piss off management by sh!tting one to many times in the lobby.
5) Get shown-up by some newbie coder who knows less than them, but is willing to learn new things (Josh doesn't like to learn new things, because it would imply that he wasn't a master of everything in the universe).
They can be both or neither. It really depends. But they are definitely quirky.
The story ends there. "Josh" is no coding genius. He's a business genius. He understands that business nowadays is all about rent-seeking. Rent-seeking is looking for a parasitic niche from which you can milk the system with impunity, until the system collapses.
How could anyone learn any other lesson from the goings-on in Washington, D.C. and Wall St. nowadays?
Seastead this.
I've been pushed hard on projects before -- and been told that documentation wasn't a priority, that getting the code out was. (I had a sign on my wall that said 'Documentation is Phase 2', a direct quote from my manager).
Now, "Josh" seems like he has some personality issues, sure, but don't bitch about the documentation thing. If anything, I find that documentation can be harmful (if it's not kept updated as the code is), and that it's often best when it's written by someone _other_ than the coder who already knows everything (so they don't bother documenting all of the 'obvious' stuff that's only really obvious to them).
If this "Josh" were worth the cost of 4+ "normal" programmers, assign someone extra to follow behind his commits and document what's going on. The lack of documentation is a company problem, not just one programmer's.
Build it, and they will come^Hplain.
What a piece of journalism.
Quirky = rare habits and/or rare hobbies and/or rare background/culture that bring a smile to co workers faces or make them interesting to talk to, at least compared to an average drone.
vs
guy in the article = a-hole that everyone hates but has the redeeming characteristic of being somewhat productive (at the cost of ruining everyone elses productivity)
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
The head of DEC, Ken Olson, has been famously quoted as saying, "We don't have any geniuses at DEC." Where are they now?
All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
wouldn't he be more producetive if he worked from home?
You now have a performance benchmark, due to him having previous work done in the office.
Everone should be evaluated in terms of (benefit to the company)-(hassle to deal with+cost of employment+replacement costs). If the result is positive, stay the course. If negative, cut your losses. If borderline, try to work with the person to push towards posative.
Successful salesmen and executives get the same treatement (better?)
The quirky developers tend to be brilliant: it's how they get hired.
Are they dangerous? That depends on a lot of factors. Most, frankly, are not; the quirks are minor, harmless affairs that can and probably should be overlooked, especially if they do not violate any company policies. Happy coders are better coders.
Dangerous coders do exist, however, just like in any other profession, and it sounds like the article's Josh is one of them. It's tough to argue with his code, but his other behaviors are causing a lot of harm and risking even worse. This is a point where stepping in would be appropriate.
I kinda agreed about Josh when I read the article... then I read some of this guys other stuff, about Tyler, and a few of his other articles.
Basically it boils down to he wants cogs in a machine at any cost.
Being different is fine, being a complete and total douche like Josh, no. Josh needed to revise his attitude and this guys needs to revise his also, unthinking cogs are useful in some situations, original thinkers are useful in some situations also.
Shadus
You see, the matter is _NOT_ to complain of what the talent is missing, but to be grateful for what it provides and to identify and try to backfill the missing areas.
Glass half empty? Or half-full?
Most unfortunately many managers are there because the want to be. That is, they enjoy the power and do not see the responsibility. Often they simply cannot understand people who are not like them. A singular disqualification for anyone who pretends to manage others.
If you are building something new and innovative you need them and have to work around their quirks if you want to keep them. There are obviously limits, though it doesn't sound like you are the one that gets to set them. Where those limits are depends on the project and how badly it needs star developers.
I'm putting this forward partly because I know my own boredom threshold is close to zero, but I've been lucky enough to have a portmanteau career - hardware, software, some metallurgy and a ten year spell in management. As a result, I've never got to the top in anything, but I've only twice been bored for very long (and both times I did, I changed jobs.)
The antisocial stuff is a different matter. A lot of (mainly men) get like that when they feel in a position of power. Our own lovely Tony Blair apparently liked to demonstrate his power over civil servants by having meetings with them dressed only in his underpants - look at me, I can go around like this but you have to wear a suit. Other alpha males just like to scream and thump their chests at people while hurling excrement at them, and I believe some non-human primates do this as well.
As a counter example, look at Richard Feynman, who was interested in all kinds of things and had a very varied career. He did quirky things but in a nice way, asuch as giving evidence in court that all kinds of "respectable" people frequented topless bars, because he didn't care that people knew that he did, or exposing the poor security at Los Alamos diplomatically by safebreaking. Robert Oppenheimer too had a very wide variety of interests, which probably helped him retain his sanity when he was persecuted by Strauss and the McCarthyites. Oppenheimer was also tolerant of diversity as a manager, which helped even if it annoyed the military.
So, my 2c worth; what these people need may be to be included, but to be encouraged to widen their interests.
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
Since the article was written from the perspective of someone who is upset with Josh, and therefore prone to paint him in a negative light, I'd like to offer some words that may balance the perspective. I'm no fan of people like Josh, so the following is the devil's advocate perspective:
By way of metaphor, it seems like Josh is the only Integer Unit in a CPU burdened with processing lots of integer-heavy code. He is a resource for which there is a lot of contention. Someone tried to have someone else on the team (say a floating point unit) solve an integer problem, and all they could muster was to go to the Integer Unit, who is already bogged down, and beg for help. Apparently, in this organization, Integer arithmetic is deep voodoo that nobody else can do. Everything flows through Josh. The odds that someone will relieve him of his duties long enough to generate a HowTo on adding two ints are pretty small.
Odds are that the project managers around him aren't thinking in terms of resource contention and how to alleviate it. They may make noises that sound like they understand that task B, with a lower priority than task A, will be starved until A is completed - but then tomorrow they'll still be asking why B isn't done, knowing full well that A is still in queue and they set the priorities themselves.
Even if they do understand priorities, they'll probably constantly adjust priorities eating Josh's productivity with lots of context switching and pipeline stalls.
They need more people who can do what Josh can do. Once he's no longer the only Integer Unit, he won't be able to afford to be a douche-nozzle. If this outcome is worth it to them, they'll pay for it. If it isn't, they'll whine in an editorial.
The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...
I'm a big Linux fan and I appreciate the man's work on the Kernel and git but his antics sometimes let the asshole part of him slip out a bit too far. Confidence makes you cocky if there is no one to restrain you ever.
Back to "Josh":
A douchebag like that will take the entire project down with him once he snaps. No documentation and an attitude that would prevent proper inheritable code writing from the onset makes this a bad deal. Basically I'd guess they're useful if kept in check, reaally dangerous when you let them do whatever. Much like nuclear power plants really.
And I see his point: other people will need to maintain the code afterwards.
Non-Linux Penguins ?
prima donna - noun 1. the chief female singer in an opera or opera company 2. a very temperamental person with an inflated view of their own talent or importance.
Ceci n'est pas une signature.
And reminds me of what happened at my first job, though the guy from my experience wasn't that bad. He still did indicate to me one day that the code was the documentation. The good thing was he was more helpful with me figuring it out.
~~ Behold the flying cow with a rail gun! ~~
The problem with these types of people is not so much their own problem but a management problem. Entrusting too much to any one person is dangerous. Proper project management would componentize the workload and have this "quirky" guy working on one small component at a time, you NEVER trust a guy like this with the entire project. These people have a useful skill, but its up to management to utilize that skill in a manner that is conducive to the goals of the company as a whole. If you (as management) have a guy like this running lose in your office deficating in flower pots, and insulting the women because he thinks he is irreplacable: it is YOUR problem, and your responsibility to keep him in check if you feel he is a valuable asset to the company. If you cant rope this guy back in remember rule number one of IT; there is ALWAYS somebody smarter out there somewhere. If you want a master coder with social skills be prepared to cough up the big bucks, otherwise deal with the smelly garage coder with some common sense as a manager.
An innovative company probably needs both: quirky people with unconventional work habits but who have ideas and can break a lance. If they are not particularly good at documenting things, it should be easy to have this done by others who are good at learning, absorbing, cleaning and improving a good idea.
I started on the software coal fact many years ago and have slowly worked my way up to the point where I now employ programmers and right from day one I've found the Josh type developer to be nothing but a pain in the neck and generally not worth it. They might be great developers but in my team (at least) that alone is not good enough. I need people that can communicate and get on with others as well. I need people that I can take to customers occasionally. In my experience Josh types are also loose cannons that can't be trusted to do what they are asked to do, they go off mission because they think they know better. Unfortunately they rarely do see the whole picture and end up causing problems further down the road.
My view of this type of programmer is probably rather skewed because one of them actually managed to bankrupt a company I was working for by promising far more than he could actually deliver. Management just kept lapping up the promises despite warnings right up to the end when they noticed how much they had spent and what they actually had got in return.
I used to have a better sig but it broke.
Maybe he had red Do Nice Engineers Finish Last in Tough Times? by the same author http://itmanagement.earthweb.com/features/article.php/3796861/Do-Nice-Engineers-Finish-Last-in-Tough-Times.htm and chose not to be too nice, uh?
The couple of "hero" coders like this I've seen in the past are, to a large degree, sucking productivity directly from other coders. Their complete lack of documentation, zero time spent naming variables/functions with whatever gobbledygook ran through their head momentarily, etc., winds up bringing other coders' work to a complete screeching halt. Intentionally or unintentionally, they arrange it so they're the only person who can manipulate the codebase. So the whole "hero worth millions" idea is really just a facade.
Example from this month's Game Developer Magazine: Near the end of a production cycle, one game is way over memory budget. Entire staff (engineers, artists) spend weeks cutting stuff out: reducing polygons on models, downgrading textures, etc. Everyone sweats it out and comes up 1.5 MB short. On the last day a senior coder goes in to where he'd hidden a 2MB string allocation at project start (completely unused), snips out the one line, and is hailed by everyone as having "saved" the project at the last minute. That's the kind of bullshit going on with these sociopath coders.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
... and fire the guy for not documenting his code. Most companies have documentation standards in their policies... not following company policy is actually a quite reasonable reason to be fired, even where I live and I don't even live in a an "at-will" jurisdiction.
File under 'M' for 'Manic ranting'
It's managers job to give the right amount of freedom to talented individuals. Individuals with well over the average IQ, with passion for the job, and that are no afraid to spend extra hours on the task. If it were for me, I'd give up ten of the 9-to-5, dumb, lazy a$$es, weasels, that are unfortunately the fabric of most of US companies, for one talented engineer. You wonder and cry because he has extra privileges than you? Meritocracy, comes not only in form of extra salary, my friend.
If, as the summary says, this guy churns out code that 'saves the company millions', that seems to justify what he does.
To offset that, you've got to demonstrate that his deficiencies cost the company millions. Lack of documentation; personal abuse in the workplace; those mount up.
He probably doesn't save millions after all.
15 years back, When I was younger, I would have probably fallen into that category. However, I had an ingenious manager who turned it into the companys advantage - He assigned and encouraged others to work around me, and do the mundane things around / for me, so that as a team we were successful. Eventually, he taught me to work within a structure, and not feel that structures limit productivity.
I am very grateful to him, and today when I see some one like that, I try to emulate that formula. Works sometimes.
Ashraya
The fact this guy gets away with being a downright asshole is purely a management issue at the company. The management either decided to ignore the problem, or tolerate him as he is for whatever reason.
I stumbled upon a couple of such people at my jobs, except they were by no means above average and even had no excuse for similar behavior. Fighting them makes no sense, usually. My advice is to ignore them and focus on doing your job. If it becomes unbearable, change your job.
P.S. Somebody who gets insulted by a slogan on somebody else's T-shirt has a serious issue with himself, I would say.
The code IS the documentation.
Drop down menus should come with an ok button. Undoing "overrated," which should have been "funny."
SIG: HUP
According to the story, the bug was in Josh's code. Where I come from, you don't get much credit for fixing a bug you created, especially if it took two days of eroding customer perception before you did it. Further, the description of the convoluted code and missing documentation suggest that such problems should have been expected. This is not a guy who wrote great code and then demonstrated brilliance fixing a customer problem. It's a guy who wrote crappy code and then fixed it later than he should have.
OK, so it's a bad example, but that doesn't necessarily invalidate the whole line of inquiry. There's still a real phenomenon of brilliant programmers who are also disruptive. The solution is to tell the person that they can't rely on history, that every single instance of flouting the rules will be evaluated on its own merits. If they're right every single time that their actions are justified by creating an overall good for the company, they'll be OK. If they're wrong just once and it's an action that would lead to anyone else being fired then they'll be fired too. If they're not capable of working through the implications of that simple policy and modifying their behavior accordingly, then they're really not that smart after all and you're better off without them. We are all responsible not only for our own individual deliverables but for the effect we have on others around us. Reward people for the good things that they do, and penalize them for the bad things. If they're rational, they'll adjust.
Slashdot - News for Herds. Stuff that Splatters.
From TFA: Eventually customer issues reach the breaking point and CEO steps in. Josh is called to the carpet, so like the child he is, he picks up his ball and goes home. Company suffers. All goes to show that management ought to nip the problem in the bud before it ever gets this bad.
RETURN without GOSUB in line 1050
I'd say it's fine, but I'd also turn a blind eye to any of the female coworkers who kick him in the balls.
These people have to be the stupidest people alive. A company doesn't care about performance entirely if they want to promote you to management. They care how you represent the company. If I could churn gorgeous code out, I still only get paid the $65510/year that everyone else does. Management gets paid in around six figures. If your really that good that means you get $35 000 just for putting on a dress shirt and pants every work day. I for one would do that.
I would say for every "freak" like this there must be a thousand+ that can code as well and are great to work with. This is just a egregious stereotype that would be quite hard to find in most modern Dev shops.
I have been doing SW dev for a living for about 15 years. Most of it large scale teams. I never saw anyone remotely close to this description and I have worked with some brilliant people. The best were humble, normal down to earth people. There has been a touch of arrogance, by some, but nothing like this.
I don't think the described person would last a week in the environments I work in.
Only in a small shop run by an idiot who won't pay for quality developers that are both talented and decent to work with, would you get this kind of freak and any dependency on him.
A while back, I worked in a video production place where the lead engineer was an asshole. He was rude to everyone, and made a point of telling everyone how irreplaceable he was in every way.
Meanwhile, he spent most of his day sitting in his office, looking through hardware catalogs - and never bought anything useful. Once in a while, some computer or video box would arrive, he'd have me unpack it and set it up, and then he'd berate the poor people who had to use them for not knowing how (he bought a really cool SGI workstation and dumped it on a girl who had never even seen one - she was a Photoshop artist).
He used to set really long schedules for simple things, too - he told me I had to come in for a couple of months on weekends to put connectors and labels on a bunch of prerun video cables. It took me four hours. So he got mad, and told me I had to come in anyway, because he'd already set the schedule, and it was my fault for working too fast (and he also complained about paying me overtime, instead of thanking me for doing it fast and correctly).
Yes, these people do exist...
If we didn't enable these people then we wouldn't have Dr. House.
Man, crazy people always wanting to cut off the nose to spite the face.
If you do what you always did, you get what you always got.
I think the number of brilliant genius delicate hothouse flowers of programming genius are pretty rare. So rare, in fact, that it isn't even worth discussing (sorry Taco).
I think a FAR larger cohort of programmers fall into a category of people who have been in one place a long time, know the systems (AND business processes) really well and have done little to no documentation.
These people have you by the balls (as evidenced by me posting AC). If they leave you have to, in a lot of ways, start at square one. One can easily acknowledge that this was a management problem but even IF you try to institute best practices NOW these people will resist it because they know they hold power as operators of the Black Box. Every line of documentation removes a little bit of their power and leverage and it is the rare (and perhaps stupid) person who does that voluntarily.
Yes, I suppose the ubercoders are a problem too but I think it is a much smaller, and different, problem than the one I described. If a company is depending on a coding wunderkind then they are probably on the cutting edge of SOMEthing and bad documentation is something of an expectation in that arena.
Unfortunately our team has experienced this at the cost of possibly not making our project schedule. We finally discovered that 2 or 3 moderately talented developers cost the same as a one blowhard, pain in the ass developer and can typically accomplish the same things under budget and on time. I would also point out the history of Google and its many quirky developers and the worthless products they have produced in the past few years.
In my experience, management can and often does attempt to reign in talented people because they feel their own inferiority and the fact that while they will be stuck where they are for the rest of their career, the talented ones will eventually realize that they are getting the sh*t end of the stick and leave to start their own companies.
Too many of you think that you can train or fix developers. Some of us are well-rounded, but stop and think for a moment... the same things that CREATE great developers - utter focus on logic and machines, great spatial/coding skills, analysis, concentration to the exclusion of all physical - also creates anti-social people. If these guys had social skills and rewarding interactions with normal people to begin with, they wouldn't have become great developers. 'Josh' is hyperbolistic, but I've had a hard time teaching some of my programmers that showering regularly and not picking their nostrils in a meeting are important. They listen, but they can't really implement it. And then they wonder why they are career-ladder-limited. But if we keep them away from the other kind of people, it's all okay. Spiegel screwed up; the trick isn't to fix Josh, but to hire a team better able to work in the realm between Josh and the customers. Even Spiegel admits that losing him cost the company a lot of time and money. Maybe the company should have dumped Spiegel and found someone willing to work between Josh and the humans.
In my continued and repeated experience, the real geniuses aren't arseholes. They may be socially inept, but they aren't contemptuous about it.
Paul Graham talks about this in How to start a startup:
http://rocknerd.co.uk
I've been doing this for 30 years now, nearly 20 as a consultant/contractor. I don't like to write documentation but I whip stuff out faster than most and do the work of most 3-5 person teams. I'm extremely loyal and committed to my job. I'm very gracious to all and don't smell. I obviously save my employers a huge amount of money even though I am being paid at premium rates. So what should be happening here? Take some of the money they saved and hire a documentation writer even if this is on a part-time basis. They are relatively cheap, they might even like writing documentation. I have no problem communicating with someone performing this function. After all they are doing something I don't want to do but should be done. As for rude, smelly, obnoxious, uncooperative, etc. There's just no place for those people. I was the replacement for someone like this. That was 10 years ago.
Shitting in a flower pot has the distinct advantages of:
1. Saving management money on fertilizer.
2. Reducing carbon emissions required to produce and transport said fertilizer.
3. Lessening the solid waste that will end up leaking into our watershed.
According to Gartner, more and more IT departments concerned with eco-friendliness are having their programmers shit in flowerpots every day. I'm surprised you haven't heard of this.
I think this guy is the extreme, but for the most part we as programmers are quirky (especially to Non-It people). At least the good ones..lol
I've never met an employer that would tolerate anything near what "Josh" was doing; No documentation for code that is designed for a customer, so that you make yourself the only one that can fix any potential problems or needed updates = no job for the individual responsible and that code would never make it into the customers hands. I had worked with one such person, who was hired on as a developer, tried to have code sent out with no documentation (maybe he was hoping for job security by doing that, who knows), the code never made it out, and shortly after he was on his way out.
There was only 1 time I ever had to use obscure code that nobody else could understand... that was when i was in college to ensure nobody could steal my code and hand it in as their own.
I take showers.
Or failing that, why does it always fall on the "quirky, socially-inept programmer" to be the "bad" person in the office?
I mean, has anyone ever SEEN some of the office politics that take place in most companies? Holy jesus hell, I've worked in places where I would have KILLED to be socially-inept and ignored by everyone!
Planet Zebeth - Metroid with a twist
I actually had the same thing happen. I had sinus problems - severe pain - for years, went through several doctors. My last ENT was a dick and had me in and out of surgery one week after my first appointment. I haven't had any problems since. I'd much rather have someone who gets the job done than someone who is tactful.
There can be no progress without risk.
I used to comment my code's 'intent' and document what I was trying to make it accomplish. (Instead of, and I kid you not, writing shit like "C = C + 1; /* add one to C */" [What was C counting, you fucking butt munch? There's terse and then there's stupid.] )
Then and only then, after documenting the intent, would I feel free to write the code.
I ended up giving courses to the other programmers because I was doing things in CICS Command Level COBOL that they had never heard of (like dynamic memory allocation to take a data structure and stand it on its ear.)
There were two ways to approach the problem.
I choose NOT to be a cock-biting ass-hole about it.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
I've read the "Stuart" story (referenced in the article) before--probably on Slashdot.
These articles appear to be a higher level of troll. From my experience, the Slashdot editors stir the pot with extreme articles every now and then to stimulate responses.
It's interesting to see this debate happening here on Slashdot. I spend my life immersed in the world of health care, and a large part of my job is trying to figure out ways to deal with folks like Dr. House. It's a big, big cultural transformation, or at least it is in health care. One of the reasons that it's so hard to deal with is because in "fixing" a problem like Dr. House you run the risk of treading on people's autonomy. And part of the reason that folks like this get as far as they do is because of all the places in our broad culture where autonomy reigns supreme as a guiding value. Now don't get me wrong, I support autonomy in a big way! I'm just saying that we need to think of some of the unintended side effects that brings along when we perhaps push the dose a bit too much. Ironically, I often use the analogy of an open-source software community to help people envision what health care might look like if we did a good job of improving its culture. If only hospitals had a modding system that allowed flame-bait to be identified and screened out in policy debates!
Whoever modded me troll, maybe I was being "quirky". Did you ever think of that? Bloody illiterate.
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
Sure, he was whipsmart and could churn out code that saved the company millions, but can we please stop enabling these people?"
Let me get this straight -- you'd rather prevent someone from saving your company millions of dollars?
If I were a manager, I'm pretty sure you'd have a hard time justifying this idea.
In the course of every project, it will become necessary to shoot the scientists and begin production.
Do you really think that Josh is the kind of person who don't read /. ?
Colorless green Cthulhu waits dreaming furiously.
Divaloper.
WARNING: Smartphones have side effects--most of them undocumented.
No single coder has saved a company "millions of dollars".
Perhaps you were the last mail, but he would have failed regardless of you. Nobody is irreplaceable and especially not those who think they are.
Don't fight for your country, if your country does not fight for you.
There's absolutely nothing specific to developers here. You have the same kind of people in every other job.
The one question you need to find an answer to is this: Teamwork or solo heroes?
If, for whatever reason, your project needs a team to work, say you want to support it for years to come and can not 100% guarantee that the one developer is still on board by then, or it is simply so large that you need more than one person to do it, then you absolutely can not use asocial people. Any and all attempts to somehow fit them into the team, or build the project around this inherent conflict will fail. You can't go faster than the speed of light, it really is that simple.
However, there are projects where you need a lone hero. A crash project that needs to be done with next week, and can be shut down the week later, but it absolutely must be there during that time, and there's absolutely no way you can get it done while following procedure. Or - the more common case - you inherited a project that only this one dude even understands, and you don't have the manpower to replace it or reverse-engineer it. And sometimes, you have a project you want to fail spectacularily, and absolutely no team will give you the same show for your money that a fanatical lone hero can bring.
So if you need a hero, then enable him, empower them, and suck it up. If you need a team, kick out the hero and make sure your team knows who to thank for it. Just don't try to have both. You can't. Been there, survived it, and I did, in fact, get a T-Shirt.
Assorted stuff I do sometimes: Lemuria.org
There was the single coder that ported, without authorization, Windows 286 to Windows 386. He got enough of it to work that he demo'd it up the chain until Ballmer took a look at it, threw a chair, and said "f---- you just killed OS/2!"
They threw some more developers on it, and the rest, as they say, is history. A single developer laid the groundwork for Windows 3.1.
This is my sig.
Yes.
It was a running gag back in engineering college. A bright-eyed student would start his engineering major (electrical, chemical, etc.), get his ass handed to him, and then switch to computer science.
While there's certainly a steep learning curve in becoming a developer, at the end of the day its just a matter of hands-on experience. Fold flap A into slot B enough times and you eventually get the hang of it.
But most of the concepts are understandable to the everyday human. In business development, the mathematics involve rarely involve anything beyond some complicated algebra. If homeboy was a *real* genius he'd be in game physics or data compression or quantitative analysis or some other programming field where calculus and other brain-bending forms of math raise their ugly head.
I've found that there's a big difference between "clever" and "smart". The smart guys figure out how to store 100GB of information on a 3.5" disk. The clever guys come up with microblogging. Most developers fall into the clever category.
Prisencolinensinainciusol. Ol Rait!
I mean, if you are a genius, why wouldn't you be nice... if you are better than everyone else, then, take ownership of the team, put the project on your back and just do it. That's what you were meant to do. No need to be a dick about it. If its so hard, maybe you aren't so smart!
This is my sig.
Being a systems guy, I've worked a lot with quirky developers. I also work an industry that is a haven for crazy proprietary standards. The description of "Josh" in the article is very close to some people I've had experience with. The "extreme niche" of my industry makes things worse -- newbies are useless for months until they can begin picking up how things work. Once they learn, they're highly-prized, which makes it really hard to get rid of lousy developers.
At least for the present and in the past, IT work has been all about being a hero and pulling insane hours to fix something. I've always been a fan of doing the engineering and documentation up front rather than staying up all night messing around with a problem. For every one of me, there's 10 Joshes. And since Josh is constantly fixing the mistakes as they appear, he's the one that ends up the hero. Management declares Josh the wunderkind, and the rest of the IT staff ends up second-class citizens.
Does that sound bitter? Not in my mind. I actually don't mind going along and doing my work. However, companies that embrace Joshes set themselves up for a big problem later on. What happens when Josh leaves (and he will)? The rest of your IT staff now has to pick through his undocumented code and figure out what he did. Also, if Josh is an offensive jerk, no one is going to want to talk to him, which makes the problem of no documentation worse.
Companies do need really smart developers. However, management needs to realize that parts of IT naturally attract "socially challenged" but really smart people. They need to keep on top of what they're doing and set appropriate limits.
The next generation of IT work *may* limit the appeal of the lone wolf/nerd brilliant developer, but I don't see that happening anytime soon. Until then, I have to put Josh's untested code into production because he doesn't need any QA people looking over his shoulder. :-)
I get on site, the previous four administrators are now gone. I check things out and discover things like the architecture is fundamentally flawed, documentation is wrong and must now be discarded on face value and redeveloped from scratch, security holes big enough to drive a truck through and a complete lack of best practices. Meanwhile I must undo their previous three-four years work, re-architect, document, upgrade and migrate everything.
The previous employees were incompetent, management didn't know better and now it will cost a fair bit of money to fix everything.
People like Josh, on the other hand, should be fired on the spot.
I don't think so. They can just be recognised for what they are, and treated accordingly. Think of him as a fire extinguisher--a pain in the ass to clean up after, but from time to time invaluable. Sometimes you need a solution NOW, and you will have time to clean it up (or re-implement it more carefully) later. Perhaps your expectations for him were too high. Understand your resources and learn to use them appropriately.
"The biggest problem with communication is the illusion that it has taken place."
"Is mediocre management searching to blame lacking cat herding skills on cats?"
See? I can make insightful headlines too.
Amidst all of this mud-slinging, we hear some actual examples of what Josh's supposed failings are. The first one is a developer on his team, who is responsible for implementing and patching version 1.0 of the code, decides to not do his work, and goes to Josh, who is writing version 2.0 of the code, and sounds like the head developer on that, and have Josh do his work for him. Josh tells him to fuck off as he is busy, on a deadline to write 2.0. Then Spiegel walks in. Spiegel is there to reprimand Josh for not pulling off his tight developed schedule, and deal immediately (without scheduling it) with a problem that his own incompetent developer can't deal with. Spiegel is shocked Josh isn't obsequious in the face of this demand. Josh's paycheck is dependent on him getting version 2.0 on time, why should he spend more than the 50, 60, 70 hours a week than he's currently working to dump everything immediately and go deal with a problem due to an incompetent developer who can't handle the work?
So the story is Spiegel has an incompetent developer on his team who can't figure out code and how to do his job, so the bad guy is the coder who everyone including his manager says is the best, most brilliant coder, who won't drop everything immediately and go work on Spiegel's problem. After which Josh will either miss his deadline or have to work even more hours than he has to, and Spiegel looks like a star for fixing his problem. As far as curtness, I wonder if Josh worked 40 hour weeks, had things scheduled far ahead with reasonable deadlines and a full and competent support staff in place? Why do I have a feeling that was not the case? Spiegel had a developer on his team and mentions the 2.0 team Josh is on. So why didn't his own developer or someone else on the 2.0 team look at it? Because Spiegel wants the star of the 2.0 team to drop everything and fix his problem.
and that seems to be A-OK, doesn't it.
I mean, that's why he gets ~50x the salary of the workers and a bonus in the millions, yes? Because you MUST HAVE HIM!
Strange isn't it, that when it comes to executive or director pay, your company pays top dollar "because we must have the best", but when it comes to the people who actually DO the work you sell, it's all "it's a competitive market and we can't afford to spend too much on salary or we'll lose customers".
i.o.w.: josh isn't payed to go hold your hand, share funny stories or go to the mall with you and your kids, he's payed to get the job done, whatever it takes.
If that makes life hell for his co-workers, the company should make a decision: what are we: an organization which purpose is to keep some group of people off the streets or a business? If it's the former, Josh has to go, as he'll force the rest of his coworkers to go back to the streets, however if it's the latter, the rest should either shutup or do their work as well, as they too aren't payed to babble for hours at the watercooler.
Never underestimate the relief of true separation of Religion and State.
Nice Story; kinda like penthouse-forum for geeks.
I have a simple policy, for myself and for people who work for me.
/F
If it isn't fully documented, it isn't done. There are no excuses, period.
Stupidity... has a habit of getting its way.
perhaps brilliant people are angry because life sucks.
You poor fools who die boring, polite and pointless never realized the tragedy of it all.
Funny how what you think of as the boring and polite people don't actually think life sucks, eh? I get frustrated at the attitude of some sheeple too, but there is something to be said for being happy.
Sometimes these people are not actually boring either, just respectful. Speak to them in an informal situation and they might not be as boring as you had previously thought. You don't have to be a jerk to have fun.
which is totally what she said
This guy's only important skill is that he understands how his own code works. That's all. You can hire smart specialists in any other field that he's good at. Maybe they'll be a little more specialised, but they'll be able to help the rest of the team develop and they'll be replacable.
Aside from that he creates code that only he understands, making the company more dependent on him.
The main problem is that by giving him more work, you end up becoming more dependent on him because he produces more code that only he understands. The other problem is that you can't easily get rid of him. The only thing to do is give him a nominally impossible make-work project, while other people work to clean up and rewrite his unreadable code. Then make him expendible enough that you can discipline him without repercussions.
You can be an idiot and be irreplaceable - and of lot of these guys are.
One clown I came across deleted all the test code, because he thought testing was a waste of time. He was gone a good 8 months when that shit hit the inevitable fan.
The problem is that they write shit hot amazing code that does the job and impresses the PHBs, but if it is unmaintainable by a team then:
(a) It's not scalable (in terms of growing the product)
(b) It's long-term useless
This is the equivalent of a teenager thinking they are super drivers because they can speed at 130mph with their eyes closed. An experienced driver knows that deer can jump into the road.
Genesis 1:32 And God typed
To me, "quirky" means someone who eats offbeat food for lunch, or works particularly strange hours, or wears ripped T-shirts and cutoffs in the dead of winter, or wears a suit and tie when not visiting a customer, or who consistently underestimates schedules by the same amount each time. These can either be ignored or worked around (the person who consistently underestimates his schedule by a factor of 3 is easy to plan around, just triple his time estimates and caution other people to do the same thing). That's harmless.
The prima donna is someone with mildly narcissistic tendencies whose ego needs some stroking, but who will get things done in a fashion that allows others to understand what's going on. I can handle that, up to a point. If when push really comes to shove the person works well with the team, OK, he or she is fundamentally a good person but has some insecurities. If the person insists on taking all the credit for a team effort, that's getting destructive.
A real narcissist is another matter altogether. Someone whose code is impenetrable, who refuses to document anything or tell anyone what they're doing, or who deliberately and maliciously offends people (wearing offensive T-shirts...I don't simply mean less than stellar personal hygiene) is another matter altogether. Doesn't matter how brilliant the person is, someone like this will destroy a team, and however clever their work, it's not going to be usable if anything changes.
The first job responsibility in our employee handbook is that we have to get along with other employees. In other words, yes, it is my job (and everyone else's job) to not piss people off. Unless Josh can literally do every job in the company, he's not worth losing other employees over. No matter how productive he is, he's not the entire company.
Plus, creating a hostile work environment is illegal.
Any company that tolerates assholes like this will have no other competent employees.
If I inherited a dept. and got someone like this, I'd look at a few things:
*If he was making a net negative contribution, it's an urgent problem that requires fixing now, otherwise it's "just" an opportunity for improvement
*Is the person's personality such that he will "never" be "normal," that he's as socially adept as he will ever be?
*Is the person's personality such that he isn't open to change right now but with some maturity he might be in a few years?
*Where is the best place for him in the company right now?
*What can we as a company do to help him mature so he can really shine?
After looking at all of these questions and more, I'll have a good idea if he's someone we want to keep on the staff or not.
If we do keep him on the staff, then I'll probably isolate him. There are good programmers out there who enjoy working around such "eccentric geniuses" and are more than eager to be the "public face" of a 2-man team, or even manage a team of such people.
--
When I was at University I met several nutty-professor-in-training-types who I thought "I'd never want someone like this on a team, but I'd love to put them in a closet and throw work at them to make me a boatload of money, and they would love it too."
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Except, cleanup (or re-implementation) never happens. What will happen is layer upon layer to work around bugs and problems. Because you can (almost) never justify to upper management that you need to reimplement something that works and the finish product is basically the same you started out with (with cleaner code, maybe).
Je ne parle pas francais.
Um no.
Because there are a lot of good people who can do the work and better and be a company player too. You are assuming that Josh's skills are irreplaceable. And that a good employee cannot do what he does. I am sorry, he is replaceable, and you can get a more professional guy to so the same job just as well, if not better because he is not so high on himself. I too have cleaned up messes after people like him. And let me tell you I have never seen any work by these guys that make me go wow this guy is my superior, in programming. Usually after a couple week I figure out the flow and I am just as productive as the guy was before, except people are willing to talk to me. Ask questions and raise problems that the other guy made them to afraid to mention.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I've been in the development business for a while now, and I've been on both ends of this mess.
As a cocky young prick^h^h^h^h^h developer right out of school, I would frequently go off on my own and do things that I thought were cool and clever. Occasionally, they actually were. Never really thought much of it, in those days of 80 hour weeks, but one day I got sick and stayed home. Much to my dismay, I got phone calls all day long because of how needlessly complicated and unfamiliar my shit was. From then on, I started to see how it wasn't that cool.
Fast forward a few years and I'm the project lead on a pretty ambitious (couple million lines) web project. One of my direct reports was a Cowboy Coder like I had been. He did a lot of the same things, and I understood why: it was faster. He understood the codebase better than anyone, and so he could fix problems in an hour or two. Other devs struggled to do the same in days. In the end, I had to make a policy that everyone would take a few hours each week and teach their job to someone else. That way, if one of them got hit by a truck or something, the project wouldn't sink. There was a lot of bitching at first, but when devs realized it meant they wouldn't be getting nagging calls on sick days and vacation, they were a lot less pissed.
In the end, it's about the team. I'm not writing the code for myself, I'm not managing the project for myself. It's for my employer (assuming I'm not self-employed) and I have to consider what is best, in the long run, for them. Yes, bringing the whole team (or at least a few other people) up to speed on stuff is expensive, time-wise. But it totally pays off in the end.
In Soviet Russia jokes are formulaic and decidedly non-humorous.
My local "Josh" is a genius, has gone from Athiest to American Indian to Christian to converted Jew (the last because he doesn't believe the miracles that Christians talk about), has a habit of telling the most inappropriate jokes, shows up when he wants, leaves when he wants, cannot/will not explain his code, will not code with others, insists the DB be designed to his standards, and produces code that does the job very well, but is utterly unmaintainable.
He also collects the bonuses and gets the trips and training money. (The last, training trips and seminars that he usually ends up walking out of because they don't go along his lines of thinking.)
Politics is the art of looking for trouble, finding it everywhere, diagnosing it incorrectly and applying the wrong fix.
I rarely shower, wear worn-out filthy clothes, neglect anti-perspirant and have defecated on countless lobby plants as a career building move.
Now my co-workers consider me a genius because they have been conditioned by people like Josh to presume that only a genius could get away with these things.
The fact that I can't code worth a crap does not enter into the equation. Perception is reality.
Nullius in verba
I wonder to what degree "Josh" here is an exaggeration. I'll say that I'm probably the "Josh" of our office - to some degree. I don't wear offensive t-shirts, but I don't normally do suit/tie (normally a polo and jeans - though often the polo is untucked). I am regarded as one of the few "people persons" in IT though (contrary to the "Josh" example).
But, I am the odd ball out at work. I typically embrace new versions of software much quicker compared to many of our older workers who must be dragged kicking and screaming into an upgrade. I'll code stuff in whatever language I feel suits my mood and the requirements of a particular problem. I keep up to date with the latest technology trends.
The "documentation" thing is one that I hear a lot. I try to document what I do. But some people can be unreasonable. For instance, I setup an amavisd-new email filter. Now, amavisd-new is a well known open source tool. It's ALREADY documented. Is that enough? Nope. I'm expected to write NEW documentation for the tool so that the rest of the IT department (who doesn't understand much Unix) can use it. I don't mean a diagram as in "here's how I setup the system", as in I'm expected to produce documentation on "How to release a quarantined message" when it already exists.
Not to mention that when you look at how some of these people code and/or setup systems/databases, it's obvious just WHY they need so much documentation. The darned things don't make any sense. Without some ancient codex you can't make heads or tails of the system. So rather than do a clean and logical implementation, they'll do something that makes no sense and then go about it as if everything is OK so long as there's a written explanation of the kludge on file somewhere.
I think far too often "Josh" might simply be getting mud slung his way due to the shortcomings of his peers.
"People who think they know everything are very annoying to those of us who do."-Mark Twain
I don't think this is a "quirky" developer. A "quirky" developer is one who talks obsessively about Pokemon or has trouble making eye contact. Then again, I've met my share of sociopath managers too, so I don't think development is the only place you find them. Let's not confuse "quirkiness" with severe personality disorders.
Yeah, maybe Consultants should add DRM to documentation, so that customers can only have one copy and it's only viewable in a DRM infested viewer.
And trying to break/bypass the DRM gets you slapped with the DMCA.
Also:
Drop down menus should come with an ok button
Slashdot doesn't allow pictures, but this is what I imagine is one of the drop-down menus on Reiser's last computer:
Action->
*Open sandbox for ReiserFS improvements
*Edit documentation
*Kill wife
He meant to edit the docs but his finger slipped.
An OK button would've really helped a lot here.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
There were times when they were the only ones who could solve a problem that could have cost the company millions of dollars. Of course, most of those times were the result of code they designed or influenced in the first place.
That's not one of the "great developers". That's a con man. Obnoxiousness when challenged is typical con man behavior. It's a manipulation tool.
In a long career, I've met many of the "great developers"; including many big names that are in the textbooks, and dozens of others at the top of the field. None of them act like assholes. I'm talking about MIT/Stanford/CMU/Apple/Sony/IBM Research people. Some can be difficult to deal with, and a few have real trouble explaining their work because they get too wrapped up in their own theoretical niche. Some of them don't suffer fools gladly. But none of them are jerks.
We have a couple of programmers like this, and I can tell you, they pretty much all wind up like Josh if they're bad enough. The problem is that their antisocial behavior results in huge sections of code, even within a "group" project, that only they understand. Over time, that means they become more "valuable" only because they're the only ones who know the code, and as such they tend to develop seniority, which makes them even more dangerous as they implement their craziness elsewhere. They also drive away other more reasonable and often just as competent developers, who themselves can't tolerate how mgmt tolerates the crazy in their midst, and elevates them despite them not doing the right thing. It's a vicious cycle.
In other words, both the developer and their manager are at fault. If that dev, at the age of 22 fresh out of college, had been told within a month of their first job that they could change their behavior or be unemployed, most would have changed. The ones who wouldn't or couldn't would be (and should be) unemployed, and living in their parents' basement working on some open source project. Not doing so is the classic short-term gain at a long-term cost, and managers need to look at it in that sense in order to make the proper business decision. Sometimes that makes sense, but most times it doesn't.
I have not experienced any correlation between ingeniousness, quirkiness and the behavior of the management.
Josh is paid to do his job. Part of the job of a programmer is to work with others. Part of most people's job description includes things about hygiene, appropriate work behavior, teamwork, etc.
If Josh's coding results in ten thousand lines of spaghetti code with no documentation and riddled with single and double character variable names that result in other people not being able to do their jobs, then Josh is not doing his job.
If Josh and his office smell like a pile of garbage, he is not doing his job.
If Josh is saying offensive things to people, he is not doing his job.
In other words, Josh is not doing his job.
There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
Here on /. we probably all have a bit of Josh in us. In the way that we know more stuff than others because we probably care and because we can be arsed to read a manual once in a while.
Nothing bad in that. Except that the Josh in you should grow up and accept that documentation HAS to be written. Eventually you might wind up actually documenting by default, generating man pages, Javadoc and understanding/writing technical architecture documents.
Regardless how brilliant you are, tedious things like documenting you'll have to learn.
Rudeness is a symptom of hiding insecurity. (Then even brilliancy may be driven by insecurity.) Rudeness is IMHO never excusable. I take the Josh in TA isn't likely to be rude to his bosses.
I bet the outfit Josh is working for doesn't give dick about a tiny bit of quality (write doc, know where they are, know who should be informed, check documenting is actually done, etc...) That's probably because quality costs. I take a long shot in saying that management most likely knows they are not paying for quality and that eventually when Josh leaves they'll get a new Josh.
In Josh'es defense: Some time your coworkers don't even know how to read basic documentation and even if everything is around they still find something to complain.
More likely though, if you start digging into his code you'll find it's horrible and that you shouldn't touch the system with a barge pole.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
I will be if I get promoted one more time.
The two levels above me have no clue (they were reorganized over our department but really don't know who anyone is or what anyone is doing or what is important and what is trivial).
I was always a leader type (lead sports team, lead online guilds, organized groups) so being a low level manager is fun. I was a solid intuitive maintenance programmer. I was not a brilliant developer but after loading the code, I could figure out problems in a non-logical fashion.
I'm solid at building morale, coaching programmers how to game the system better so they get promotions and raises, and running programmers and projects so they arrive on time without the programmers having to work overtime.
And I have carpal tunnel so I can't do head's down coding any more.
I'm good at where i am- but if I were moved another level up, I'd be another clueless manager.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
If he'd chosen the pseudonym "Joel" instead.
Yeah, I was all angsty in my 20's too. I had long frizzled hair and wore an army jacket with patches all over it, and hated the world and all the stupid morons in it.
I'm now in my 40's. I have a haircut, I'm sitting in an office cube wearing a polo shirt.
And I've got some news for you. It's *all* pointless. The end is the same for everybody. We're all worm food. Doesn't matter if you rage against the machine or oil its gears. In a hundred years, I promise you it won't matter one whit.
What does matter is what you do with the time your have. And I'll say this - I'm happier now at 40 with a nice job, nice house, nice car and a family I love dearly - however boring and polite it may be - than I *ever* was at 20 running around rebelling against everything mocking the stupid sheeple.
My advice would be to take whatever brilliance you may have and apply it to your own life, if you're able. Solve your own problems. Find whatever happiness you can. Because sitting around picking at your own wounds to keep them fresh doesn't do a single bit of good.
I have friends who never "sold out". They're miserable. Most are too poor to fix their missing teeth. If you sit around and tend a harvest of misery your whole life, then that will be your reward.
To sum up, life only sucks if you work at making it suck. Let it go.
Weaselmancer
rediculous.
They should be recognized as douchebags and fired on the spot.
Proper management and planning means you don't need a Josh on your team. The guy should have been fired before he was ever allowed to become so integral to their solutions that getting rid of him would mean pain for the group.
There are very few irreplaceable workers in this world, and none of them work on code.
So an individual who vastly outperforms all other workers, and who is solely responsible for making that company money, is kicked out the door because of what? Because others can't read code? Not for work performance, which is what he was hired for, but for smelling bad and having a bad attitude? If that was such a problem why wasn't it in the dress code? I thought we were supposed to tolerate diversity in the workplace? This is another example of the left wing liberal commutarians destroying the individual's ability to function!
Only sheeple use the word sheeple.
Baaa.
Watch this Heartland Institute video
1. he was NOT the genius they thought he was, just because he knows more than his customers doesn't make him anything more than smarter than non-techies
2. looks like he wrote shitty code
3. he's an asshole
Josh and his company needed one thing to happen so be successful, fire his ass at the first sign of idiocy. refuse to help your team, gone. treat a customer like shit, gone.
the problem with this story is clueless and spineless management letting a bad situation escalate.
Josh was a moron, not a genius. rename the thread appropriately.
except I was the one that debugged their "sloppy" and "crappy" code that while brilliant, had crashed the PCs and servers 12 times a day.
Eventually the extra stress of working on spaghetti code with no comments or documentation or flowcharts gave me a lot of stress and I got sick on the job, and then eventually fired for being sick.
Now I don't have a job since 2002 and the Brilliant but sloppy and crappy coders still have their jobs and promotions and pay raises.
Why does management like them? Because it takes one to know one, jerks like or love other jerks. In order to break into management, one has to become a jerk to their coworkers and underlings, or else they cannot manipulate them into doing work. Then when they offload the hard work to their coworkers, they are considered to be delegating work. All I got was insane puzzles to figure out from coworkers who were considered brilliant, but didn't know how to do quality control, secure programming, or even standard programming. Just sloppy code, crappy code, that was one big mess that coworkers like me had to clean up after.
Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
If there's anything that most business fail to do well, is realize who is a productive engineer. If an engineer does it in a couple of days, but only he understands the solution, is he more productive? What if the engineer takes two weeks but then any other engineer in the department knows exactly what they did and can maintain their work?
What about the engineer who is a framework guru that needs six weeks to build the frameworks for the project, so they need to only spend two weeks on actual problem specific coding? Is that more productive than the engineer that looks at the same problem as a "one-off" and does it in three weeks without building the frameworks?
So Josh is productive, but what happens what Josh leaves? We used to use a metric called the bus count. How many people would have to get hit by a bus before we lost all institutional knowledge of how something works. The bus count of 1 means you are up s**t creek if the one developer leaves.
I've met people who were rock stars and could document everything they did. They could play well with others and be smart. Having someone with serious skillz but unable to communicate and work with others (keeping the bus count at 1) is about as useful as a likable person that can't code.
The difference is that we tend to, on a gut level, respect competence more than incompetence, but working with others is a kind of competence. So, at some level, we have more sympathy for someone like Josh, as does management. In the long run, however, Josh can't fix all the problems, Josh can get hit by a bus, or Josh could just decide to go off and do his own thing. In any case, letting Josh get that much control was a management, not Josh's, failure.
Leave the gun, take the cannoli -- Clemenza, The Godfather
just assholes?
In that time, the worst screw-ups have been exclusively codes developed in bureaucratic organizations.
It seems to me there is a personality type that is in love with structure: it doesn't matter whether the structure is appropriate or not, just that it proliferate. This leads to codes that are not merely baroque, but positively rococo. And this is the personality type that flourishes in bureaucratic environments.
The first principle of software engineering is Occam's Razor, more flippantly stated nowadays as "Keep it Simple, Stupid."
My experience says that the lessons Kernighan and Pike teach in The Practice of Programming are de-valued in development-bureaucracies. And DeMarco was right-on in The Deadline about that subject, too.
"My opinions are my own, and I've got *lots* of them!"
False choice, people. The vast, vast majority of competent doctors I know (and I know a lot) are both effective and tactful. If a doctor like that told me I needed surgery, I would fire him and shop around for a well-mannered surgeon.
This space intentionally left blank.
can we please stop enabling these people?"
Uhmm, no? It's millions. What's a few perks in comparison? One just needs to find the right place for them, to be at hand, should such problems arise again.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
And if production has an issue that can't be fixed due to poor documentation and an MIA developer, the responsibility for that falls on the PHB. This is why in the long run, no documentation = not finished.
...genius code is not that hard.
It's very easy to use your own style for eveything and reimplement every existing toolset because "you know best". You can heavily over-engineer every library you write. You could do something outlandish like creating a custom scriping language for you business logic. Academically clever it may be, but it's totally wasted in any production environment.
What's hard is writing good, clean, concise (yet not obfuscated) code. It must well structured and sensibly designed. Not just so that you can maintain it, but that everybody can. The kind of code that'll convince subsequent devs follow YOUR example, rather than come up with their very own individual "clever" style and fuck it up for the next generation.
"Genius" code isn't that clever. Genius devs write code that that even the least talented there can comprehend.
You feel sleepy. Close your eyes. The opinions stated above are yours. You cannot imagine why you ever felt otherwise.
You're right, but the thing is, you can see the value most developers put in comments, in the quality and emphasis that programming languages put on comments. At best they're an afterthought, implementing what other languages have done before. I've never seen comments done "right" so I end up doing it myself.
I currently write in html, php, javascript, css, perl, sql, and command line script. Comments are supported differently in each. CSS is particularly awful, only supporting /* */ and including it in code-weight.
(mini-rant)
There are many types of comments.
To begin with, there's code-header comments - program name, change date, inputs and outputs, platform, etc. I used to program in COBOL and these were mandatory. In some languages this can be used to autodocument.
There are declarative comments - the kind you usually expect. They tell what a function or program section should do.
There are temporary notes and to do comments - "remember to change this so that it won't fail if we get a negative", etc. I use #! and #? for these (or /* #!yaddayadda */ if # isn't supported).
Then there's comment-out: places where I leave the previous code in for a while so I can see what I changed. If I can I put the # in the left column for these; wish there was a whole different symbol for it.
Finally, there's well-formed/best practices code as its own "self-documenting" - but that does not substitute for good comments.
(here's my blog rant)
http://www.obtainium.org/index.php?option=com_content&view=article&id=234:250&catid=7:programming&Itemid=2
These people wouldn't be dangerous if they weren't brilliant. It's something called "the aura effect". When someone does something well, everyone starts to think that they do everything well.
I've seen people like that ruin entire departments. They can code like a demon and produce spectacular and extremely functional software. They do great things and then move on to the next project. They start to form a following, which adds to their notoriety. Small religions form around them.
And then some poor schmuck is handed last year's effort to make a few minor adjustments and finds that it's thoroughly undocumented and uncommented. The call structure averages thirty functions deep, there are more interfaces than there are classes and as many classes as there are functions. Everything is extremely efficient because there is no segmentation of functionality, and subsections have no clear interface boundaries. But because this person is such a great corporate asset, said poor schmuck has absolutely no traction with management in terms of calling attention to this.
More years go by while the superstar wraps entire departments around their coding habits. Great chunks of the company's IP are written in this person's style because he's become a shining example of how things should be done. Maintenance costs go through the roof until enough software engineers with a clue point out these problems and insist on policies that address these problems, and major projects have to be initiated to rewrite huge chunks of existing incomprehensible spaghetti code.
At which point our shining primadonna takes his experience and awards and goes and finds a job with a fat salary in some other poor company.
Wake up - the future is arriving faster than you think.
Ok, I'll bite, what's a TO -- sounds like someplace to send e-mail
(this should probably be rated -2)
"I'd rather" does not imply mutual exclusivity. Allow me to rephrase: Given the choice, I would prefer someone who gets the job done over someone who is tactful. My last ENT was exclusively the former, and the others (as far as I am concerned) were exclusively the latter.
It isn't mutually exclusive for developers either, but given the choice, I think getting the job done should be more highly regarded.
Comment removed based on user account deletion
Developers are becoming resistant to documentation as the lack of documentation affords more job security. Better documentation = easier to replace the original coder.
It really is that simple.
-=[ Who Is John Galt? ]=-
I sincerely doubt you are more than 160 times more productive than an average developer...
Perhaps he's not managed by the *average* large-corporation manager. Trust me, I've seen changes that would have taken me a day to complete end up stretched over six months because management is clueless and obstructive. You can take my personal experience with a grain of salt if you'd like, but there's probably a 10 to 1 ratio of performance between coders in the same organization. Combine this with the fact that management can obstruct or enable productivity by two orders of magnitude (again, personal experience), and it is easy to see how some developers are 1,000 times more productive than others. For the GP to be 160 times more productive than average, he needs be nothing more than a lower 20% coder in a company with good management practices.
The society for a thought-free internet welcomes you.
.
The -very- first thing they had me do when I arrived was produce page after page of documentation on how the hardware actually worked so that the software guys could understand it. It wasn't ground-breaking design, it wasn't super complicated, but it was subtle and you couldn't get the whole idea of what was going on without being able to speak Engineer (specifically the EE dialect). A lot of people in the company were terrified that he'd walk out one day and get hit by a bus and the company would have to spend a fortune it didn't have for a team of engineers to come in and tell everyone else how their own system worked.
When I asked him why there was no documentation (or very poor documentation when there was) the answer was a combination of "You shouldn't need documentation" and "I'm not paid to document things."
Well, actually... you are.
A few early experiences counseled me very strongly to enforce good documentation practices in my code and hardware design. Any design more complicated than a blinking LED (the hardware equivalent of 'Hello World') requires it - if you aren't documenting, you're not doing what you're paid to do. As TFA says, End of Story.
Scientists point out problems, engineers fix them
altslashdot.org: The future of slashdot.
And never hire assholes again. It's that easy.
I've come across several Josh's in my career and they have been labeled as geniuses simply because they did something first in a company. All it takes to be recognized as a genius is to get a product off the ground and "good enough" that somebody will buy it.
From there comes the rewards and the swelled head and the feeling that they are geniuses. The rewards come from PHBs that don't understand that what they did was all that special.
Right now, my team is rewriting an application written by a "genius" that is not documented, no comments, variable names were written in Hungarian (the guy who wrote the code is in Mississauga, Ontario, Canada), what does work is crappy and there is a lot of functionality left out (with the comment saying that he has shown the way so we can replicate it for the missing features). The code looks like a drunken monkey wrote it with no regard to conventional (or even consistent) indenting and spacing. Asking for questions just gets a reply like "Josh" and complaints from his manager demanding why we can't hire competent developers because he is too critical to the business to support us.
The one genius I have met from a start up, made sure that there were coding standards, insisted on documenting everything and put in place test requirements. When he left, nobody had anything but good things to say about him - and his peers (the people who matter in the long run) regard him as a genius.
myke
Mimetics Inc. Twitter
I'm one of those fairly bright, fairly quirky, sorts.
A while back, one of the managers explained to me in engineering terms how it is useful to other people if I explain what's up, give them status information, warn them about possible deadline problems, and so on. And I spent some time reading about, and writing about, usability. Net result? I'm still weird, I still occasionally say things that are offensive -- but my coworkers appear to like me and I cooperate well with others.
So far as I can tell, the problem is often simply that no one has explained why this matters. Seriously, it's not always obvious. I have warned my coworkers that I have a clinical diagnosis of a mental disorder, and that if I say something offensive it's probably not intentionally-offensive, and they cut me a bit of slack -- but I do make an effort to avoid offending, because it's just common courtesy and all that.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
Try hiring ANY decent coder that works with my former boss's highly impossible deadlines.
I'm with previous parents. A good fire extinguisher (Asperger's) is handy to have. Deadline gets met, even though the end-result (support and maintenance) sucks.
Most start-ups are in it for a quick and lucrative exit strategy (post IPO-sale).
Yes I was and still am. I did learn some people skills though along the way. But let me tell you there are coders and then there are programmers. Josh and my self or the latter. 99% of coders out there could not program there self out of a box with 3 of its sides missing. Its not an insult it is just that they can not see the logic in there head. That is why they need to flowchart/entity diagram/what ever the problem is to death and then sit around and discuss it with a team.
Programmer like me and josh just sit down and start typing.
Yes there is a place for us. We are the clutch player the guy you go to in the endzone with 35 seconds left on the clock for the win in the supper bowl who are inches from the sideline but stick the catch and keep both feet in bonds.
We are not the guy you go to on second an short on the 50.
Are we premodans yes, one company I worked for made me and engraved sign that said "Go Away Programing" and sent a memo out that all employees had to sign say that if the sign was on my office door they were to leave me alone. Hell the owner of the company though twice about bugging me.
Any way in any field you need people who you go to when it absolutely has to get done. This is why we have navy seals, doctors like House and yes they exist, and Santonio Holmes. Are we irreplaceable no, but we are less replaceable than most.
Josh/Glen
Linux modi 2.6.26-2-parisc
Because there are a lot of good people who can do the work and better and be a company player too.
Um no.
The article was about someone who can do an incredible amount of coding in a very short time. Indeed, more coding in less time than most anyone else.
It isn't that they weren't smart. In every case, these "great" developers were the most talented in the group. Their intellectual abilities and problem solving capabilities were unparalleled.
Obviously, if there are a lot of people who are equally fast and one can't work with teammates, then fire the asshole. But that wasn't the question. The question was how to deal with one asshole who can churn out more code faster than everyone else. You can tell me you're as good as anyone else until you're blue in the face--in which case your employer is lucky to have you--but that's not what the article was about. It was about someone who was much better than you (for a certain very circumscribed--but potentially useful--definition of "better").
Sure, if you spent sufficient time and money, you could find someone better than Josh. And ideally you do. There's always someone better on the market, out there, somewhere--especially in this economy. But if you have a limited budget for finding and hiring the best of the best, then an acceptable compromise is learning how to use the people you have. Understand what he is, and isn't, good for, and offer him what he's worth to the company. And learn to use him wisely.
"The biggest problem with communication is the illusion that it has taken place."
At my last job we in I.T. were getting deluged with requests that weren't normal help desk issues, like db design, web apps, etc.
One day when my director was lamenting this I asked if we could meet up later on.
I told him about project management. He seized on the idea and we put together a great process.
If a help desk ticket was to take more than 4 hours to resolve, it became a project. Project ID was the help desk ticket ID.
We then would go out and get the requirements and then develop from that. Tracked everything in dotProject.
More to the point we got senior management buy-in by letting them prioritize.
That all ended when a new administration came in, and I left 9 months later.
In short... it is only mutually exclusive if you are in a room full of a bunch of business MBAs who apparently as a whole still think that solutions come out of some magic hat somewhere...
room full of a bunch of business MBAs who apparently as a whole still think that solutions come out of some magic asshat somewhere...
They should be recognized as douchebags and fired on the spot.
Sounds like you want him fired because you don't get along with him. Perhaps you're jealous of his ability, such as it is? You needn't be--a good coder who can work with people is generally far more useful than a great one who can't.
Proper management and planning means you don't need a Josh on your team.
Proper planning means you'll anticipate every eventuality and be ready for it, which is of course impossible given that outside factors are basically random.
The guy should have been fired before he was ever allowed to become so integral to their solutions that getting rid of him would mean pain for the group.
You're confusing two issues here. He should clearly not have been allowed to become so integral to a sustainable solution, since he fucked up any hope of that. Firing him is one way to keep him from becoming integral to long-term solutions.
You might just as well advocate firing any manager who lets a Josh become involved in long-term projects. That would be just as correct. Clearly there are things Josh shouldn't be doing. A good manager will see that.
Actually, I like the idea of keeping Josh around just in order to test new managers. If they can't figure out how to use him effectively, fire them. He could be a truly invaluable resource to the company even if not a single piece of his code ever gets executed.
"The biggest problem with communication is the illusion that it has taken place."
Usually after a couple week I figure out the flow and I am just as productive as the guy was before, except people are willing to talk to me. Ask questions and raise problems that the other guy made them to afraid to mention.
Would you be able to figure out the flow after a couples of weeks if you didn't have Josh's code to look at?
OK, first there was the story about the delusional college student and now the weirdo. What next, the annoying guy who keeps talking about last night's episode of The Office or the ungrateful Russian intern who won't go out with you? Maybe we could move on to the guy whose resume didn't quite match yours, but his charisma is obviously blinding your coworkers except when you guys are having a drink at the bar and chicks come over to talk to him.
Seriously, what is with all of the "get off my lawn" or iron clad conformity stories on Slashdot? It does take all kinds.
Having Asperger's isn't a good excuse to do a poor job or to be anti-social, or unprofessional. Yes you may have hard time following the right non-verbal queues. But things such as dressing appropriately for work, using the bathroom in the right spots, and a lot of the quarks that happen are due to bad behavior that people even with serious Asperger's can work one and minimize and be at a professional level. I don't take the idea, that I have a disability so you need to deal with my Crap mentality, it is basically reinforcing that they can behave badly, without having them work on improving themselves.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
They can be brilliant, dangerous, dull, dumb or all together. If the manager is skillful enough, the whole team can benefit from the assets that everyone bring to the group
Except, cleanup (or re-implementation) never happens. What will happen is layer upon layer to work around bugs and problems. Because you can (almost) never justify to upper management that you need to reimplement something that works and the finish product is basically the same you started out with (with cleaner code, maybe).
Agreed; which is why this statement from TFS: "... could churn out code that saved the company millions" - is nonsense. It may look that way on the surface, but when accounting for all the code maintenance pains that inevitably follow, I've yet to see a single such "genius" that wasn't a net loss. What's worse, the expenses are quietly swept under the rug, or, even worse, shouldered by the rest of the team who gets flak when they can't keep up with the "genius" (because they're cleaning up after him).
I sure as hell wouldn't want to ride in an airplane running Josh's avionics software, but if I was on a plane that was plummeting to earth due to avionics problems and Josh was on board, he might be the best candidate to try to save the plane.
"Not an actor, but he plays one on TV."
NO we can't/shouldn't. Stop trying to change people!
Formal wear has no place in a 'working' environment.
big business meetings included. you can tell a lot more about a person about what they wear... Think about it.
Yes. As if I didn't have his code When there was a problem I would have to rewrite from scratch every time something broke, or create a workaround for it. But for the most part as the users of the software has the process down it makes it easier to remake such software. Yes it will take a bit longer then a couple of weeks but it is doable.
Having his code even if it is an utter mess and obfuscated to a massive amount will save time as I have something to work off of. But I have never came to a situation where when a "Josh" leaves I couldn't keep the company/software running, then improve it over time.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
TO = Terrel Owens. Great player, but is such a hassle to have on a team he keeps getting dropped from teams he plays for.
Software development is 40% technical and 60% people. Even though he my get twice as much technical done his bad people skills are affecting his usefulness, and still needs at least 20% people skills to be useful, however to balance him you will need to hire someone who is like 10% technical and 90% people skills just to support him. So you are in essence paying twice as much to get slightly less then twice output. You are better off with 2 people who can do 40/60 balance. As you will get twice the output without the risk.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I have a high IQ and this "Josh" is not brilliant. He is exploiting misconceptions of intelligence. I myself am not "brilliant" despite my IQ. All my life people had expectations that I would achieve all these grand things and that everything I touched was a "stroke of genius". Teachers and administrators always treated me as though I was "special". Students thought I would pass tests without studying, magically. Far from it. If anything, I learned how little intelligence really matters, especially when everything is instantly accessible.
First of all, brilliance is not obtained through obscurity. Sure some obscurities may be brilliant, but not many are. Think about this mathematically for a second and you will understand how confounding it is. This brings us back to what intelligence actually is. Intelligence represents how fast a person is able to learn. This is DIFFERENT than knowledge, which is information retained through experience.
In the case of computer programming, many of the tasks are repetitive; thus, great intelligence is not as important as having the knowledge, but still important in HOW you approach and analyze your problems. In this case, we see what happens when you have someone with lots of knowledge, but little intelligence. "Josh" indulges in the obscurities of his own knowledge but lacks the intelligence to quickly identify problems associated in a larger construct of connected factors ("the big picture"). He makes a number of assumptions that are based on his obscurity, not intelligence (or "relearn- ability"). Focusing on intelligence would mean focusing on making the learning process more efficient for himself at the benefit of others.
He can create obscurities, but how fast can he find them? How fast can he put the puzzle together to get the big picture? How fast can he learn that his obscurity is creating problems, not solving them. He is just a failed rationality that represents how very little, we as a race, understand our own intelligence. An assumption that correlation is causation is the culprit here since his behaviors are correlated with intelligence, but he fails to obtain. This goes beyond "josh", we (as individuals) should challenge our perception of intelligence.
Trying to install linux on my microwave, but keep getting a kernel panic...
Agreed; which is why this statement from TFS: "... could churn out code that saved the company millions" - is nonsense. It may look that way on the surface, but when accounting for all the code maintenance pains that inevitably follow, I've yet to see a single such "genius" that wasn't a net loss.
The folks who do extreme programming have a metaphor for this; they call it "technical debt", and point out that if you don't pay your debt down pretty quickly after running it up, you're going to get into trouble. Generating technical debt, they say, is an inevitable consequence of programming. But good programmers immediately clean up at least most of that debt as soon as they've finished implementing whatever they're working on.
The metaphor works. Managers are quite able to understand it, and it does seem to help in explaining what it is that's wrong with the kind of programmer we're talking about.
(They also have something else that might help in this situation: pair programming)
Why would you have two people doing the same project, one after the other? That's really dumb.
Except, cleanup (or re-implementation) never happens.
And, then, if it does, nobody bothers to even think of asking for help from the guy who implemented the emergency fix.
In one case, I was the guy that had to code like mad to get a database app finished. It was client-server before the web really existed, so it used a custom app on the client. When it was re-implemented later using ASP.NET, nobody even bothered to ask me anything about it.
That is to say let them be brilliant and congratulate them on it, Especially when they've got you out of a tight fix with some rapid coding.
Afterward when the dust has settled get them to go through their code and comment until another member of staff can understand it. Most people quite like explaining to other people how simple/elegant their solution is.
It will encourage them to comment as they code so they spend less time explaining it to other people later, and let them get back to what they do best.
Everyone wins.
if you are running a viable business in the long-term.
You've hit the nail on the head. The company in the story is probably not viable in the long term. Most of the people adding to this discussion seem to just want to tell everyone in the company, "Go home, your company is fubar." Real people won't give up on a sinking ship until it's too late. Management will stay with this asshole until he's dead or gone, and there's a good chance the company will fail after that.
All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
The article was about someone who can do an incredible amount of coding in a very short time. Indeed, more coding in less time than most anyone else.
Because all he was doing was writing code. He took an hour to solve a problem that took the team 2 days. "The team" must have been at least 3 people. So that's occupying 6 programmer days. 40-45 hours. It would have taken him less than an hour to document or explain what the solution was. Is he really worth 40-45 times as much as the other programmers?
If the guy produces a lot of unmaintainable code then he's costing almost as much as he's making for the company. His personality problems will increase staff turnover, and he will eventually leave. Nobody lasts forever. When he leaves everything that he wrote will have to be documented or replaced at considerable cost.
Most programmers will be able to do most tasks. There are some highly specialised tasks that will require an expert in that area, but you can always find the appropriate expert. Anything else can be learned. You'll lose a developer for a few days while he learns but you'll gain a developer with extra knowledge, and the half decent ones will be happy to stick with a company that allows them to develop.
It takes a variety of people to accomplish large tasks. Often this requires putting up with peoples' shortcomings in order to take advantage of their talents. Management typically has to figure out how to work around each team members' shortcomings and/or how to improve on these shortcomings.
I know I can be quirky at times; and I've had to work with quirky people. In all cases, it requires patience and empathy from all people involved. I've always told my teammates that the success or failure of a project ultimately depends on the quality of management; and not the quality of the individual team members. This is because management needs to guide interactions among team members; if the quirky guy is so bad that he's wearing offensive T-Shirts and taking dumps in the lobby flowerpots; it's just as much a failure of management as a failure of the quirky guy. The same can be said if "normal" engineers just can't write working code; it's a failure of management to recognize and rectify the situation.
Why do I say this? Every member of a team has its faults. Quality management knows when to say, "dude, you need to brush up on your SOAP skills," just like it knows when to say, "dude, you need to bathe with soap before coming to work."
No, I will not work for your startup
> In a hundred years, I promise you it won't matter one whit. Unless you're John Connor...
There are two distinct classes of this phenomenon:
1. People who just appear "brilliant" due to being good at obfuscation and self promotion. There are tons of these in any big company. They talk the good talk and move on shortly before management discovers they aren't all they're pretending they are.
2. People who ARE so brilliant, that bringing them to the lowest common denominator would be hugely unproductive and they'd probably just leave rather than comply. I've met a few folks like this when I was at Microsoft. It was a humbling experience.
So I say beat #1 into submission and let #2 do whatever the heck they want. The trick is to get your average front-line manager to figure out which is which. The distinctions that are obvious to a grunt in the trenches aren't all that obvious to them.
I don't care if he's brilliant, this guy's a legal liability and he needs an ultimatum: if you ever single out your female co-workers again, you're fired.
He may be good, but he's not worth a sexual-harassment lawsuit.
-JS
Vanity of vanities, all is vanity...
When I asked him why there was no documentation (or very poor documentation when there was) the answer was a combination of "You shouldn't need documentation" and "I'm not paid to document things."
Well, actually... you are.
So he didn't document things, right? And management knew this, right? Did he continue receiving paychecks?
The fact that they hired you shows that he was right, at least on the reality of the situation.
That's all well and good unless you're expected to meet unreasonable deadlines to begin with. If I have to get something done in a short period of time, documentation is not a priority. Of course, I'm the only programmer at my work, so its not like anyone else has to look at it anyway.
Being required to produce documentation along with one's design often makes the design better, because it encourages a design that's easy to document clearly. The lazyness principle makes you want to avoid tricky things that take pages of documentation. So even if you think the documentation as some crap that goes along with your nice, clean design, think of the task of writing it as no different than a unit test or other QA; it exposes problems you might not otherwise notice.
Except, cleanup (or re-implementation) never happens.
I'd say that's clearly not Josh's fault. If you hire a team of paratroopers to build you a bridge, then you try to use it as critical infrastructure for the next 30 years, it won't be the paratroopers' fault when a bunch of trucks fall in the river.
If Prima Donna's skills are essential (or highly desired), hire an assistant to deal with the mundane niceties that Prima Donna isn't willing to deal with.
Flatter Prima Donna a bit, say "Look, what you do is amazing, but nobody else can keep up with you without documentation. We've hired Leroy here to fetch your coffee, screen your phone calls, and document your code. Just put a few notes in at the top and pass it off to him, and try to answer his few questions so you can get back to churning out code and reading xkcd."
Suddenly, Prima Donna has a lot fewer reasons to venture out of the cave and offend the female staff, and the code gets better, and in a year or two, Leroy will be so fluent in the code that Prima Donna can be replaced (if necessary) without significant hangup.
TLDR: PFY can be useful, as can PHB for providing PFY.
you sir win at the intarwebs ;-)
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
by that you mean they are a bunch of pricks?
Well the same could be said for the managers who don't have a single clue what the programmers are doing and just using them to pad their dept. The more difficulty a project the more levels of management from the top will require to translate tech speak into management speak. This is what happens when you hire jerks out of college with MBA degrees and a society that thinks people in Suits are better then T-shirts. for fricks sake they are making techs wear ties in some companies. The part in Matrix where Neo is talked down to is a businessman's wet dream.
We need to make sure the company we work for has a clue before we sign on. If no then its going to be hell and they deserve the no docs approach.
Sorry about the writing. Robot fingers, you know? Cliff Steele in DOOM PATROL #23
"I'm not paid to document things."
Well, actually... you are.
Depends on your contract - not just the paper one with a job description written 12 years ago by a manager who only worked for the company for 6 months - but the social contract you develop with your co-workers as the relationships evolve.
I think most people here are pissed at "Josh" because they let him get away with "his crap" for so long that they can't imagine how to fix things without firing him.
A polo shirt!? Get a button down, you damned hippie.
Proud neuron in the Slashdot hivemind since 2002.
After reading the article; my conclusion is that Josh isn't as smart as the manager thought he was. His manager was just deluded into thinking he was smart. I've had to clean up messes from developers like this guy; and it's shocking when I realize that it's a manager's delusion that the quirky guy is writing brilliant code that is what made a particular project fail.
No, I will not work for your startup
Software development is 40% technical and 60% people. [citation needed]
There, fixed that for you. How do you even measure those things quantitatively? That's nothing more than a way of saying "people skills matter too" and yet you're parroting it like it's a law of physics.
Even assuming those numbers are correct in general (to two significant figures, even), do you think that there's no variation? Do you think that you can measure an average and then insist that the real world must match the average in every case? Precisely enough that you can do that sort of math?
however to balance him you will need to hire someone who is like 10% technical and 90% people skills just to support him.
What does this mean?? It's not even wrong. Firstly, 10% technical and 90% people sounds like a manager or enabler, you need those anyway, and one of them can support a lot more than one 90/10 like a Josh. Secondly, are you suggesting that the company as a whole needs to add up the raw ability scores of all of its employees and make sure that the average is upheld? Methinks you've been playing too much D&D!
And you're still ignoring the first law of hiring: figure out what the person is worth to you and offer him that. If he wants more, then you can fire him. Again, another inexact science, but not so bad...
"The biggest problem with communication is the illusion that it has taken place."
I have to admit my experiences haven't been entirely negative.
First off, sometimes there is a time basis that cannot be avoided and a solution, however dirty, is required right away in order to complete a contract or open a web storefront or the like. In these cases the original statement is literally true, millions could be made or lost depending on whether you can flip the on switch tommorow or next week. At that point, you're making money in the long term, regardless of whether you have to reimplement.
Of course companies are usually, imo, too focused on the here and now results anyway and this is a double edged sword. It can get you to market quicker, but I have time and again seen companies shopping for development libraries or other similar tools go against the selection of one vendor by EVERYONE who was going to use the product and go for another cheaper vendor that no one liked because it saves the company 100k right now, even though the cost of developing locally all the missing functionality from the cheaper solution will easily end up costing more that the saved amount in the long run.
Jherico
What can the average user can do to ensure his security? "Nothing, you're screwed"
Sometimes you need a solution NOW, and you will have time to clean it up (or re-implement it more carefully) later.
Except, cleanup (or re-implementation) never happens. What will happen is layer upon layer to work around bugs and problems. Because you can (almost) never justify to upper management that you need to reimplement something that works and the finish product is basically the same you started out with (with cleaner code, maybe).
Not just that, but I *can* come up with something less than ideal on the spot when it's necessary. I don't need some guy just for those situations, all the more so because most of the rest of my time is dedicated towards preventing that scenario anyway.
William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
It's *all* pointless. The end is the same for everybody. We're all worm food.
is a great plan for mediocrity. There are struggles that are worthwhile and there are struggles that are pointless, but to say that no struggle matters is speaking from both ignorance and arrogance. I mean no offense, we're all ignorant and arrogant to some extent.
Doesn't matter if you rage against the machine or oil its gears. In a hundred years, I promise you it won't matter one whit.
I'll just give a few examples of why this isn't true: Martin Luther King, the Buddha, Jesus, Krishna (to whatever extent those last three are flesh and blood historical figures), Ghandi, US founding fathers, those who participated in the Tiannamen square incident, etc., etc., etc. All these people have had and will continue to affect life for humanity.
So, while it's true that blindly "raging against the machine" is pointless, just because you have
a nice job, nice house, nice car and a family I love dearly
doesn't make you any better or make your life more worthwhile or valueable than someone who can't afford to fix their teeth. Their pain and alienation may be far more meaningful than your "boring life" (your words).
All I'm saying is you don't have to settle for assimilation, blind hate, futility, alienation, mediocrity or ambivalence or comfort. Do something with your life and make the world a better place, but don't "sell out" or become so bitter that you are divorced from the world. It's not worth it for you or anybody else.
The thing is, there is zero correlation between being this good, and being an asshat.
Now, sometimes there will be a bad programmer who acts like this, and they just get fired fast. Nobody worries about them.
But when the stars mis-align and you get someone actually talented, who is also a jerk, some inexperienced managers will feel stress about the obvious decision.
But the easy, obvious decision is to fire the asshat. You can go out there and find someone just as talented who is not obnoxious. I promise, you can. Do it.
The rest of the team will have a party when the obnoxious one leaves. Overall morale will increase, people will be only too glad to jump in and fill the gap (until you replace him/her and the replacement comes up to speed). Everyone will respect management more, and they will see that treating coworkers with respect is really important, not just lip service.
By the way, the same holds true for the great salesperson, etc.
Where exactly is the conclusion being drawn that this guy even had Asperger's, or any disability? It's all just hypotheticals by armchair psychologists.
It's probably worth pointing out as well that most people with Asperger's are somewhat socially inept, but there's a difference between being socially awkward and just being an arsehole. The guy in the article comes across as the latter.
Some people are just genuinely brilliant without the "benefit" of a disability, some are just genuinely quirky, and some are just genuinely arseholes. Not every trait out there requires a mental disability or condition to explain it.
I wonder if perhaps there's an argument for pairing senior employees who do the critical design work with fresh hires to document the what and why of it. That way, the higher-up engineers don't have to write anything down and the junior engineers get to absorb some of their insight by osmosis.
Scientists point out problems, engineers fix them
altslashdot.org: The future of slashdot.
If the guy produces a lot of unmaintainable code then he's costing almost as much as he's making for the company.
Maybe. Depends on how they use him. Read my post again.
"The biggest problem with communication is the illusion that it has taken place."
A manager goes to talk to another manager's employee without first talking to the employee's manager. Add to that an employee with which the author clearly had many issues, ie dress, deportment, hygiene.
The talk, that the author can't recall, possibly with shame, a talk that deteriorates to the point that "Josh" quits and never comes back?
Sounds like maybe "Josh" wasn't the only one that wasn't a team player.
One of the programmers was brilliant, but actually insane. ... They kept him around because they couldn't afford to hire real programmers.
Having a psychiatric illness doesn't make you any less a "real programmer".
I'm sure there's a fair number of us here who have been treated for psychiatric conditions at one point or another and are still perfectly competent programmers.
Suppose your colleague's disability were physical rather than psychiatric. If he used a wheelchair, would that mean that he is not a "real programmer"?
Psychiatric illnesses are classified as disabilities under the Americans with Disabilities Act. If the condition can be reasonably accommodated by the employer, then it is against the law to discriminate on the basis of that disability. If your employer got to the point where they could afford "real programmers" and ended your colleague's employment because of his psychiatric illness (assuming it's a case where reasonable accommodation is possible), then your colleague could take the employer to court under the ADA.
Does the Terry Childs incident ring any bells?
If my code takes more than a few seconds to figure out what it's doing, I keep rewriting it until it doesn't.
The golden rule of being a truly good programmer is that you write the code that you wish other people would write.
Write code that is self documenting by way of having very descriptive method and variable names. Because while it may take longer to write, you'll invariably end up reading it ten or more times more than you'll be editing it. So time making it readable & grokable is time exceedingly well spent.
here's a quick sample of what I mean:
Instead of this
if (thingy.getLastTime() - thingy.getCurrentTime() > 3600000) {
for (Calendar calendar : thingy.getCalendars()) {
calendar.update();
}
}
write this:
boolean isChangingTimeZones = hasChangedTimezones(thingy);
if (hasChangedTimeZones) {
updateAllCalendarsWithTimeZoneChange(thingy);
}
It's debugger friendly (you can see the value of isChangingTimeZones before you step into the if-then-block, and the logic is described via the variable name which has a corresponding method that can be easily unit tested) and all the names are descriptive as hell. Not to mention the action is decoupled from the logic, and could easily be more so. Either could be modified without ever changing that particular code. And yes, the boolean method should use a constant for that magic number. You can probably infer what that constant is, but why waste people's time making them infer when you can very easily tell them explicitly?
Question everything
How many sexual/racial harrassment lawsuits would this guy be worth to your company? Definitely creating the proverbial "hostile work environment" and if your managers don't do anything about it, the whole company becomes liable.
We are the 198 proof..
Personally i've never taken a dump in a potted plant or otherwise fuxxored my coworkers/office. Perhaps the difference is that I'm a regular Subgenius Josh and not your brilliant Assburger Josh. The distinguishing characteristic is whether you are ninja, pirate or jackass.
(shouts to the Joshs that don't give us a bad name)
gigantino.tv - Heavy but weighs nothing.
But here's the catch, someone must write the code in the end. And someone must maintain it. And the code that is written is of varying quality. If someone is simply a better, faster programming, then their code will be cheaper to maintain because it will break less often and scale better (or whatever your metrics are for code quality). I find that a "nice programmer" might be easier to work with, but those Saturday night production outages make me hate that person all the same. And I'm much more likely to fire him at that point because I think that person is unlikely to have to skills to keep the code working.
Finally, I think this entire argument is a bit of a crutch. I've seen people who match Josh's description, but usually the best programmers are just crabby because so much of the work falls to them. Then they get painted with "Josh's brush" and labeled as having bad people skills. When really, they are just tired and overworked. If the people with "people skills" had to deal with even 1/10th the work, they would go on a killing spree within a week.
"Those that start by burning books, will end by burning men."
>And I've got some news for you. It's *all* pointless. The end is the same for everybody. We're all worm food. Doesn't matter if you rage against the machine or oil its gears. In a hundred years, I promise you it won't matter one whit.
At the rate that molecular biology is advancing, aging will likely (or at least possibly) be cured within the lifetime of many people alive today, especially children who can expect to live at least another 80 years. Think about what kind of medical technology we'll have in 80 years. We can already look at the atoms that make our cells work, there is nothing smaller that we need to be able to see. There are just a lot of little parts that will take a while to figure out how they go together. It's amazing what we've figured out already. With improved computers and microscopes, we'll surely make huge progress over the next 80 years. The old saying that everybody dies someday is no longer certain.
But what I think will happen before an aging cure, is a massively more powerful, possibly molecular, computer technology. Super computers are just now reaching power levels comparable to the human brain, so it might not even require a breakthrough new technology to create intelligence that will make Einstein look like an idiot.
If you're selling necessary refactoring as an independent project then you're doing it wrong. Take a hint from Congress, bundle refactoring in with the new features that depend on it. An experienced legislator knows you bury the pork in a bill that the opposition would not dare obstruct.
I can certainly see why you didn't go into proctology. Though sometimes it sure seems like a good field to know a bit about, no matter what industry you might work in...
Cheers,
"What in the name of Fats Waller is that?"
"A four-foot prune."
" Software development is 40% technical and 60% people."
For some definition of "software development".
Funny thing about poeple skills, you put them in a chip and the CPU won't execute them. I'll cede some sw jobs require people skills.
Funny thing about comments and documenation too: when presented with what it costs to PROPERLY document stuff (2x what it cost to develop it) nobody ever wants to pay for it.
This is besides the obvious "Comments lie. Code never lies." thing.
Need Mercedes parts ?
For example, I was once able to give Microsoft the exact byte offset in Word's binary where their bug lay, that would cause a very rare, difficult to reproduce system crash - this was way before Mac OS X, so application faults would hang the whole machine.
I have Bipolar-Type Schizoaffective Disorder. Because it's just like being manic depressive and schizophrenic at the same time, it is one of the very worst mental illnesses that one can have.
It is very rare, poorly understood and notoriously difficult to treat. My symptoms include depression, which has been suicidal at times - I've attempted in a serious way twice - a profoundly euphoric state called mania, auditory hallucinations and, in my case, visual hallucinations that coordinate with a profound paranoia that leads me to believe that a shadowy, secret law enforcement agency I call The Thought Police are coming, not to arrest me, but to kill me.
I call them The Thought Police because they are The Police Inside My Head. You see, I know very well that they're not real. Unfortunately, just knowing that one is paranoid doesn't make the paranoia go away. When I look directly at my attackers, I can see that they're not there, but when I turn away I can feel their presence again.
There are Five Axes of psychiatric diagnosis. That is, one's Madness is a point in a sort of five-dimensional vector space.
Schizoaffective disorder, schizophrenia and manic depression are all biochemical axis diseases; they are caused by screwed up brain chemistry. They are thought to be genetic, although there is some evidence that schizophrenia can be caused by infectious disease when one is either in the womb or very young.
Biochemical axis illnesses are generally incurable, but their symptoms can often be relieved with medication. I know very well what would happen to me should I ever weary of my life on the run and decide to turn myself in to The Thought Police - and so I am very diligent at taking my daily dose of the powerful, expensive, mind-altering drug which gives me the comfort of staying a step - but just a step - ahead of Them.
There is also a neurotic axis. Neuroses are purely psychological in origin and are usually caused by some kind of unresolved trauma, usually experienced as a child such as sexual abuse, but it can arise in adults too, as with the war veteran's Post-Traumatic Stress Disorder.
Ironically, many neurosis originate as adaptive strategies, that enable the neurotic to survive their terrible ordeal. Thus the soldier who learns to dive for cover at every sharp sound survives the war, but is unable to return to civilian life after returning home - because he still feels the need to dive for that safety.
The little girl who survives her pedophile by imagining his advances to be courtship by a handsome prince my not find her Castle in the Sky such a wonderful place to live when she grows up, gets married and has children of her own.
The neurotic axis illnesses can all be cured, and through "talk therapy" alone, without the use of any drugs - in fact, using drugs to relieve one's symptoms can actually relieve one of the need to ever get better.
Unfortunately, the cure generally takes many years and is collossally expensive. In my case I estimate that I paid just one therapist sixty thousand dollars for thirteen years of weekly psychotherapy sessions.
Request your free CD of my piano music.
Keeping "Josh" types around is wrong, and any company who does that is almost invariably ignorant. Lemme explain why.
Take amount of time it takes to write a particular piece of software and compare it to how long it can be in service. You'll quickly see why writing clean, easily maintainable code is so much more important than churning crap out to meet a deadline.
Which, realistically, is the root of the problem. Business is like a blind, hungry animal with no knowledge of the future, and complete ignorance of the past.
When you couple that with most business folks complete lack of understanding of tech fundamentals, you end up with a dangerous situation.
I can't count the number of jobs I've worked at that has had subpar dev/ops members that are as highly regarded as "Josh". They are usually highly protective of their "turf", and unwilling to share info. In my experience, that is one of two things; either total incompetence and they are wanting to protect their ego and company standing, or they want job security. In reality, these "brilliant" people are usually supbar employees who are viewed as heroes when they fix problems that _they caused_. Business not knowing tech or how to tell if a tech employee is good, ends up praising the worst possible employee behavior and loves the worst quality employee. Comically sad.
Intelligent people eventually realize that job security by claiming turf & not sharing info means that their life eventually becomes a living hell of their own creation as they are now chained to this crappy software or project that is probably breaking all the time, a beast to maintain, and if that project goes away, likely so will they.
Another point - no single dev is going to be as productive or useful as a well integrated dev team. In sane orgs, there's a flow of dev -> qa -> ops moving through various environments. That's a lot of hands touching code, having to understand and test it, having to support it. If there is no clean handoff, documentation, or willingness to help/defend/explain their code, it is not supportable for the business. You might meet a few deadlines but you will lose out every single time in the long haul.
Dev teams have to integrate code. How many devs have had to work with reticent, subpar coders who don't provide documentation or clean integration paths, with unreadable code? It just wastes valuable time on the project, frustrates your entire dev team and leads to inferior quality products.
Your business will _fail_ if you foster "heroes" like Josh. You will never have a maintainable code base, scalability, or supportable code in the most important environment, production. Which is another important point; no other environment matters but production. Everything else is to support a clean, supportable, scalable production environment.
No single team member should be indispensable. It's an indication that your hiring practices are flawed, or the company is not willing to staff up enough to provide redundancy. Having been that "indispensable" employee several times, I can tell you that it sucks balls and any sane person will fight like hell to get out of it. It means you can never go on vacation without being bothered.
Specific to "Josh" - immediate firing is in order. Are his (negative) contributions in light of his flawed methodologies worth the amount of money a sexual harassment lawsuit would cost?
Time to wake up. The myth of the reticent superhacker who saves corporate is beyond stupid. It's criminally negligent on behalf of hiring managers because of the long term problems it brings.
If your company is a small startup, it's workable in the beginning, but you really need to be careful that best practices are instituted as it makes sense, with the eventual goal being a clean SLDC or similar process that provides clean, well maintained, supportable production environments and applications.
Engineer to business; grow up and get a clue. We have to understand your world when costing things, you need to understand what constitutes a good tech employee and a bad one.
1. knowing the theories and technologies 2. being able to communicate your ideas effectively to your team If you fail at either of these you don't belong in any company. Josh fails at #2.
There are struggles that are worthwhile and there are struggles that are pointless, but to say that no struggle matters is speaking from both ignorance and arrogance. I mean no offense, we're all ignorant and arrogant to some extent.
None taken.
I'm not suggesting that no struggle matters - quite the contrary. What I am saying is that there are struggles that can make a difference to you, and there are those that can't. Being a perpetual outsider because the whole world sucks is an example of just such a pointless struggle.
doesn't make you any better or make your life more worthwhile or valueable than someone who can't afford to fix their teeth. Their pain and alienation may be far more meaningful than your "boring life" (your words).
Boring was from the OP, I was quoting. I'm happy with my lot.
I'm not placing more value on my life than anyone else's. In the end, we're all just about twenty bucks worth of water and salt anyways.
What I am saying is that using pain and alienation to make your life meaningful is a waste. Stop carving My Chemical Romance lyrics up your arms up and enjoy what you've got.
Life ends. Surprisingly quickly, too. So make the most of what you have.
All I'm saying is you don't have to settle for assimilation, blind hate, futility, alienation, mediocrity or ambivalence or comfort. Do something with your life and make the world a better place, but don't "sell out" or become so bitter that you are divorced from the world. It's not worth it for you or anybody else.
I'm not even vaguely bitter - I think we're arguing at cross purposes here. I'm saying be happy because life is short. Too short to waste it with useless meaningless teenaged angst. I have friends in their late 40's who are still clinging to it. All it buys them is suffering. There isn't any meaning to it. There isn't any point to it. Or any beauty or truth either. It's just pain and you don't need it.
If you want to go out and help people, do it. If you want to grow roses, do that. Do whatever you can to wring as much joy out of your short years as possible. What worked for me was to stop fighting things and join the human race.
I have never been as happy and fulfilled as I am right now. When I look down my street and see people going about their lives I don't see drones, or sell-outs, or mindless zombies. I see people who are probably as happy and blessed as I am. And rather than cook up a list of reasons why they suck, nowadays I think they're probably a lot like me. And hopefully just as happy, too.
Weaselmancer
rediculous.
while i see your point... often you aren't paid to document things. At least, I am not. I am told, get this out by yesterday. That doesn't include any time to document things.
"Since he didn't document at the start, it was much cheaper to hire a post-grad than spare a more expensive employee from actual development work."
That's part of the problem. /* This is intended to do foo by means of algorithm bar which was selected because this and that */
is as much code as
void main()
Misunderstanding this fact is what puts us into these troubles to begin with.
"I wonder if perhaps there's an argument for pairing senior employees who do the critical design work with fresh hires to document the what and why of it."
Being that such documentation is there mainly for those fresh hires can understand the "whys" of the former developers (or the developer himself in a future incarnation), that makes as much sense as mandating users of a product the burden of developing user manuals instead of the makers.
I call bullshit on this one. For every dollar he saves for the company, he's losing two. He should have been fired with the first crude teeshirt and harassed female. Undocumented code is bad code and it loses you money in the long run. Insulting coworkers and refusing to bathe drives productive employees elsewhere, and you lose money. There is no excuse for putting up with assholes in today's economic climate. If you feel sorry for him because he's never been laid, send him down to the mailroom to learn some humility.
Don't blame me, I didn't vote for either of them!
That was a 90% technical arguement for a 90% people problem.
Insanity: voting in the same two parties over and over again and expecting different results
What makes you think you'll have time to come back and fix it later?"
[Anyone have an attribution for this [probably inexact] quote? TIA.]
"Democracy." It's just a slogan.
I agree, if you want to be a brilliant ass hole, do it on your own time, do some code projects at home or maybe even help with some open source projects.
If you're working for a corporation, you're working with a team and you're only a small cog in the process. They likely have the money to hire someone to replace you and they SHOULD if you're a jerk like the guy described in the OP. The code you write is also probably going to be around long after you're gone, so documenting it is going to save more than scoffing at documentation.
I bet the guy described in the OP never had to do bug fixing of other people's code at the start of his career, went right into development. That would explain the ineptitude.
I think quirky is perfectly acceptable to a point though, everyone's quirky it makes you human. The OP guy just sounds like an ass.
That is, unless he's working for some firm that requires some incredibly complex algorithms to improve efficiency and he's putting together brilliant critical sections that really requires a genius to figure out. From the sound of it, he's just working for a regular joe firm and he's just figured out a good way of doing some mundane task that any code monkey could figure out with X amount of time.
Most users, however, do not have the advantage of talking to the product designer face to face in order to understand the material in the first place. What I propose is more like getting the alpha-testers to write the manual; they can talk to the designers directly, record what they feel is important for people of their skill level to understand how to use the product, add to it form their own experience with the product and then this documentation can then be disseminated to all subsequent users of the product.
Scientists point out problems, engineers fix them
altslashdot.org: The future of slashdot.
I agree... you need to learn how to use your resources.
If you, as a peer, find someone on a team that is unsufferable for these sort of generic reasons, you would be served best to do things and opening your mouth to lambast them.
A) People often scream most loudly at others for those crimes that they themselves are committing. Before you scream at Josh, take a look at your habits. Are you just jealous because he is better at 'bullying others into compliance'?
B) Look at the business you are in and take a hard objective look at what he brings to the table and understand that upper management looks at the current bottom line and will never get too caught up in details, like documentation.
So, this sort of stuff boils down to how a team is managed. If there is still a justifiable grievance, take it up with the team manager or lead. No one starts off as a perfect team member but villianizing them only makes it harder for the team to form as you are busily choosing sides for people.
Finally, keep in mind A above. If your sole intention is to make Josh pay for his sloppiness and don't really care too much about team building, you are probably in that category.
Oops - I fail. Reply is below your comment.
Scientists point out problems, engineers fix them
altslashdot.org: The future of slashdot.
This is actually a really insightful post--the best place for a quirky, brilliant asshole is in an early-stage startup, preferably their own. There's a much higher premium placed on quick coding and clever solutions, and a much lower premium placed on documentation and management. And when you're the company founder you can dress however you like and be a jerk to someone if you want (see: Steve Jobs).
The problem is when someone thinks they should get these perks as the employee of a mature corporation with a steady salary, health benefits, sick days, paid vacations, etc. Sorry, you have to trade something for security and yes, it is freedom and immaturity. If you want the benefits of playing for a solid team you need to be a solid team player.
So geniuses: put your money where your mouth is. Start the next Google or Yahoo and I guarantee people will line up to kiss your unwashed feet.
Build a man a fire, he's warm for one night. Set him on fire, and he's warm for the rest of his life.
...when I were younger.
I had written a complex bitmask hack if I recall to determine return values of a function after
encountering a number of errors or something like that.
The manager called me to his office and politely told me to change the code so that the rest will understand.
It wasn't a big deal so I changed the code, it did take x10 LoC but I didn't care.
I'm not the team player kind by any means and I have lots of pounds of
several weirdness on me as well but never have I reacted like that, I think the article just blows things out of proportion....
Maybe that "Josh" guy was just a jerk...
I.e.
if (isChangingTimeZones) vs if (hasChangedTimeZones)
But the compiler would catch that anyhow ;)
You better watch out, there may be dogs about . .
pay them more to keep them and stay out of their way. then you dont have to pay the "cleanup" costs. Its not hard, I dont hear anyone bitching about executive pay or perks. If their code is so useful in the first place (and it is by virtue of the fact that most companies would rather hire one talented developer than several mediocre ones), why not ensure they stay?
By way of disclosure I am one of those developers - and I argue to have things taken off of my plate (documented, designed etc) outside of my scope specifically because I dont know what will happen tomorrow (hit by a bus, food poisoning etc) and a team of people like u most likely will take over. The number of times I've told management "yes its possible but do you really want me to responsible for the well-being of your company, if I drop dead where will that leave you?" cannot be counted. But if you are coding with fools (and yes, I've worked with my fair share of body-shop consultants), no amount of documentation will suffice. They are simply not qualified in what should be their area of expertise.
I lost a employment opportunity specifically because I told the CEO in the interview -- "{I can do what you want...} just dont stick me with someone stupid {as a coworker}" -- the reason why I didn't get the job? The ceo knew his employees were crap. And to be perfectly blunt, he did both of us a favor ;) I've worked with brilliant people (and it is the finest pleasure I've known), and I've worked with average people (cutting wrists!), and the pleasure of *not* having to explain for the umpteenth time how 2+2=4 is incalculable.
Brilliance is the ability to *not* have to deal with stupidity, office politics, societal constraints that are harebrained, etc.
The paycheck is almost incidental. Freedom to operate and innovate is not. Instead of resenting it, aspire to it.
Or at the very least, stay out of our way.
My apologies its a bit more personal than I intended but in the end, it is personal :P
Your requirements for (excessive) documentation is a direct transfer from my finite amount
of time available on this earth (solving problems) subsidizing your mediocrity. GROW!
I kind of figured that's how you felt; I think it's important to explain it to people a bit though. I know there were times in my life when it would have been good to have heard someone tell me how futile those kinds of thoughts can be, basically what you said, but it can be hard to communicate the whole picture to someone that feels that way.
;-)
About the "settle for assimilation, blind hate, futility, alienation, mediocrity or ambivalence or comfort" bit, it was meant for both of you, or anyone who thinks they have to settle in life. We can't necessarily have everything we want in life - but that doesn't mean we have to "settle." On the contrary, the power that comes with the knowledge that one can make decisions to move towards ones goals is astounding. If you hate the world, people, try to fix it and shape your life around that goal - there's no other worthwhile outlet for those feelings. Also, the world sorely needs more rose-growers
That fire the highly knowledgeable tech worker thinking has been a message in many management books for a few years. the basic idea is that you do have a wide range in the knowledge of people and if you grow dependent on a a single person and they leave you will be in really big trouble. Instead get as much documentation from them as possible then fire them.
Wicked post dude. +1 Inspirational
Focus your attention and passion on what really counts.
Sometimes you need a solution NOW, and you will have time to clean it up (or re-implement it more carefully) later.
At most companies, you always need a solution "NOW", and time to do anything but deal with the next now" never comes. Thus, "Josh" will benefit most companies more than he harms them.
In part, though, that forms a self-perpetuating cycle - You'll never escape damage-control mode as long as you work in damage-control mode. On the flip side of that, however, I would encourage most people to ask themselves, honestly, what tediously documenting every step really buys you.
First of all, most "solutions" become irrelevant long before they break. We've all heard about the woes of 40-year old payroll systems that no one can upgrade, or even the Y2K fears dealing with legacy code... But those situations fall into an extreme minority. We work in a world where most software counts as "venerably ancient" if it sees five years.
Second, "cleaning up later" only matters if Josh leaves... Which he eventually will, but good luck selling that as a problem to Josh. I don't mean that as necessarily a lack of care on his part, BTW, so much as a simple statement of the fact that true superstars honestly don't think in terms of "the team" - Except as baggage they have to drag along for the ride.
Finally, even with good documentation, even on a codebase still retaining some relevance, would a semi-clean reimplementation better suit present needs (and possibly take less time thanks to newer dev tools) than trying to keep patching holes in a well-known but crumbling dike?
In particular, on that last point, I certainly don't count as a superstar, but I've made that exact argument myself. I can personally reimplement quite a lot from scratch faster than I can understand even a well-documented preexisting project. That might not always exist as an option, but more often than not, your "2000 human-years invested" legacy project only really contains perhaps six months worth of chewy goodness for a single decent programmer, with countless years worth of "Patching holes in a wall-known but crumbling dike".
After reading this I thought "humbug." What ever happened to "Diversity" and accepting people for who they are. Most brilliant programmers I've come across in my career weren't very sociable. Some could be jerks but at times aren't we all? I worked with a guy like that who was involved in some of the early days of computing, eclectic yes, arrogant, sometimes...
Or is it that we only pay lip service to "Diversity" just to be inclusive of race or sexual preference so companies can push us to the lowest common denominator? Ahh yes, strive for mediocrity, that's what the MBAs want. Don't stir the pot, sit down and shut up.
Harrison's Postulate - "For every action there is an equal and opposite criticism"
I dont hear anyone bitching about executive pay or perks.
You've got to be kidding...
If their code is so useful in the first place (and it is by virtue of the fact that most companies would rather hire one talented developer than several mediocre ones), why not ensure they stay?
Because it is usually quite possible to hire developers that are just as good, but that are not jerks. They may be slightly less brilliant, but they make up for it because they can actually work well in a team.
By way of disclosure I am one of those developers - and I argue to have things taken off of my plate (documented, designed etc) outside of my scope specifically because I dont know what will happen tomorrow (hit by a bus, food poisoning etc) and a team of people like u most likely will take over.
First of all, you assume that I'm one of the "rank and file" devs. In practice, I had been in the role of "star developer" in my division in the past, so I know how that works from the other side. But note that we aren't talking about this phenomenon in general, but about a very specific subset of such people, who are "good" (for some definition of it) on the technical side, but are arrogant and uncooperative with other people whom they perceive to be lesser.
The number of times I've told management "yes its possible but do you really want me to responsible for the well-being of your company, if I drop dead where will that leave you?" cannot be counted.
See now, if you ever told that sort of thing to your manager, TFA is not about you, and neither are any of my comments above. You seem to understand the bigger picture, which isn't just about you.
Your requirements for (excessive) documentation is a direct transfer from my finite amount
of time available on this earth (solving problems) subsidizing your mediocrity. GROW!
Why do you assume that I require "excessive" documentation? When I say "bad docs", I mean stuff like 50 kLoC of code that has not a single comment in it; not forgetting to fill in the "detailed description" in the documentation comment for a private method!
By the way, regarding the "finite amount of time" - that's all well and good when you solve problems for your own sake. But when you're at work, the time is not "yours", really - it's bought by the company you work for, and you should use it in a way that's more efficient for the company. Sometimes that means being more patient when it comes to dealing with abilities of people around you, even when they're lower.
I was in that position as a senior dev who got promoted to lead very fast, and had to learn to manage a small team of my own. I had to struggle with that "if you want to do things right, do it yourself" attitude. Yes, I could do it better than my juniors could, and faster as well. But you know what? Once I've learnt to delegate appropriate tasks, and, when coding, to keep in mind that I may later want to assign the mainenance of that bit of code to one of the juniors, and dumb things down sometimes, or at least comment the "smarter" pieces even when they would be obvious for myself, I've found that the overall productivity of the team increased - precisely because I could offload those maintenance tasks to them, and keep working on new code that truly required more knowledge and experience to be done right.
If you keep writing more and more code that only you can maintain, then, eventually, you'll end up doing nothing but maintaining that code - and that is usually not fun (and at that point, people often pack up and leave to find a more "fun" place to work at, and start writing "fun" code there as well... and cycle repeats - and the old place is left with unmaintainable "smart" code, and no-one able to deal with it). And it doesn't matter whether it's because you're being too much of a smartass, or because the people around you are truly idiots - the end result is the same. Worth keeping that in mind for one's own sake.
Reading these comments make me realize the sad state of the tech industry.
Look, who gives a damn if the guy is a "people person" or not. When they come to you and say that they're not paid to document or be a people person, that's correct. They did not go to school, spend their lives learning how to "be a social butterfly", they went to school for coding.
Their job description, in this case, says "programmer" not "social worker".
I'm sure if you took the time to ask "Josh" about what he's doing he would be more than willing to tell you, but only if you're not sitting there trying to derail the conversation to bullshit about fantasy football the whole time.
I should know..I'm this type of person. I'm not the crazy genius that many people here have been discussing, but I'm "that guy". I've always pretty much been "that guy".
That doesn't mean I'm "that guy" for every computer-related incident, but I certainly know my shit and far more than most of my peers.
I kind of figured that's how you felt; I think it's important to explain it to people a bit though.
Sorry for being unclear, and thanks for calling me out on the carpet and making me clarify my position a bit.
On the contrary, the power that comes with the knowledge that one can make decisions to move towards ones goals is astounding.
Oh, absolutely. For me it came by accident but the end result was the same. I started off like the original AC's post. Angry and angst ridden. What you don't know when you live your life that way is that you're hurting yourself. The anger is yours. Maybe you didn't start it, but you're the one cultivating it years down the road. If you let it go, things improve almost overnight. Did for me anyways.
I feel bad when I run into my friends from back then. I've been called a sell-out by people who can't afford basic health care. It's mind boggling.
I guess what I'm trying to say is that the "boring, polite and pointless" life the original poster was railing against is actually full of freedom and joy. They might see an office cube where I have to sit for 8 hours a day, but instead I see a lifetime of health care, paid bills, and hugs from my kid. I gain everything, and all I had to do was give up hating everyone for "being normal".
Weaselmancer
rediculous.
If the guy's irreplaceable, you not only have to worry about him getting pissed off and leaving, you need to worry about him getting hit by a bus (or cancer or heart attack or a better offer from some startup company.) If he's not only irreplaceable, but a hostile troll, you need to worry about him getting shot in a fight in some bar because he pissed off somebody else who had no social skills either.
On the other hand, if he said he didn't document what he did because he had a deadline, his manager needs to whack him with a clue bat about deadlines and priorities, and about modular programming with well-defined interfaces even if the modules themselves may be opaque. That doesn't mean there isn't a place for people whose real skill is finding problems and telling people what to fix, but you want production code built in ways that can be used.
And the fact that Josh stayed at the company as long as he did meant that Janet either didn't take the job there or didn't stick around, which cost them a lot of money that they didn't know how to measure because they only saw the HR costs of trying to hire her, not the value of the work she didn't do because she'd left.
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
My problem with this comes from both ends.
A: The Management team that gets involved in a co-dependent relationship with *one* person on the team, and treats the rest as disposable.
If that one person is the reason you can't keep other people, then you need to verify - is this guy *really* worth any three other programmers you have. And if so, is there a reason you can't get somebody as good that *not* a personality problem - since evidently that would be worth six other programmers - him and the three he's been costing you.
B: I've seen a lot of people that bitch and complain about the corporate 'fit all pegs into round holes', right until they're in a corporation that actually allows people some individuality and recognizes that, even in the same job, people have different strengths.
Turns out, you're not always the star, and the company may go further for somebody else with unique strengths. In which case, the problem is obviously that the company lets themselves get co-dependent with these people - not that they were *actually* worth it.
Unfortunately, both of these cases sound the same when the co-worker is grumbling about it after work.
Pug
An Invisible Entity of Vast Power whose existence must be taken on faith alone: Liberal Media
Depends on how small of a town you live in. It's really hard to get talented people to be willing to move to a small town - especially a small town without a good ISP.
I myself feel irreplaceable, and I don't want to be. I want to be free to leave without hard feelings if opportunity arises.
Urgh, that was not an alliteration at all. Allow me.
Your post poses probable perfect Peter Principle patrondom.
Sam ty sig.
Parent post poses probably perfect Peter Principle patrondom. :-)
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
Whether they be developers, managers, janitors or CEOs. There is no good reason to be an a-hole and those who are should not be tolerated for any reason.
Did you ever wake up in the morning, with a Zombie Woof behind your eyes? -- FZ
Yes. Ultimately, I think I value someone who can churn out clever code quickly less than you.
I mean I'm sure they have their uses, but most companies just aren't so innovative.
It's unfortunate that a lot of companies let engineers get away with "speaking engineer" and claiming themselves to be Rodney McKay-esque geniuses doing the impossible and not having time to document or explain it to anyone.
It always ends badly. I'd bet a lot of these companies go under before they figure out how much more productive they would have been with engineers who could work well on a team and document+QA their work.
I've seen a lot of examples play out where the "lone genius coder" finally gets forced to have a bunch of underlings hired to work with him. And that's when the underlings start realizing that the guy isn't a "genius", he's just a jerk who treats people like crap, writes bad code, and doesn't understand the most basic good software practices. Like testing - of any sort.
Either the organization is structured such that the underlings can get across the Lone Genius's stupidity and get him fired (or demoted to a position where he's forced to work well). Or the organization is structured such that the underlings all get frustrated and quit.
Having Asperger's isn't a good excuse to do a poor job or to be anti-social, or unprofessional. [snip] I don't take the idea, that I have a disability so you need to deal with my Crap mentality, it is basically reinforcing that they can behave badly, without having them work on improving themselves.
With all due respect, Asperger's is not a choice for those who have it - it's them. They can't control who they are or what they do any more than the severely autistic can see their own situation or you can drastically change who you are (even though your personality may be a little more socially acceptable). If you were arguing against hiring autistic adults, perhaps there is an objective argument there. But, please, do not expect miracles from people with untreatable medical conditions.
Exactly.
One of the problem's with these Lone Coders is that no matter how hard they work, and how much code they churn out, odds are they aren't even solving the right problem. To solve the right problem you have to talk to the business.
More often than not once you get a real development team with competent leadership, the Lone Coder's work is going to be almost entirely replaced over time by refactoring. And note that I said refactoring, not trying to rewrite a massive app in one fell swoop while the business continues ramming its head for months (or years) against all of the problems "unworthy" of the Lone Coder's time to fix.
Ty to replace him silently ASAP by hiring sbdy else. There are a lot of good and a moderate amount of excellent programmers around who aren't assholes. Making insulting remarks to female coworkers can bring the company directly in front of a court. Undocumented code/coding prodecures can make you/your customers loose certain certifications (thing about automobile industry, medical devices etc.)/not pass such certifications when required. Not team working is costing the company money. And anyway, as the story points out you cant rely on him.
So, find a replacment and on day one give Josh two minutes to pack his things, then throw him out, dont expect that he cooperates in anything, so make the decision to clean up the mess he left.
"The major problems of our work are not so much technological as sociological in nature."
Peopleware - Productive Projects and Teams by Demarco and Lister.
Pick Two.
You better watch out, there may be dogs about . .
I've been in exactly this situation: we were an custom GPS electronics company where one very talented electrical engineer built the hardware from the ground up ... I signed on as his lackey ... because his time was 'so valuable' ...
The -very- first thing they had me do when I arrived was produce page after page of documentation on how the hardware actually worked
When I asked him why there was no documentation (or very poor documentation when there was) the answer was a combination of "You shouldn't need documentation" and "I'm not paid to document things."
Well, actually... you are.
No offense, but it sounds to me like no, he wasn't paid to write documentation. You were. The company thought for good or ill that this super-engineer's time was better off spent doing what he did best, and a cheaper hire was found to do other cleanup work like writing docs and sharing/storing knowledge. Nothing wrong with that.
...is absolutely foolish! Think about what you are saying. "I don't want to have to ever eat crow and explain why something took longer than originally thought. I'd rather always get an overly long estimate and stick to it that way I don't have to look stupid/incompetent or like I can't manage." Grow a pair loser. Learn how to set expectation and how to communicate when those expectations change and why. All the whining so called managers make about "expectations" shows them to be completely useless and that they have nothing to contribute to the overall process (this from a Project Manager). Most PM's I've met are completely useless and have nothing of value to contribute. Most are in their positions, like executives and managers of any stripe, because they have charisma (symetrical features, tall, etc) and know how to tow the company line. They couldn't bring a project to fruition without the people actually doing the work if they're life depended on it. MBA's are a total fucking joke. Look what these fucktards have managed to do to the economy and society. They're a bunch of fucking shills that need to be put up against the wall and shot!
Over-the-top Response Guy! Giving "Over-the-Top Responses" since 1970.
Too bad the switch to turn on the Freezer is on the other side of the lake and we don't have a boat. Shit! If only we had someone who could walk on water (or swim)!
Over-the-top Response Guy! Giving "Over-the-Top Responses" since 1970.
Ooh. Ok, I bow out.
Sam ty sig.
Pair programming sucks.
Remember that scene in Amadeus where young Wolfie was composing using the billiard table as a desk? All those symphonies in his head, interrupted when someone came in and broke his concentration. The music stopped.
Programming can be an extraordinarily complex, involving activity that works best when you're concentrating, producing and on a roll. It only takes one prick to break the bubble of concentration. And yes, you may extend that metaphor.
If you really want to do the armpit-to-armpit teamwork go back to Yourdon's original structured programming team. You had a senior guy, a junior guy, and a librarian. Today that would be senior guy, junior guy, and documentor. It works in threes, but not in twos for some reason. I think it has something to do with allowing intelligent people to lead design, rather than have to check around to see if what they're doing is ok. In pair programming you have no leader. With no leader you have no direction and thus no progress.
Ok, I may be out of touch -- the half-million lines of code I delivered was a good few years back. But I can't think when people are shouting around me, and I get paid to think.
Do not mock my vision of impractical footwear
Come on, my standard response time to implement a feature in my current job is 15 minutes. When I was in college I was always the first or at least the second finishing the exams, about an hour earlier than anybody else.
But I can talk to people, I'm nice to coworkers and clients.
It doesn't mean I was the best, a classmate was faster than me by about 20% consistently. But he also was very sociable and could work very well in a team.
If someone doesn't document, and is harsh with coworkers and clients, I don't want him in my team. Period.
AFAIC, he can go and fund a startup or something.
We are Turing O-Machines. The Oracle is out there.
>If their code is so useful in the first place (and it is by virtue of the fact that most companies would rather hire one talented developer than several mediocre ones), why not ensure they stay?
>>Because it is usually quite possible to hire developers that are just as good, but that are not jerks. They may be slightly less brilliant, but they make up for it because they can actually work well in a team.
Presuming your original assertion is correct. I'm not convinced that brilliance is mutually exclusive of teamwork; else how do you explain Oppenheimer and the Manhattan Project? Personally I've always felt that
a true measure of a man is not his dick-size, wallet, girlfriend, car or what have you, but rather his ability to work with others to accomplish a goal -- note there is no presumption of liking a person built into that
statement. I've worked with people for years I would have cheerfully beaten to a bloody pulp and paid for the privilege.
>By way of disclosure I am one of those developers - and I argue to have things taken off of my plate (documented, designed etc) outside of my scope specifically because I dont know what will happen tomorrow (hit by a bus, food poisoning etc) and a team of people like u most likely will take over.
>>First of all, you assume that I'm one of the "rank and file" devs. In practice, I had been in the role of "star developer" in my division in the past, so I know how that works from the other side. But note that we aren't talking about this phenomenon in general, but about a very specific subset of such people, who are "good" (for some definition of it) on the technical side, but are arrogant and uncooperative with other people whom they perceive to be lesser.
I get arrogant all the time; I'm also the person people come to when they're having: a) legal problems b) medical problems c) life problems d) work-related problems e) loans f) cheering up. Arrogance (as a word) is nothing more than someone's description who knows their shit cold *and knows it*. I dont presume to know everything; I do presume to know that *what I do know*, I know *well*. I am extremely uncooperative when it comes to bullshit. I am *extremely* cooperative when it comes to solving business issues including employee quality-of-life. I fit the articles profile quite well, and I am sick of hearing about it -- y'all are venting, which I understand - this is merely my response (that if you brought this up in front of said coworkers, they would undoubtedly mirror) -- GROW UP, GET A THICKER SKIN and READ/LEARN OUTSIDE OF WORK.
>Your requirements for (excessive) documentation is a direct transfer from my finite amount
of time available on this earth (solving problems) subsidizing your mediocrity. GROW!
>>Why do you assume that I require "excessive" documentation? When I say "bad docs", I mean stuff like 50 kLoC of code that has not a single comment in it; not forgetting to fill in the "detailed description" in the documentation comment for a private method!
When someone usually bitches about documentation, its generally because they want every function documented with fancy descriptions & uml. write your code small, modular, with unit tests. its not rocket science.
If you do something tricky (like using a GPU to calculate veroni diagrams) then include a link to a paper, or a psuedocode overview of the algorithm/engine in question; assumptions on input, same. todo/suggestion for improvement, same. other than that the code should pretty much speak for itself.
>>By the way, regarding the "finite amount of time" - that's all well and good when you solve problems for your own sake.
I would say stop right there ;) I own my time, regardless of compensation, agreement or anything else other than involuntary incarceration. Anyone that forgets that (including the bulls) learns otherwise *quickly*.
>>But when you're at work, the time is not "yours", really - it's bought by the company you w
I've met a few "Josh" type in my life, but have never met the female version. Do they exist?
I've known some frighteningly smart women, and am pretty handy with a C compiler myself. But somehow women do not get in to this mode, apparently having only minor issues with personal hygiene, working with others, and so on. Why?
...laura, who has her eccentricities, but nothing like Josh
Eric Spiegel tells of one such Josh, who wears T-shirts with offensive slogans, insults female co-workers and, when asked about documentation, smirks, "What documentation?' Sure, he was whipsmart and could churn out code that saved the company millions, but can we please stop enabling these people?"
For a second I thought they were starting to describe their CEO or other high level manager who instead of saving millions of dollars, was raking in millions of dollars in salary.
The bottom line demands that Offensive Josh the brilliant coder be retained, and the senior management trashing the company be fired. Won't somebody *please* think of big business's bottom line?
But that's not really what we're talking about - the problem is that Josh didn't build the bridge he was asked to (refusing to write documentation etc). It's like them building you a bridge, but it requires them to continue to maintain it, because no one else can. And one day, they're gone, and the bridge falls apart. If they were asked to build a bridge, and everyone else is capable of building a bridge that stays up like they were told, yes that's their fault.
I find that this argument tends to also be used by loser programmers against the brilliant people who try to simplify as much as those psudo-geniuses who make things more complex. I had this happen years ago when I pointed out that we didn't need to reprogram the Linux Kernel to filter packets and could build a plug-in for a firewall to do the same thing. I have also seen this happen to people who wanted to implement complex ideas like source control, backups, modern OSs. "He's out of control and had no respect for process."
When I was younger, I was Josh. Well, I may have been the Josh in the story, except for two things, I wrote clean well-documented code, and I generally friendly to people. Some brilliant people place a high value on beautiful code (code that works and reads well and is maintainable). I admit, my people skills were not (and still are not) up there with my tech skills but then I found Toastmasters, but that's another story...
Anyhow, I was there that Friday night. There was a dev staff meeting. There was a problem. I had a crazy idea that I was sure would work, the rest worked on a conservative approach that would have been 36 hours of hell for the entire staff. The customer (AT&T) needed time and cost sensitive international routing up on their switch before the Mother's day weekend.
I wrote a program that in turn wrote a 300K line program from a 250K line spreadsheet that saved the day and perhaps our business from that customer. It took about an hour, and I was very happy to have had the opportunity to have solved the problem and I may have hurt some feelings with my exuberence. --There are not many that get to brag about writing 300K lines of well documented working code in an hour!
I wanted to make one more point. I think the correlation between Brilliant (technically) and Quirky is going to be high for one major reason. Brilliant people get bored easy in the public schools, where brilliancy (and the brilliant ideas it puts in your head) is often rewarded by getting the crap beaten out of you. I suppose getting the crap beaten out of you can cause you to get quirky too.
When you become an adult, and find that your brilliacy is now rewarded (50K a year will buy a boatload of beer!) you can easily become like-a-superstar arrogant, to a certain extent. I got away with the leave-without-coming-back-for-a-few-days thing and I did the poor hygiene stint. And I did wear whatever t-shirt I wanted, and I played Black Flag and Dead Kennedy's loud from my office. And I helped make my employers rich too. Drinking 50K worth of beer can also make you quirky. Then I found hashers, but that's another story too...
I also was amongst the first group to get laid off when the going got rough when the telecom market busted. I can identify with Josh. I'm sure my lack of people skills contributed, or it may have been the quirkyness.
I'd like to think I am not Josh anymore.
In answer to the original question, brilliant people can be dangerous and make you rich like Bill Gates.
-- Each tock of the Planck clock is a new world and here we are still life. --
No there is "nothing wrong with that" but I doubt that is the case in TFS. What you're thinking of is a technical writer, they are not particularly cheap and you only really see them in projects a tad larger than the two person operation described in TFS. In my experience people who understand the development lifcycle (the new guy in TFS) are more expensive than the 'genius' who grows something useful in their cubicle that ends up taking more time than they have got to maintain. IMHO the 'genius' in TFS sounds threatened by someone "doing it right" and simply doesn't want to know about it.
In other words: The "super-engineer's" baby is growing up, wether he likes it or not.
Note that due to the diversity in the scale and percieved importance of any particular project there is no magic "one shoe fits all" recipie for what "doing it right" actually means, although the main ingedients are common knowledge amoungst "good" practitioners.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Bravo! The very best documentation exemplifies brilliance. The first great documentation I came across was the Perkin-Elmer 8/32 processor manual. Absolutely brilliant.....
"Josh" is clearly not the ideal employee, but if you've hired him and you accept the way he works, you get what you deserve.
I've seen more than one company hire in a cowboy to "fix things" whether in code, or processes, or whatever, they might be a consultant, or even a new Director, but whatever the case, they come in and screw things up for 6 months to a year, take their fat compensation package and head for the horizon. People bitch about them for years, but it's really the morons who hired them that deserve all the credit.
Sure, it is handy to have a Josh that miraculously saves your project, but the fact that you needed that Josh in the first place says that you don't have the right staff/skill sets. Needing Josh is a sign to management that there are some serious shortages that need addressing.
Sure, all companies sometimes need firefighting, but the REAL firefighters are those that not just put out fires, but help to prevent there being other fire call outs. Really effective fire-fighters help mentor others and, in essence, make themselves redundant. [Aside, firefighters (of the thermal sort) actually spend a lot of their time doing fire safety inspections etc for this very reason].
Those Joshes that code so cryptically that they are needed forever are essentially blackmailers and saboteurs. They force you into a position where you have to put up with them to keep functioning. Make a plan to dump them and replace them.
I've worked with a few Joshes in my time. The one was brilliant, but it took the next three most productive engineers to clean up after him and quite a few almost as clever people just quit because they could not work with him. When you realised that the cost of having him around was not just his remuneration, but also the opportunity cost of the next three engineers too, then he didn't look as valuable.
Engineering is the art of compromise.
Most recently, from the Dallas Cowboys. He was then picked up by the Buffalo Bills.
It's been a while so I don't have a reference at hand, but I thought that pair programming had been pretty rigorously shown to improve code output (by some measure that eludes me, but involving quality and production rate) under a wide range of circumstances? Perhaps not "always", but "more often than not". I know people complain about it, and I know what you mean about the concentration bubble, but the numbers don't lie. If, that is, I'm remembering them correctly, the experiments were well-controlled, the pairs were typical, etc...?
"The biggest problem with communication is the illusion that it has taken place."
I've been told I'm like that (a little). I like being sociable, I think documentation is necessary - and helpful to people outside of developers.... but I have PTSD and occasionally have troubles because of it. (made far worse at my last job because russian ex-military "programmer" threatened my life at work)
it's been a while since I've worked. I miss it. I'm apparently really bloody good at what I do - but apparently I undervalue myself.
(yes, some people still do that)
I just need some quite ethically nice (relatively) job again. (I'm not that picky - but I can't work with spammers)
A CEO friend of mine once said "It's never too soon to fire someone".
A person like "Josh", no matter how brilliant they are, can actually produce negative work as a side-effect of the chaos they sew. They may be productive as hell, but their impact on the productivity of the people around them can cause more harm than good.
My friend had to fire a number of people over the years who caused big problems. He never regretted firing someone, but he often regretted not doing it sooner.
Oh, and by the way, writing "clever" code just produces code your peers (and you, six months later) can't maintain. I'll bet Josh's bosses regret not requiring code reviews.
Programming can be an extraordinarily complex
Sometimes this is true. If you have to do a lot of math, for instance, it can be true. But, if I look back on my career of 20 years of application programming I can think of only 1 or 2 instances where the problem I was working on was difficult. The rest of the time it was the code that was difficult.
If you find that programming is extraordinarily complex a substantial amount of the time, then you have some problems. It's only that way because you or your team have created complexity when you really don't need it. Pair programming with somebody who is extremely good at refactoring can help you learn how to improve.
I know this is hard to believe. Especially when you are used to being the superstar programmer on the team. You are able to deliver when others can't. And your code is probably better than other code you've seen, so you think it must be really good.
But there's a whole new level you can get to. I'm not saying this to put you down. I'm still working hard to improve myself. But with the approach you are taking, you'll hit a glass ceiling pretty quickly where you can't get any better (from the sounds of it, you've already hit it). I just want to encourage you to look at other methods so that you can break through the place you're in now.
When you do get through it, you'll find that programming extraordinarily simple, but that "good taste" is difficult to refine. And that refinement requires conversations with other programmers (both in code and in human speech). These conversations require give and take, not leadership; learning and sharing, not enforcing direction. I hope that helps (but even if it doesn't, good luck anyway :-) )
That metaphor can be extended to a surgical team, where you have one chief surgeon and everyone else around the table has a specific role and is there to assist. Or it could be extended to the 911 phone operators, where there is usually one operator on the line, and two assistant operators listening on the call and following the directions of the first (although, that part is almost never shown on 911 reenactments).
Personally, I have no problem letting another programmer take the lead when pair programming, my only two requirements are that we set some time aside for debriefing each other beforehand (so that I know where we're going) and that we set some time aside for debriefing each other afterward. I don't usually interrupt (unless I have to), and besides I take copious notes when sitting shotgun -- this is a trick I use to keep on paying attention -- while keeping the things I say to a bare minimum until later.
I find it also helps to let the person typing make their own mistakes, a typo, or what have you. Usually the guy typing will correct himself without interruption needed on my part. So if I see an error, I take a quick note of it in the margin of my notebook, and it's only after 10 or 15 seconds or just before the compile cycle, that I'll point out the errors as tactfully as I can.
That being said, that Amadeus reference you cited scares me. Most programmers are not at the Amadeus-level, and yet most programmers think that they are. And I can't tell you the number of times I've had to stop a fellow programmer from coding because he had no clue where he was going, and no clue on how to get there, he just wanted to make himself feel better by coding something -- anything -- right away.
"...but can we please stop enabling these people?"
Nope, if you do they will leave and take your business elsewhere.
If you do not fuel them, they will grow bored and find another job, even a completely different project or job and excel at it.
Same reason a skater will stop doing things if people stop enabling them.
This is just my opinion, but why not encourage them other ways.
Same reason your child will stop making A's in school and join the classes for numbskulls, if you stop praising them.
If you don't enable them, they will find something else and the only people who will suffer is the location that stopped enabling them.
So now the self-promoting guy who spends his time writing blogs about how bad the smart programmers smell gets the job done better? Yea, right.
The article reads like a typical journalistic straw man. Strange cave dwelling programmer is rude, smelly, and not at all chivalrous. Bad programmer (if you're not convinced yet that our antagonist is bad, the story will add other irrelevant, and probably untrue details to help persuade you, generally by trying to conjure an image of someone that's done you wrong). Wouldn't it be nice to be rid of them? (duh!) *sigh*, if only they weren't so in with the establishment (a set up for bringing down the expert). Something happens to show that programmer was just mediocre (hooray!). The brave consultant/knight saves the day. And they lived happily ever after.
This story is pure rubbish. First of all, there are plenty of talented, polite folks that bring the whole package to the table. I don't claim to be one, but I am fortunate enough to work with a few. Also, the consultant rarely succeeds in doing anything other than screwing things up while they firmly attach themselves to the money mammaries of whatever company they are milking.
Fortunately, the reverse story is generally true. Evil snake-oil consultant is latched on like a lamprey. Smart, humble, articulate, lemon scented programmer saves the day with a elegantly simple technical solution. Other programmers rejoice at their new found freedom. The new knowledge spreads through the technical ranks, elevating everyone's game.
except that the job of documentation is seen as a "junior" job, something important people don't have to do. Then the whole engineering department is focused on "getting out of" documentation. The peons are expendable and the seniors "just expect" the documentation to appear without working for it and blaming their underlings.
Let's put it this way, then: we've got this guy who's a jerk, but who is also highly skilled in medicine. Can we really afford to not use his brain, to tell him to go home and twiddle his thumbs because he's just not nice enough? It's not like we have a glut of geniuses; sure there are nice brilliant people, but they can only handle so many cases.
Nah, these are decent people with 5 to 10 years with the company. But they are business people with no clue about programmers or the programs they have been put over.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
You're absolutely right in what you say. Our lead programmer some years back was supposedly the biggest baddest programming genius on the planet. He didn't poop in the lobby or harass the women but he was definitely the person you did *not* want to talk to. He was cranky in the morning. He was cranky during lunch. He was cranky in the afternoon. Hell, come to think of it, he was always cranky! He pushed everybody away so that heaven forbid, you wouldn't touch the sections of code that he determined were for his magic touch only. Those were obviously the most critical sections of the code, in technical *and* in business terms.
Fast forward a few years. (Actually rewind because this is in the past.) He was let go. The company damn nearly fell apart because that software, the flagship product, was totally unreliable and customers were fuming. And it was because of the software. Somehow we survived, and along with several other people, I was put in charge of going through the code to determine what it would take to fix it. We looked through it and decided it would be better to commit suicide than to try to fix this thing.
Let me tell you a little about it. First of all, there was no organization. Unrelated functions would be located together, while closely related functions were strewn about across many translation units. Nothing was declared static. Many of the function prototypes and extern declarations did not match the actual definitions. But this is only the very minor stuff. Things that could be done in a single line of code were implemented in the most retarded way possible. (Think Rube Goldberg machine, only in software.) Error checking? Sometimes, and even then, wrong. Every imaginable problem related to the use of pointers, multithreading, files, you name it. And the worst part? He did not use any form of version control, so other than the current bleeding edge sources (what you would call the head of the trunk), there was no source for any other version.
And this guy was some kind of genius? NO! He didn't push us all away so we wouldn't "mess up" his perfect work. He did that so nobody would discover that his work was shit. Pure shit. It worked, this software. That's the miracle. But it only worked somewhat.
We described the situation to management and everyone promptly decided to throw the whole damn thing away and start over. The new system is just fine.
Somebody once pointed out to me that the cemeteries are full of irreplaceable people. In other words, in a world full of billions and billions of people, where to use computer related jobs as an example, so many people work in this sector that the small subset that participates in open source development is so enormous that you can find *any* kind of software in open source, and most of it is pretty damn clever *and* well documented, you can't convince me that there is nobody else who can do some programming job or another, even if the job is something outrageously complicated. You think skyscrapers, airplanes, hell why go that far, the computer hardware itself, you think all that got built because there doesn't exist another person on this planet smarter than irreplaceable Josh or our grumpy idiot programmer? I'm sorry but every single person in the world is irreplaceable. And yet we're all going to die one day. The certainty of that is just below the certainty of your taxes going up every year. When you have some jack ass like that working for you, you weigh all the options like a responsible businessman and then promptly get rid of him. As many here have already said, it's more important to be a pleasant person who can write software than some supposedly genius who nearly (or completely) destroys the whole company.
I was standing on the shoulders of giants. I only added one word.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
I don't know what you were coding with MFC, so maybe you were far beyond my (admittedly rather simple) usage of it back then... but almost every time I thought I'd found a case where MFC was actually broken, it turned out to be my not using it correctly.
;) you're doin' it wrong. Of course, the very rare occasion when it IS the compiler/OS/API that's broken, this will drive you insane... :P
Your experience with Matlab bears this out a little - either you're a very advanced user or (more likely, IMO, for the average AC, although of course you, sir, are not that
In general, I apply the same philosophy to big, very-widely-used APIs that I apply to compilers: If there's a problem, it's your fault, not the API/compiler/etc's fault.
Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
That's because while you're pair programming, you spend 80% of your time programming and 20% of your time talking about it. When you're solo programming, you spend 80% of your time reading slashdot and 20% of your time programming.
Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
Programmers like Josh always cost more than they are worth because eventually someone has to maintain their code. The mistake that managers who employ Josh's make is they only cost the initial development of the brilliant code, which if it never needed changing would be correct. We live in a changing world. Who has ever encounted code that never needed changing ? The true cost of code must include maintenace of that code and that is where using the Josh's of this world really costs you because their code is, more often than not, unmaintainable and then what will you do, redevelop using another Josh.
The smirky "what documentation?" guy was the author's co-worker, not the deranged douche he was writing about.
And related to the "aspergers" tag, if someone makes a "You don't have Aspergers, you're just a fuckhead" T-shirt I'd wear it.
On any non-trivial piece of software most of the man-hour spend on it are spent during maintenance, not coding it.
- Support
- Bug-fixing
- Enhancements
- Third party component upgrades
are the bits that eat up most time - the initial coding is trivial in comparison.
Another thing to take in account is that true performance in IT is not measured by amounts of code: it's measured by function points implemented (for example, requirement use cases finished and delivered matching the wishes/needs of the client). In other words, results not the artifacts of the method used to achieve said results.
Putting things together:
- Somebody that can produce lots of code (but not necessarily results) in the coding stages of a project while sacrificing future performance on all other stages of a project is a liability, not an asset.
Having been one such person in the early stages of my career (and having worked with other such people), I can confirm that with experience and hindsight I can now see how being a bright, fast, hard-core lone wolf coder was actually not that great in terms of long term results (not to mention being very amateurish and not at all professional).
This kind of people are only "elevated" and "celebrated" in environments where Management is fully short-term oriented and incapable or unwilling to measure and evaluate longer term negative side-effects - usually because manager bonuses are calculated from short-term, visible and easy to measure actions which are deemed positive.
(This kind of mis-aligned incentives is what caused all the problems with Credit Derivatives: traders were "elevated" and "celebrated" for using lent money to pile-up into CDs for short term results while accumulating huge long term risks).
You're acting like how one behaves towards others is set in stone. Geniuses are more than capable of pretending to be nice.
This space intentionally left blank.
Way too verbose for me. If there's one thing I hate, it's variables being declared and assigned, and then only used once. Add a comment if you want to make it clearer, but please no "isThereASolarEclipseSomewhereInTheNextCentury" fields/methods.
I would say for every "freak" like this there must be a thousand+ that can code as well and are great to work with. [...] I have been doing SW dev for a living for about 15 years. Most of it large scale teams. I never saw anyone remotely close to this description and I have worked with some brilliant people.
I imagine the environment you work in has a selection bias away from this type of person. Put yourself in "Josh"'s shoes: do you want to work in a large team? Or by yourself? I'd guess the ideal position for Josh is one where he's the only programmer in the entire company.
>>I get arrogant all the time; I'm also the person people come to when they're having: a) legal problems b) medical problems c) life problems d) work-related problems e) loans f) cheering up... GROW UP, GET A THICKER SKIN and READ/LEARN OUTSIDE OF WORK.
>I think that you're pretty much a liar. You're painting yourself as not just a great developer but an all-round superman, yet all I hear is the dime-a-dozen coder giving one of his usual stream of consciousness rants. You are so laughably confident in yourself, convinced that you know what makes for good development practice and for general progress, and so sure about what's good and what's bad in others. ... said the anonymous user... lol ;)
>And yet the hallmark of your message is, "my way or fuck off!"
and its my business - so it is *my way* or fuck off. I've never had a problem enforcing it, either at my business
or any other business I've worked for.
>No, documentation for paulgrant is just a sign of bad coding; if an algorithm is complex, why "link to a paper"!
If an algorithm is tricky is what I said (as in subtle) - where you need to understand the *theory* of it; thats
why you would link to a paper. Of course if all you're coding is bubblesort, certes I could understand why you
consider that un-natural and useless.
>Do you regularly precisely implement algorithms from academic papers, paulgrant?
Unique algorithms are by definition unique, and usually presented in academic papers... If it wasn't, I wouldn't be using ;)
their paper, now would I? There are many ways to skin a cat but always one way to do it optimally. A paper is nothing more
than a useful way of documenting a non-trivial algorithm. And if as a developer, you cant read an academic paper detailing
an algorithm and code from it, who's at fault? Me for being able to do so, or you for *not* being able to do is
>Tell me, who are you? What great things have you achieved? Why should I listen to you over hundreds of brilliant
mathematicians and scientists since the Renaissance who have kept in relative obscurity those who have posthumously
shown to be great thinkers but contributed little toward scholarship because they were awful communicators? Even
if you were Fermat - and there's no doubt that you are not - you would still never be Euler.
Suren' I keep my thoughts to myself and certes it isn't for an inability to communicate ;) I say precisely what I mean, ;) Both your ignorance
neither more, nor less. And I don't waste my time with arguing with fools. If you're interested in scholarship you are
always welcome at my doorstep, be it creative, professional, technical or scientific... If your only critique is both
anonymous and misguided, what more is there to say other than I suggest you never come work for me
and your slovenly thinking will be exposed.
Ciao ;)
Indeed, I'm not saying that the employee should be sacked - just that this doesn't mean he is blameless or not responsible for his own work. He clearly is. Both him, and management, are to blame here. This also doesn't excuse behaviour that affects other employees (e.g., harrassment), which should taken seriously no matter how good he is.
It's impossible to know just how difficult it is for any given person to change their behavior: for some people, pretending to be nice might require constant concentration and render them unable to do anything else. Who can say?
There's probably a happy medium: smack the guy down for really over-the-top behavior, and ignore the snide comments etc.
But, please, do not expect miracles from people with untreatable medical conditions.
It's taken over 20 years of conditioning myself to not interject in every conversation around me. And, it's taken nearly as long to learn when the other person in a conversation wishes to end it and move on instead of listening to me go on and on. Those are just 2 of the Aspy traits I've learned to overcome. There are dozens more that are works in progress. And, it is ALWAYS a relief when I can drop these artificial behavior patterns and be my unrestricted self.
You can mask who you are for the benefit of those you work and live with. But, you just can't change how you think deep down in the way your brain is "wired". No amount of medication or behavior modification techniques can change how your mind works permanently. It's just a mask or filter over the top of the source modifying the results on output.
The Master (Angelo Rossitto) in Mad Max Beyond Thunderdome, "Not shit, energy!"
There's a bug in your example. isChangingTimeZones is not being used, so why bother assigning to it? I presume this is a typo?
Mart
"I know I will be modded down for this": where's the option '-1, Asking for it'?
Absolutely: but this is an age-old debate, and generally boils down to dollars. Management almost always agrees, in principle, with the adage "do it right, the first time, and you will be rewarded over the cycle with a better, more easily maintainable code base." And, in principle, the code _should_ be considered a source of documentation, _if it's well-written_. Unfortunately, quick dollars frequently trump "over the cycle".
Even the most brilliant programmer is going to need to get their specs from somewhere. Finding out what a program is supposed to do can only be done by, you know, communicating with the people that asked for it to be written.
Last I looked, communication is a people skill. Now, whether or not the given percentages make sense is debatable, but even if you don't take them as hard numbers, the real insight is there: without communication, there will be no useful software.
Mart
"I know I will be modded down for this": where's the option '-1, Asking for it'?
All of these bosses who make developers write documentation need to learn of the existence of Technical Writers. I am one. It's our job to be the nerds who aren't quite geeks -- we're the ones who've always loved technology, yet also love to write. Oh, I know, developers around the world are reeling at the horror of that phrase: "love to write". But yes! It is true!! If only you realized that such people like us truly exist, and are truly motivated by the challenge of learning new technologies, applications, tools, etc. and so forth from their developers, and honestly enjoy translating that into user-friendly documents, and furthermore have proven methodologies for producing quality documentation that take into account any number of different variables (technical users? slightly technical users? highly technical users with a dash of n00bs? and more). if only it were realized! Developers the world over could sigh in relief and say, "why certainly, $boss! I can have that top-quality, user-friendly documentation written up for you without a problem -- I know a good technical writer."
This reminds me of a saying that my former employer said:
"I don't mind primadonas, but you better be a primadona with your work, and not just your attitude."
If someone truly is that good, you don't give them daily work, you give them RnD and proof of concept work. You then let other programmers flush it out.
If they are truly a twit, then replace them they will not save you the amount of money they will cost you. Eventually someone will sue, and you will loose.
If you are not with a company doing cutting edge or RnD work, get rid of these people. If someone is doing 'routine' development work, they are probably not geniuses, or they have chosen a different outlet for the mind. In either case, a certain level of professionalism is expected.
In my experience, the programmers management loves and considers 'genius' are only people who fit a certain perceived stereotype and has nothing to do with their work ability.
The Kruger Dunning explains most post on
A friend of mine pointed out that the example is very hard to accept. There are lots of things you can get away with. Sexual harassment, though, is one of the things where there's enough regulations that I have a really hard time believing this.
I honestly don't believe that "Josh", as described, ever existed. I think he's a hyperbolic example from someone whose writing suggests that he resents the existence of people who are good at what they do without being interchangeable. Sadly, the world's smallest violinist was fired for wearing an offensive t-shirt, and cannot play.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
You truly must have ADD or dyslexia. I read his replies here in response to your off topic trolling, and the ac apk was completely understandable. Go away troll.
You are off topic and a general nuisance that apparently is illiterate. You were asked what section of this forums this is and you refused to answer because you know you are nothing but a pest. I am going to say it once more to you, Go Away Troll. I am an actual registered user here and you are nothing but a troll loser who lost this exchange very badly. I found it hilarious watching you trying to avoid a simple answer to a simple question of what is the topic of this forums and what is its name. It's the developers section here and you are way off topic and lost badly for your stupidity.
And you keep on losing Mr. Off topic Troll. I am a registered user here and I am calling you what you are: An anonymous loser.
You are nothing but a trolllish loser who is off topic and is caught with his pants clearly down with no answers that are valid when you were asked here if this is the english grammar checking forums. It is not and you are off topic troll that is also clearly illiterate.
perhaps i wrote that wrong.
should have said, you could tell more about a person if they were permitted to wear what they wish. That not to say they shouldn't wear a suit wear one as often as you like...
ok so i took 'formal' too far. but 'business attire' shouldn't be expected day to day.
if you don't see people outside your own office... whats the point. I'd rather see the people i work with wear what makes them comfortable... house skibbies aside.
Nice posting. It is a topic that I whole heartedly agree with and especially in regards to managers often leading people who are supposedly their inferiors, yet who know more about the place of business and the section they work in than these so-called management superiors, which you are clearly alluding to here. It is too bad the famous anonymous troll showed up here but I put that idiot in his place already and I found it funny as it gets when you got him to go silent here in asking him what the topic of discussion here was and what this section of this forums is about, which is developers, not english grammar checkers (especially those minus a PHD). Good job ac apk.
When you meant to write:
Of course, I would have dodged that particular bullet by writing:
But that's just me.
You need to take your meds psycho. Illiterate troll face facts: You lost badly in failing to answer a simple question, and that's easily enough obtained, if you can read that is. Apparently you cannot, so I will tell you what this section is about. It is about developers, not english grammar checking you mentally damaged fool! Especially ones who don't even have a degree that certifies them as experts in the English language. Ones just like you troll. Go away trollish illiterate loser.
What a complete dumb ass you are. I don't need a phd in anything to realize this much about a troll loser like you. The more I read from you, the more I realize you are a childish idiot and not just some illiterate moron. That one I might actually excuse but not a moron like yourself. Face it: You know you trapped yourself here in failing to answer what this section is titled and about and you have been outwitted as well as outsmarted. This section is about developers and not english grammar moron. Troll you lost badly but you are one amusing clown in doing so at least. I wish all the posters at this website were as stupid as yourself because it would be easy to defeat them. You are, so you know, the most stupid I have ever seen.
Yes, completely offtopic.
I read what the other ac who uses apk wrote and he asked you 2 simple questions which you failed to answer 1 of them because you know you are off topic when you were asked what the forums section topic is and it is developers not english grammar or your opinion of it because minus a phd in English on your part that is all you have an opinion and that of an illiterate trollish loser I felt. AC apk also found out he was correct on you not possessing a PHD in English and the rest of us found out that you evaded his other question as long as you could and you are off topic because this forums is not about English grammar or the opinion of an illiterate troll such as yourself. The ac poster apk beat you to a pulp loser. Accept it.
ac apk, rest assured that I read this exchange end to end and the ac trolling you apk is nothing but an illiterate trolling loser who has nothing better to do with his time than to be a petty nuisance here and to be a (what is it you called him? Oh yes, a clown) clown for our amusement and ridicule. At this point he refuses to answer your questions because he knows that by not having a phd in english he is nobody worth listening to, and by his also admitting this is the developers section, he will have conceded that his off topic english grammar critiques are completely off topic trolling. This forums is full of pitiful schmucks like the ac causing us laughter here unfortunately and you have to learn to ignore them at times as well as pity them because this juvenile behaviour of his is all his type have in this life (and they wonder why their lives are worth shit).
My great-uncle was A. S. Neill - sadly he died before I was born.
I think these ideas are finally catching on, but it remains to be seen whether they'll manage to set the world alight or just get blown out. There seems to be a developing kernel of kids in the 1/2 generation or so below me (Gen Y — they're not all narcissistic solipsists, thankfully!) who "get it" and haven't (yet) been broken by the realities of adult life. Maybe they'll make it through, either with the assistance of their elders or through their own strength ..
Incidentally, learning may not survive starvation, but I think wisdom does. As it's pretty much all I've been left with, I'm hoping it will one day turn out to be useful .. :/
If normal people had to document / comment their normal non programming work it would have interesting results in revealing how most people are either jerks, incompetent, working mostly on irrelevant shit, or, most likely, doing nothing at all.
Well, that certainly sends an interesting message to the highly knowledgeable tech worker:
"Document nothing. If you do, they're just going to fire you and be able to get along just fine without you. Instead, if you document nothing and obfuscate everything, they'll be fucked and likely won't do that sort of thing to anybody else."
I am not anonymous coward apk so why are you saying that I am? Haven't you had enough of being caught in stating falsehoods here already in saying that the anonymous coward apk said John Carmack of Idsoftware modded up his posts and yet there was nothing like that to be found here coming from the anonymous coward apk? You are a troll and a liar too.
You don't have anything like the anonymous coward apk had in being featured in written respected publications in the science of computing which was an impressive list, inclusive of taking a company to a finalist position at Microsoft Tech Ed, and 2 years in a row. Your self-proclaimed magnificence sounds more like a line of bullshit, and that you are deluding yourself at this point, since you cannot produce a single shred of proof. Your also saying you would impersonate the other anonymous coward apk completely made you look like the troll you are and you know it and now you suddenly recanted? It's more like you knew you blew your cool and looked stupid, and even stupider than you looked when you stated the other anonymous coward apk said John Carmack modded his posts up, and when he asked you to show a quote where this happened, you could not. As far as winning here, the only thing you have won is the troll of the week award at best in being caught lying and having no proof of your "delusional magnificence" on your part. You couldn't even produce 1 thing that others in either websites articles, guides, or articles in written publication you have been in where the anonymous coward apk had 100 evidences or more, of where his writing or software was well received in all of those areas and more. You really cannot read and are dyslexic as well as dumb.
You've evaded a very pertinent question of what the forums section is here when you were asked troll. It is the developers section and not the english grammar section of this website and you know when you answer that it will only show you are an off topic troll. As to your being superior in anything here, you are better in only 1 respect, and that is being a profanity spewing troll who is a legend in his own mind only and a trolling loser. Threatening to impersonate others only has me thinking that you are some 10 year old who is caught in his own words' stupidity and now is having a tantrum because he can't get out of his lies and idiocy due to his own stupidity. You blew it and you definitely lost this debate because of your wanna be geek angst.
You lost this troll, and not the other anonymous coward apk. You came in here saying the anonymous coward apk could not write and he put up a lot of proofs to the contrary from written and well known publications about computing, and some were fairly impressive imho such as the windows it pro article and his taking a company to a finalist position at microsoft's tech ed for them 2 years in a row. You haven't done the same and you try to play it off as you have done better but it doesn't work when you won't put out even 1 such evidence of you doing the same even. Being caught lying about anonymous coward apk, in you saying he said John Carmack moderated his postings here up, was a lie. The anonymous coward apk asked you to put up a quote of his saying that and you could not because he had not said that at all. You shouldn't tell others how to write, and most especially when you yourself can't even read.
No you lost, and you are losing your mind as well imho. Especially where you threaten to impersonate the other anonymous coward apk as you have here in this debate which you lost and in doing so threw your little fit and threatened to impersonate someone who clearly got the better of you in actual visible accomplishments in both written publications and website articles as well as software he had done commercially and as freeware or shareware over time. You had nothing like any of that and yet you said he could not write? You also showed you can't read by saying he said John Carmack moderated his posts up and when he asked for a quote from you proving he said that, you again failed to produce such proof. You accuse others of not being able to write and you can't even read properly. Go away troll, you lose, and you know it.
You evaded his simple question of what the forums name is here and we all know why you did that. You admitting this is the developers section here and not english grammar critiquing section of this forums would only further show you to be the troll you are. You did that evasion of that very simple yes or no question because this is the developers section and you came in here saying the other anonymous coward apk could not write. In response apk put up a lot of proof to the contrary from written publications he had software or articles in, as well as guides that I even tried (84/100 on cis tool so far) that worked well for people who tried them including myself, on top of his also having commercial software to his credit that went on to microsoft tech ed as a finalist 2 years in a row. You don't have anything even close to that level of expertise in this field and are an off topic troll as far as I am concerned after reading your profanity based replies. You lost but largely only because you beat yourself. Especially about lying that the anonymous coward apk supposedly said that John Carmack moderated his posts up here and when anonymous coward apk asked you for a quote of him saying that you blew that off also because you had no such proof and it appeared to me that you have dyslexia as he stated also. You can't read correctly so do not tell others how to write, especially since you are no expert by way of education such as an English PHD and also having appeared in written works in this science of computing even once versus apk having done so 100 times inclusive of his being moderated up here many times. You lost but beat yourself into a pulp in lying and trolling.
The anonymous coward apk never stated that John Carmack moderated his posts up, and apk only brought up John Carmack only after you called the rest of us here slash tards and other less than cool names. He only mentioned John Carmack as an example of somebody who posts here who is also known to be a great game engine creator and programmer is all. Not once did the anonymous coward apk say John Carmack moderated his posts upward though apk had you saying that in a quote of your own words, and when apk asked you to show where he had said what you accused him of, you were unable to produce proof of apk saying John Carmack had moderated apk's posts up. It only makes sense you could not produce such proof because apk never said that or even remotely insinuated it. You are either a dyslexic brain damaged troll or a lying troll but either way you are a loser.
You're not a moderator here, and you do not own this forums board either. Quit giving orders to others when you have no authority to give them at all here and especially when you have to toss a profanity loaded mess all over our screens when you do so. You are defintely a troll who talks a lot of his own greatness and yet you have not a single shred of proof where others in the field of computing have ever said they thought highly of your words whereas apk had a bunch of that to his credit. You accused apk of things he had not said and he captured a quote of that regarding you stating that apk said John Carmack moderated his posts up here and when apk asked you to provide a proof of his saying that by quoting him doing so, you evaded providing that quote. It didn't exist and you were caught lying or provided proof that you are really dyslexic and cannot read correctly. Given that, I would not go giving orders and more importantly telling others they cannot write when you have only shown you cannot even read written words properly.
That's not what I saw and not all of apk's posts that he showed of 80 that were moderated up here are long. One was very cool in that it showed him showing a way to secure programs that the other developers here moderated up because it could help stop binary infecting viruses and also one where he showed the questions microsoft had asked him in an interview with them where they approached he and not he approaching microsoft. Another quite short one he did showed how to secure excel versus a known security vulnerability that is still present in it and many others I found quite interesting but those definitely stood above the others and they were quite short despite your rant here. I don't rate others well or compliment them on length. I only do so on content so don't go and call us slash tards here and speak for the rest of us you troll. Somehow I doubt you have 80 people here who have ever moderated your posts up as insightful, or interesting as apk showed us he had done as well as his appearance in respected publications in this science of computing both in wares he made as well as guides that have done well (I tried that one and it works and I have not been infected since to date). You are a troll and I suspect an adolescent geek is what you are who has been caught in his lies and trolling stupidity and it made you even threaten to impersonate apk. That did it for me. You are a troll.
He sure caught you off guard and you grabbed the wrong tiger by the tail. You have nothing like the list of what the anonymous coward apk has shown us he has done in response to your saying he can't write. I will believe 80 upward moderations here, topped off by his appearance 10 times in written publication from 1997 through 2002 as well as having commercial software code to his credit plus the results he has shown in the securing windows guide he put out which I tried and it works if you can follow some simple safety rules. Instead of giving him a difficult time here just because you cannot read and cannot admit you made mistakes in accusing him falsely saying that apk had said that John Carmack moderated his posts up and to which apk quoted you accusing him of. When he then asked you to provide the proof of his actually stating that and you could not that also made me think you have problems reading, like dyslexia. The problem is clearly yours and you lost troll. Don't tell others how to write when you cannot read and have not even been featured in publications where others felt your work was good as his was and he had proofs of it and you had none troll. You are just grabbing at straws trying to "save yourself" somehow and it is only burying you deeper in the hole each time you are shown lying or that you cannot read correctly. Either way, it also shows you have no grounds, ability, or rights to tell others how to write when you can't even read correctly on your part.
The only failure here is you. I and others have read this end to end and have seen you lie, fail to provide proofs on your part you have been asked to in response to you saying how great and smart you supposely are (in your own mind only because you can't put up proof where others note your work in any form as good regarding this science, since this is the developer section here and not the english grammar critique section which you came in here attacking apk with). You have also shown you lie or cannot read properly when you stated apk supposedly said John Carmack modded apk's posts up and he has you quoted saying it. apk asked you fairly for a quote of his actually stating what you accused him of and you had no proof of it, only proof you cannot read correctly apparently. If you cannot read, how the hell can you go around telling others how to write? You have no PHD in English, you have never been featured in the science of computing in multiple respected publications as apk proved he has over more than a decade now many times (despite you literally saying you are smarter and better than apk also) as well as his guides being popular and most of all effective in securing users machines like my own, and you had the nerve to tell him how to write? Learn to read on your end and go away troll.
Threatening to impersonate someone because you made mistakes here publicly in saying they said things they had not and when you were asked for proof of you accusation that apk supposedly said John Carmack moderated his posts up here, you did not provide it and were quoted by the person you accused in apk. He asked you for a quote of his stating that and you could not provide that which doesn't exist and it made you look to be either a liar or dyslexic. Liars are trash, but dyslexia is not anyone's fault as far as I know. Since you may be dyslexic I hope you realize it disqualifies you from telling others how to write since you cannot read correctly yourself and you came in here ad hominem attacking apk that way and have proven yourself to not possess anything that qualifies you as expert in the english language like a PHD might do for you if you had one. You also state how great you are (in your own mind because nobody else says you are and most importantly in the science this forums section is about in computing), but you omit proofs of your so called magnificence where others said you wrote well also on top of your being off topic here the entire time too. You are a troll and not even good at doing that.
You said he cannot write well, but he had a large amount of proofs of that from 80 or more moderated up posts here (a few were very cool like showing how to protect binaries from viral infestations and also where apk was interviewed by microsoft and he showed some cool algorithms that sparked a good deal of interesting computer science conversation afterwards) and on grounds like informative or interesting, on top of a guide for securing a pc that has done well and he produced testimonial from a user who has done well because of his guide where the person has not been infected by a virus since and I have experienced the same but not as long so far is all. apk also provided his verifiable appearance in 10 publications since 1997 to 2002 that are respected in computer sciences for software he wrote or articles he had done. Windows it pro is a good one he had that stood above the rest and that same work ended up as commercial software and to good review as well as taking the company he wrote parts of those wares for to a finalist position at microsoft's tech end 2 years in a row. You said he cannot write well after you proved that you are either a liar or a dyslexia victim. I say that because I saw the whole exchange here where you accused apk of supposedly stating he said his posts were modded up by John Carmack and he quoted you in that much. He in turn asked for your proof via quoting him also where he in fact said that and you had nothing. Just like you had nothing like the list of what he has done that was shown as good by 100 others in summation versus your mere dyslexic no PHD in English lying and trolling here. Go away troll. You have beaten only yourself. Threatening to impersonate apk on other forums was the last straw though. You have no shame and are a trolling loser. Don't tell others how to write, which is how you came in here ad hominem attacking apk while doing so, after you have been shown to be unable to read correctly.