1415279
story
bsadler writes
"There is a pretty interesting article on the psychology of a programmer over at devx. It includes some suggestions that a manager might take into account when dealing with programmers. Maybe my boss will finally give me my own office."
It's not really psychology (Score:5, Insightful)
Re:It's not really psychology (Score:5, Insightful)
I'd like to LART some managers who come by every 10 or 15 minutes while I'm working on a project with a very tight deadline, and ask 'Is it done yet?'
Re:It's not really psychology (Score:5, Insightful)
Re:It's not really psychology (Score:4, Insightful)
Re:It's not really psychology (Score:5, Insightful)
If I'm interrupted, it's like the train fell off a cliff.
So then I have to focus on whatever interrupted me, while trying desperately to cling on to those ideas that didn't make it down to the keyboard before I was interrupted. Because now i'm having to think in 'real world'.
If I'm interrupted to help another developer debug something, or brainstorm a problem (which I enjoy immensly) It's harder because I have to switch over to their programming mode, and try to understand what they're doing.
So then when I can finally get back to the joy that is programming, it takes another 10 minutes or so for me to get back to where I was.
I know it sounds like a buch of BS, but it's true. If people keep bugging me, I can lose an hour (or more) in startup time every day. It's not that I'm not working, it's that I'm not working at peak.
So leave me the hell alone! Dammit!
Noise (Score:2)
Of course managers are off in their offices so they don't have to put up with it...
Re:It's not really psychology (Score:5, Funny)
Sounds like you need to disable write caching.
Re:It's not really psychology (Score:3, Interesting)
I have to add another "me too" agreement here. The thing that annoys me most at my current job is that I am being interrupted very often throughout almost any given day. Sometimes, my interruptions are further interrupted by other people, and those interruptions also get interrupted, with sometimes up to four people on this "stack" of interruptions. I have to handle each one, and still try to remember all the things I *was* doing at the bottom of the stack when I first got interrupted, which itself can occu
Re:It's not really psychology (Score:5, Insightful)
No No, please don't feel bad. Teaching is part of the job. At least I think so. And I try extra hard to not appear distrurbed when a junior guy comes with questions.
I remember very well what it was like to ask people for help. Hell, I still have to sometimes.
If you find that someone that you're looking to for help is making it obvious that he's being 'bothered' then he's probably just a selfish person who's forgotten what it was like when he was new.
Hopefully when you become a senior person you'll remembr what it felt like to be new, and you'll try to pass kindness and understanding down to your junior guys.
Good luck to you.
Re:It's not really psychology (Score:3, Insightful)
I'd argue that for a senior engineer, teaching is the main job. As salaries increase over your seniority, it becomes more and more difficult to produce (code) to justify your salary. A single human can only code so much so well, and it's unreasonable to ask the company to pay you more than you can produce for them.
However, if you can enable three $50K junior programmer
Re:It's not really psychology (Score:4, Funny)
Re:It's not really psychology (Score:5, Insightful)
Reminds me of one time I was a project manager "under the gun" for a past-due project deadline, and my manager and his boss and various other PHBs would come around at nondeterministic intervals to ask what the status was (essentially it was done as soon as the developers had a V-8 moment), so as an experiment, and a total waste of time on my part but the developers understood what was going on and that I was being a very effective filter between them and the PHBs, I would continuously round-robin visit the developers getting continuous status updates, and at the end of each cycle, I would pop my head into the PHBs' offices and let them know what was going on. This kept me from getting interrupted at random moments, and the guys kinda figured out when to expect me, and could give one-syllable grunts to convey status with minimal context switch.
I think my approval rating went up that period. Of course, I never did it again.
Perhaps we need an article about the psychology of PHBs. Or project managers. Still can't believe I did it....
DT
Re:It's not really psychology (Score:5, Interesting)
Under a very tight deadline, I once told a manager quite forcefully:
"Look, each of us has an obligation to the other here. Your obligation is to do everything you reasonably can to empower me and enable me to meet the deadline. My obligation is to do everything that I reasonably can to meet my commitment on this deadline and to inform you when there are things that you can do to improve my chances. Therefore, as part of my obligation, I have to inform you that by constantly interrupting me to ask me how it's going, you are breaking the concentration that I have spent several hours building and reducing my chances of meeting the deadline in the order of 2 or more hours* per interruption."**
He looked quite shocked at first but then seemed to summon his memories of his days in the trenches, apologized and backed off. We had a new understanding from that point on.
----
* 1/2 hour to cool off + 1 hour to re-build my mental state + 1/2 hour fudge ('cause we always gotta fudge ;)
**(This is what I said IIRC. It was some years ago and legends tend acquire new dimensions over time. It's also possible that I said something more concise like "quit f---ing bugging me, so I can get this done". I can't remember exactly now.)
Dealing with interruptions (Score:4, Interesting)
He actually got the message. Not only did he quit bugging me, but he actually started running interference for me. Unfortunately, I haven't had many managers who were that bright.
Re:It's not really psychology (Score:4, Insightful)
Nothing wrong with that. But this mode of working is completely the opposite of the programmer's. I had the opportunity once to combine the job of programmer and project manager. It was a nightmare and needless to say I got little programming work done, but from the viewpoints of both programmer and manager, it was educational to be in that position.
Re:It's not really psychology (Score:5, Insightful)
I felt like I just visited a shrink (Score:5, Interesting)
First, programming is most definitely an art as it is a blending of layout, design, creativity, and tasteful hacking to derive a solution.
The section about programmer's concentration was interesting, and I definitely fall into that category. It is nothing for me to sit down to go through the process of designing, coding, debugging, and repeat for 8 hours, without realize it at all. It only speaks of my passion for my work, and my enjoyment in solving challenging problems.
Poster here who have noted about treating programmers more like people than equipment hit the nail right on the head. In my school, our proffessors warn us to avoid jobs that look as though the employers treat programmers as "code monkeys" (if you sat enough monkeys at computers typing C, how long would it take until you get MS Office?). At some of my best internships, and the job I have gone back full-time to, my section leader encourages his team to take regular breaks (which often involve heading back to an ongoing game of RISK), schedules frequent offsites/classes/excursions to get us out of the cubicles, and overall creates one of the healthiest work environments I've ever been in.
All that said, I shouldn't be to programmer biased. Not all programmers are great programmers who have mastered that mystical "flow". I could see a manager reading this article, trying all these things, and getting really burnt.
It's all a game of balance that definitely begins with treating employees like people, not equipment.
Re:I felt like I just visited a shrink (Score:5, Interesting)
Oh, I take exception with this!
You can't program anything of significance if you can't design, and you can't design if you don't understand how the design is to be programmed. Put more bluntly: pseudo code ain't gonna compile.
Now, it is fair that some of us spend the bulk of our time designing sytems, and others implementing them, stressing the creative or crafty aspects of our skills. But woe unto the programmer who is not aware of the intended (i.e. designed) interaction of components: such a person debug, can't (oops, forgot the </yoda>).
I've been coding for over 20 years. Under my belt I have significant design contributions to:
1. Dataradio synchronous full duplex repeaters and mobile radio modems (mid 80's Z80 code);
2. Nortel's ADAS+ employing speech recognition in the telephone network for directory assistance (T1 A/B bit signalling and parallelization of Viterbi decoding over multiple TMS320 DSPs under pSOS, with a smattering of assembler, and clever allocation of data to memory with various access latencies as appropriate);
3. Teradyne's RMU75x telco loop diagnostic units (TCP/IP and steams-like protocol stacks under MQS on TMS320C30.
4. Chiaro's Optical Router project (automated, distributed test tools, with C++ on FreeBSD, and custom marshelling schemes; as well as porting Gigabit Ethernet device Drivers (C on FreeBSD).
While hapily mentoring less-skilled developers (I actually like the title "Software Engineer" since it reflects the combination of creative design, tempered with proved implementation methods) and even distributing development work, I refuse to ever accept promotion into a primarily management, or even "design" role: creative design often needs to leverage advanced programming techniques -- ever notice how the complex parts of programming languages, like templates, overloading, partial template specialization, and template template parameters, to use C++ as an example language are there to support design patterns and principles?). I have been, and always will be, a programmer: even when designing Emacs is my canvas, and I expect C-x C-c to be engraved on my tombstone.
Those who see programming as only an entry-level path to eventual design and perhaps management roles are taking an extremely narrow view. Career progression should more closely follow at of carpenter: apprentice, journyman, master. A master carpenter remains a carpenter, nevertheless. Even if he takes on architectural roles, they will be enhanced by his knowlege of the craft of carpentry.
Re:Pfft. (Score:5, Insightful)
Computers can't paint. They can't write computer programs either. It's not some crude mechanistic process that we can automate ; there is a need for style and creativity. Which to me, makes it an art.
(Surely painting and music are 'explicitly constructed by man', and each of these have distinct rules that allow one to do it well too?)
Showers... (Score:5, Funny)
There might be other reasons [slashdot.org] for installing showers, as well.
Re:Showers... (Score:3, Interesting)
The only better place for ideas is something I can't force, b
In The Zone (Score:5, Funny)
I must say I like where this article comes from, although I don't think I'll need a shower in the office (but considering recent polls on /. I think it is a subject best avoided at the moment).
My point is is that some of the most elegant and productive code I've ever written are when I've been "In the Zone" (almost like in sports)... and listening to music shielded a lot of the background office noise, aiding my concentration.
But hang on, $14,000 on a shower!! ;)
Re:In The Zone (Score:2)
Most office buildings aren't designed with showers in mind -- most of that cost would probably have been for installing the neccessary plumbing and ventilation.
Re:In The Zone (Score:2)
Seems like anyone... (Score:2, Interesting)
Obligatory Hygiene Joke (Score:4, Funny)
sysadmins? (Score:5, Insightful)
Re:sysadmins? (Score:4, Interesting)
There is important that a sysadmin or any person be comfortable in his work, but some things that are specific to er... "art"... may be not so fundamental for a sysadmin. One could write an article about "the psychology of a sysadmin" with the same point of view of this article, but the conclusions could be a bit different.
And, of course, I know that there is a book that is called "The art of programming" (even worse, ESR is making one called "The art of Unix programming" .) but I don't know a book called "The art of system administration" yet.
Re:sysadmins? (Score:5, Insightful)
Being a sysadmin doesn't mean you sit around and install software or create user accounts all day. There's a LOT of different things that need to work together, and you need to make that happen.
It's almost like programming on a much higher level. You still need to design, impliment, and maintain your systems. Many times this spills over into programming, too, when it comes to writing scripts and utilities to make the job easier.
In many aspects, sysadmin is more difficult work then programming.
Re:sysadmins? (Score:3, Insightful)
Re:sysadmins? (Score:3, Interesting)
Not if it's done right.
Ever been in one of those old apartment complexes? You know, the one where the "janitor" actually lives in the basement, and is responsible for /everything/ that goes on in the place? If something needs cleaned, he's there. If the yard looks messy, or the lawn is dying, he's there. Radiator go out? He'll fix it. How about your car's giving you some trouble? He can take care of that too. He knows everyone by name, and is better security tha
No, EVERYONE (Score:4, Informative)
Everyone is that way. Treat them right, and they will work better. However the right treatment depends on both the person and the job. Some people when treated like humans will do the minimun, but are motivated by being treated like dirt. Most are not.
One famious football coach constantly yelled at the players, treated them like dirt, etc. They won many games because the players lived to show the coach he was wrong. It works good for football because there is an outlet to the violence that "bad attitude" management provoakes
I'm working construction now (until the computer ecconomy improves...), we have one foreman who doesn't get as much done because of his attitude. He treats people like dirt, and most don't want to work for/with him. But a few guys improve under his eye.
Fortunatly most of my bosses where the type "give him direction and let him loose." I've had my boss tell flat out not to come in one day because there was a big deadline and he didn't want me interupted.
Percolate (Score:3, Funny)
Dude, I let your name percolate in areas of my subconscious that I didn't even know I had.
After all that percolating, plus some mild altering drugs, I still can't figure out how to pronounce " Csikszentmihalyi".
Re:Percolate (Score:3, Funny)
Re:Percolate (Score:3, Funny)
I don't think that's his real name: it's a variable that a programmer came up with after they had just been interrupted...
Programming (Score:4, Funny)
Please forward to our foreign compatriots... (Score:5, Insightful)
A shower?? There's a guy in the Republic of Elbonia who's willing to work out of his hovel on a old 386 for $4 a day programming. He doesn't demand breaks, and there's no coffee machine to stock. And he's viewed as a nearly identical resource. Now is not the time to demand high priced add-ons. But... if we could just get the people of Elbonia to buy into this and equalize the market...
Re:Please forward to our foreign compatriots... (Score:2, Interesting)
We pay them $10/hour but the work they do normally has to be redone 2 or 3 times before they get it right, and even then, the code is awful: Variable names like x and z, C when they are supposed to be using C++ and lots and lots of access violation errors that destroy all the hard work that I do.
I would rather pay a good programmer $50/hour.
At first I thought, for $10/hour how can you lose? But in retrospect I'd say
Re:Please forward to our foreign compatriots... (Score:2, Interesting)
The problem with exporting work (Score:5, Insightful)
The problem with this whole "exporting work" argument is that, the vast majority of the time, the foreign workers simply aren't as good at it, or even close. I'm sorry, I'm no racist, but this is simply the way things are.
It's true of call centres, where people reading from a script with no concept of the product and English as a second or third language just don't project a good impression or offer much help. If you doubt this, ask Carly about how HP did when they moved much of their call centre work abroad.
It's also true of programmers. If someone in India can do the same job as me, for 1/10 of the price but just as well, then apparently at least one of us has got our expectations wrong. OTOH, if a programmer in India has the same job title as me, charges 1/10 of the price but does 1/20 of the work, is this an improvement? Of course not. And I think it's fair to say, quite objectively, that the vast majority of foreign developers lack the education, industrial experience and professionalism exhibited by decent programmers in places like the US or UK.
In the long run, companies will have to adapt to this. They will either recognise that the cheap option doesn't stay cheap when your quality, and consequently your business, suffers, or they will see the need to invest in proper training and support of the foreign labour to raise standards, which will cost them more. Either way, you do get what you pay for. It's just a matter of time until corporate greed starts losing to smart management on this one.
Re:The problem with exporting work (Score:3, Insightful)
The cost of living in India is far less than the cost of living in Silicon Valley. The salaries in the States are high by necessity, it isn't just greed.
Re:Please forward to our foreign compatriots... (Score:5, Insightful)
Option 1: Overseas programmers produce poor code with lots of errors.
Answer: Get a group of you together and setup a company offering to rescue faulty developments and fix bad overseas code on a high speed/high fee basis. Invest in tools that help you to do this, or write your own.
Option 2: Actually, they can program quite well - well enough that they are more cost efficient than you will ever be.
Answer: Setup a company sketching out the design of the software, and outsourcing the work yourselves to India. Sell it a as risk reduction exercise.
Option 3: They program well, but you don't fancy option 2.
Answer: Create code and programs that enable you to program cost effectively in relation to Indian programmers, even in only specific niches.
In short, the global marketplace isn't going away. If you want to survive doing what you're doing at the moment, you are going to have to raise your game to compete.
Times of change bring opportunties, grab them. When you do, and you control your destiny - you can have whatever setup you require.
I learned about psychology (Score:2)
Other ideas (Score:5, Interesting)
Re:Other ideas (Score:2, Interesting)
One thing that seemed strange to me in the article is the author claiming that pair-programming does not break the creativity flow. While this may be true per se to a large extent, eXtreme Programming (the most popular pair-programming methodology out there) is about pair-programming in open offices, where nothing stands in the way and you have no privacy. Not quite what he is advocating... Have you ever w
Re:Other ideas (Score:2)
* Music (not so good to makes one want to hear the music instead of working, neither something so bad that breaks concentration)
That's why we clever people invented headphones. Invest in some good sounding Sennheisers, and listen to any music you like. I tend to concentrate best with symphonic metal, but my environment doesn't.Peopleware on Music and Programming (Score:4, Interesting)
In Peopleware DeMarco and Lister writes about a series of test at Cornell on the effects of working with music in the 1960s:
The result was that groups with and without music performed about the same in speed and accuracy of programming.
However, the output data was to be manipulated about a dozen times. The net effect of the operations left output number equal to its input number.
The overwhelming majority of people who figured it out came from the group working without music.
If the right brain is busy listening to music the opportunity for a crative leap is lost.
So if programming is a crative art do not listen to music.
...her? (Score:5, Insightful)
Re:...her? (Score:2, Funny)
Re:...her? (Score:5, Interesting)
As a 'Brit' I too find this very odd. Consider this small chunk of text:
If written by someone from the UK (and probably AU or NZ) this would be written like this:
No use of gender, and perfectly correct English too.
Re:...her? (Score:2)
No, it's not. In fact, I know several people who find this usage really irritating. It is a common usage, but it still reads awkwardly.
But at the end of the day, who really cares? The meaning is clear either way, and the subject of the article is much more interesting than English grammar. :-)
Re:...her? (Score:3, Informative)
This is grammatically incorrect. You are talking about a singular programmer, hence "himself/herself" and "his/her" labors. You would need to use "both for the programmers themselves..."
(Ducks flying rotten tomato)
Re:...her? (Score:3, Informative)
This is grammatically incorrect. You are talking about a singular programmer, hence "himself/herself" and "his/her" labors. You would need to use "both for the programmers themselves..."
(Ducks flying rotten tomato)
Oh no you don't.
Re:...her? (Score:2)
Traditionally, the non-gender-specific terms were "his", "he", etc. However, according to the Handbook, these may be considered sexist and therefore offensive (their opinion, not mine), so they suggest instead to arrange the sentence in such a way, I think, where the pronoun is no longer necessary. Don't quote me on this, t
Re:...her? (Score:5, Funny)
Because they're writing about me.
I guess a male author planning this kind of article would prefer to imagine the situation involving female (in this case programmers) rather than males, unless they're gay or something.
Why do you think the shower was so important to the computer researcher mentioned in the article?
Interest (Score:2, Interesting)
Re:Interest (Score:3, Insightful)
You're probably a good coder - but you're a lousy Software Engineer. As someone else has already pointed out - comments are not for YOU.
Well written code is code that someone else can start working with without having to ask the previous developer any questions.
Re:Interest (Score:2)
Wow, so it's like a metaphor for your life, where you never use paragraphs or effective punctuation, huh?
what's suggested in article is the best way (Score:2)
People ARE different, what fit one, not necessarily
fit other.
My performance when I am alone and uninterfered
is about 5% compared to when I can talk about what I am programming to other person (even not necessary a programmer, just a good listener).
Attention spans (Score:2, Funny)
I was going to try to figure out what the heck this guy was thinking, but I got distracted.
He doesn't understand Scientists (Score:5, Interesting)
Which shows that this guy doesn't know scientists. Scientists - true scientists, not technicians - are very like this guy (correctly) describes programmers. Both programming and scientific research are creative skills which, as the man says, require you to be "in the groove". He is not wrong about programmers - he is wrong about scientists. Techicians, to some extent, have less need to be "in the groove" - though much of what he says applies to any human being, with only the time constants varying.
OTOH. 3. Accommodate Reasonable Special Requests. When I get really stuck on a design problem, I go for a walk in some very beautiful woods about three miles from my office. An hours walk in the woods has about an 80% chance of delivering a solution to the problem. Even, curiously, if I don't spend much time conscioulsy thinking about the problem. In fact, I sometimes feel that by subconscious is telling my conscious to let go that problem and leave it to me. Dropping a problem for an hour or day and then coming back to it can be remarkably constuctive.
In fact, I sometimes feel embarasssed that the conscious "me" claims credit for the bundle of mad scientist, lechers, random thought generators, and idiots who inhabit my subconscious and do all the work.
Walk in the Woods (Score:3, Informative)
Worse yet, at one point I had to account
No longer true (Score:3, Interesting)
That is not to say that our education system is evil (well, it is, but that's not the point) or that people today are stupid. The reason for this programmer pluggability is that the market evolved to the point where creativity simply is not neccessary, since most common problems have been solved and codified -- and there is no demand for uncommon tasks.
The only two places right now (IMO) where creativity and real intelligence are needed are the embedded coding and theoretical CS research. Theoretical CS research requires creativity because it's, well, research. Embedded design requires creativity because the resources are so limited, and a pre-designed solution simply will not work in your PIC16 microprocessor with 4Kb of RAM, and so you must be really tricky to make your program fit into the limited space and time constraints.
Outside of these two niches, programming has truly become similar to construction work: a few engineers design the building, and then 100 grunts carry bricks around and hammer nails until it's done.
Re:No longer true (Score:2)
This is complete and utter bullshit, unless you're coding industrial machines for a living. And if you think that VB programming is just about dragging widgets around a screen and dropping them on a form, you obviously don't know much about VB. The Japanese and Chinese believe
Re:No longer true (Score:2, Informative)
Actually, I used to code VB for a living (shame on me), back when it was VB4 or whatever. What are they up to now, 7 ? Anyway, all I needed to do was design some forms, double-click their properties, and add event handlers so that the "Ok" button closes the form. Don't get me wrong, I like the fact that software is smart enough to do this now -- but the
No need for creativity?! (Score:3, Informative)
I think you overgeneralise. Some development tasks (writing dumb database front-ends, principally) require little creative input. However, much of the back-end stuff requires creativity. Writing a good UI requires creativity. Even designing good database schemas requires creativity.
It's true that a significant fraction of "software development" today just involves using VB, Java and/or web scripting to put together McDatabase code, and that's probably fairly easily automated. But there's a whole world, a
Re:No need for creativity?! (Score:2)
I meant "back-end" programming, as opposed to boilerplate UI or database access code. That covers everything from a smart spell-checking algorithm in a word processor through state of the art mathematical algorithms in a scientific calculation app to hardware control logic in instrument control and embedded software, and much more besides. In other words, it includes most of the programming industry outside of writing database
Re:No longer true (Score:2, Insightful)
Even in desktop applications market, inovation and creativity is needed if you want to bring new products and you can't do that just using braindead coders. You need real ta
Re:No longer true (Score:5, Interesting)
I'm sure most programming in big business environments has become very sterile. In a Dilbert-esque setting, I can see where you're coming from.
Where I program, I'm not sure that holds true (though I'm well aware that the kind of programming that I do is somewhat atypical). There's an overall design, but programmers are given subsystems to implement. They're told what it has to do, but not necessaily HOW it has to be done. Each programmer at the company could complete the task, but I'm sure no two solutions would never be the same.
As for CS students learning things by rote: I was going to say that you're wrong, but then I thought about it and decided that you're partly correct again. I saw a lot of people with no love for computing get through computing science because they test really well. Me, I test like crap on a stick, so I had to actually learn the lessons of algorithmics and creative thinking that are the subtext in those classes. I think the majority of people that go through CS and never once think about any sort of research career path are the kind of boilerplate programmers that you're talking about. Someone that has some desire to discover something new will make a perfectly creative programmer in the real world, and it may happen more than you think.
Interesting but wrong? (Score:4, Interesting)
I think the article has an interesting perspective, and I totally understand the "in the zone" argument. Sometimes you have it, sometimes you don't, and sometimes an interruption really is just soooo irritating.
However, I'm not sure the suggestions are really the way forward. In particular, such research as I've seen (sorry, can't cite a link off the top of my head) suggested that actually, a small team of programmers was much more productive in their own open-plan-like "team space". There are several logical explanations for this, not least the fact that if you do get stuck with a mental block, help is just a question away. You also get interaction with conversations other members of the team have, and either learn something yourself or offer them a solution neither of them knew about but you did.
Sure, you need to have a team who get on, and realise when someone is really going for it so they don't interrupt at just the wrong moment. But all that really takes is having a little consideration for your team-mates, and a willingness to say "Can I get back to you in half an hour?" without being distracted, neither of which is hard to do. No-one really sits in the zone all day, it's more like a few minutes when the germ of an idea comes to you and you want to flesh it out, and that's the time when it's bad to be interrupted.
Other than that, I find it's much more helpful to have the interaction for the remaining 90% of the day, so you don't get "programmer's block" and just sit there thinking about a problem but not really getting anywhere. I guess this is one of the major advantages of "pair programming", too, if you've got people who are happy working together that closely.
I agree that programmer comforts are generally a smart move: where I work we have a decent flexitime system, concern over things like chairs and lighting, headphones so people can listen to CDs while they work and, yes, even a shower. These are all good things, appreciated by the developers, and so the developer productivity and loyalty is very high. But we still work in an open plan office, even if everyone does have "their space" in it. :-)
Re:Interesting but wrong? (Score:2, Insightful)
In particular, such research as I've seen (sorry, can't cite a link off the top of my head) suggested that actually, a small team of programmers was much more productive in their own open-plan-like "team space".
He didn't actually say that the programmers needed to be in their own offices, or even that all interruptions are bad. He just said that they shouldn't be interrupted by anything that's not related to the task at hand. In other words, sharing space with people working on the same/similar problems
Re:Interesting but wrong? (Score:2)
True, the "getting my own office" comment was made by the person who submitted the article, not in the article itself. You have to admit that the article seems to support the idea pretty strongly, though.
Nonsense (Score:4, Insightful)
programmers usually do have a longer attention span and a greater ability to concentrate than the majority of the population
Anyone who has a degree has a longer attention span and greater ability to concentrate than the majority of the population. There is nothing here that makes programmers special.
Writing code is an act of creativity. It isn't science and it isn't engineering, although programmers are happy to apply science and engineering to the creative process, when possible.
This is just nonsense. Why can't engineering - the design of a new product - be creative? Why can't science - the discovery of new knowledge - be creative?
The vast majority of programming in the world is not creative. It's a skilled craft, sure, but it's not about creativity - that is, making something exist that did not exist before. One database application, or web site, or GUI etc is really much like another. The details differ, but it is not pushing the envelope of the possible, like scientists and engineers do every day.
Professor Mihaly Csikszentmihalyi of Chicago University, formerly the chair of the psychology department, has studied hundreds of exceptional individuals, from IT entrepreneurs to Nobel Prize winners, researching creativity. He has written many books and papers on the subjects of flow and creativity
An entrepreneur has a wholly different perspective than a programmer. There may be some overlap between the two groups, but they aren't directly comparable. An entrepreneur will spend most of their time on tasks other than programming, for a start, such as raising funding, making sales, hiring employees, managing existing staff, scouting out the next office, a million other things. But the article is all about how programmers can only do one thing at a time.
If a programmer's flow is interrupted it can take a large amount of time for her to regain the state, sometimes up to an hour.
This is just mystical hand-waving. I half expected the next paragraph to be about "using the force".
you should isolate the programmer in his or her own room.
why not give each programmer a budget with which they can buy their own chair and desk?
This is just more "programmers are special and should get special privileges". Programmers are no different from any other skilled craftsmen or any other office workers.
I don't give a fig if this costs you more money; the potential benefits are huge. If you continue to view the world as a risk/value proposition then you'll continue to produce mediocre results.
Any sane business manager weighs up risks and rewards. The suggestions in this article aren't about productivity, they're about luxury. Work is work - many people forgot that in the 90's when an office was more like a kindergarten, and look where that got us - many of those people are unemployed now. It's time to grow up and start behaving like all the professionals in the world.
*Yawn* nothing new here (Score:5, Insightful)
Programmers should be treated like professionals. Just like every other professional. What a revolutionary concept.
However:
A secretary is being creative when s/he drafts a letter to send to a client on behalf of the resident phb. Does s/he get a shower in his/her office? How about the sysadmin that creatively comes up with a method to speed up deployments? And the engineer that shaves 10% off the time to manufacture your widgets?
Just because your job involves being creative does not mean that you deserve special consideration. Adequate tools, training, and respect, yes. But everyone needs those to perform their "best."
Therefore, this article is bullshit. All creative people can perform better if you enhance their working conditions. All *people* can perform better if you enhance their working conditions.
What a waste of electrons.
(Yes, this is 90% nicer than my previous rant
You're missing the point (Score:5, Insightful)
This isn't about special consideration because programmers are 'special people' who deserve it, it's about maximising productivity and morale at the same time without having to spend much money in the process because that's good for the company.
A secretary who is drafting a letter is an administrative assistant, and SHOULD be able to draft a letter in peace. Otherwise, it's just another case of damaging productivity by failing to think. The Engineer who shaves 10% off the manufacturing time probably was able to do it by having the same conditions that the article recommends for programmers.
There are a number of jobs that call for that sort of thing to some degree or another, and for varying percentages of the day.
To use your example, it is doubtful that the latter being drafted will run 100,000 lines long, take 3 months of highly professional manhours to produce, and remain 'in production' for the next 3 years (complete with a single typo/thinko costing thousands of hours in excess support manhours
So, though the secretary should be able to finish the letter uninterrupted for maximum efficiency, the time period is shorter, and the complexity of the mental map that will get swapped out if an interruption DOES happen is a lot smaller.
Yes, all people can perform better if you enhance their working conditions. Different professions have different sets of needs for their ideal working conditions. The article was a few pointers to managers about what they should do for programmers. What to do for administrative assistants, lawyers, cooks, and mechanics are all worth knowing to someone who manages those professions, and should be covered by similar articles.
Programmers aren't pecial (Score:2)
My experiences of programmers (Score:3, Interesting)
1. They do not know the meaning of deadlines! How many times, I've been working late because some dim wit of a developer didn't see the importance of actualy meting the deadline he proposed himself. Working late evenings, working weekends because the programmer didn't see why he should put the extra time in to catch up. Sounds familiar?
2. They do not know the meaning of quality. How many times have I sat there with a program or package from development that simply will not work / start-up / compile. All this despite development's assurances that they do actualy unit test. I once had to test a program that did nothing, ie it was called from another program, but all it should do is close itself down - it was a stub. How difficult is that to program and how difficult is that for the programmer to test themselves? It took SEVEN attempts to get it right!
3. Keep it simple stupid! How many times have I had to sit there wondering if I was looking at the correct Buisness Requirements and Functional Spec. Final designes seem to be as complcated as posible rather than simple. Functionality slippage is common - lets put this bit in as well.
4. Yes, but programmers are artists. Bollocks! If you look at almost any system, you will see that the basic number of functions is very limited. Given any average office system, you could probably find public domain code to do 90% of what you need. Yes it will need changing and tweaking, but this idea that you sit there creating is simply rubbish. Perhaps if you stopped creating and started engineering things would be better.
5. The Prima Donna syndrome. Programming used to be a black art. Well it isn't any more. However, some developers seem to think they should still be treated differently as this article demonstrates. If any other professional argued that they needed a kip durring the day, they would probably be booted out. You want a kip, have it at lunch time! Not having a much time at lunch - welcome to the real world.
I know this is going to be marked down as flame bate, but it has to be said it is about time that programmers came back into the real world. With comments like If a programmer's flow is interrupted it can take a large amount of time for her to regain the state, sometimes up to an hour. do you realy wonder why people question programmers professionalism? Everyone else has to work hard for a living, and creativity comes into most jobs, but most just get on with it.
Re:My experiences of programmers (Score:4, Insightful)
2. This is either because of unreasonable deadlines, or you work at Microsoft. Maybe both.
3. Keeping it simple is good, unless you sacrifice quality, or scalability. Maybe the programmer knows something you don't?
4. If you're adding fields to a payroll program, you don't need to be creative. If you're designing a system unlike anything else in your organization, you do.
5. Anything can be abused, and will be.
In short, you could've learned something from this article, but you chose to use it to fuel your own personal vendetta instead. Hopefully you never go into management, unless it's for one of our competitors.
Garg
Re:My experiences of programmers (Score:4, Insightful)
2. I wuould say, this is b/c of poor quality of requirements and other specs - the concept of quality and scalability of the product should never be created by the programmer, instead it should be very explicitely clarified begining from requirement gathering (marketing), then analyzed (product managemers and architecturs), then specified (software architector), including all possible unit and otther tests. The programmer should just continue processing of requirements for quality of the product to the quality itself (before QA, sales and support will finish it). If this chain is broken or missed then the product is not supposed to make any money. Only Microsoft can let the product be designed without requiretns for quality (they compensate it politically). others will go out of business.
3. Keeping specs being simple doesn't sacrifice (including scalability) the quality of the product by itself. But the way how such requirements for quality are expressed (gathered, analyzed, designed and specified) must be as simple as possible (but not simpler - see Albert Einstein). It is true that often a good UML diagram explains better than the text of the same paper size. But if the case is not typical (not from UML/RUP books) then it's more likely you'll spend more words to explain your non-typical diagram (what does it display and why it is important for this project) than you'll do it without a diagram just on plain English from the first place.
4. If you are adding a summary filed from another subgroup (perhaps from bellow) to a regular record line in the report (for some sort of comparison) - then you have to redesign the architecture of your report by either making it two-cycle calculated, or using some temporary table (bad DB idea). So, you are creative at that time. But I prefer to thing about it as about engineering creativity. BTW, trying to reuse any code (as a source code!) from virtually any open source project has more art than writing a poetry and if you disagree than perhaps you've never tried it by yourself.
5. I've never seen in my life sleeping programmer aside from extreme situations of several shift straight forward. What programmer are typically want is arbitrary time to come and to leave the office. Same as many other people do. Some companies refuse it and play the game "we are in army", anothers let it go but more intensively rotate (fire and hire) persons with low evaluation points.
Re: (Score:2, Informative)
Re:On Saturday the Building is MINE! (Score:3, Funny)
Don't listen to him (Score:2)
Psuedoscience (Score:5, Informative)
I particularly like how this fellow uses Autism as a reason, then clarifies it by noting a single branch of the entire syndrome as if that's what it's *really* called, and finishes up his great assumption by explaining that autistics must have high concentration levels.
While they're in the same psychological realm, he's trying to refer to ADD.. not Autism.
From ADD.org [add.org]
"You get one idea and you have to act on it, and then, what do you know, but you've got another idea before you've finished up with the first one, and so you go for that one, but of course a third idea intercepts the second, and you just have to follow that one, and pretty soon people are calling you disorganized and impulsive and all sorts of impolite words that miss the point completely."
Autism on the other hand is the complete inability to concentrate on ANY task for short periods of time. Autism is associated with Stims, self stimulatory behaviour. Asperger's Syndrome is a "mild" form of Autism that tends to affect mostly boys. Note that there is still a lack of common sense [autism.org] associated with this. Simply being quirky is not Asperger's.
A child with ADD is more than likely able to understand you when you tell him to "sit still, eat your dinner," while a child with Autism might just flick his fork around continuously while he's eating.
Credibility: I work with Autistic children, and ironically, have been diagnosed with ADD.
Managers either get it or don't - and won't cange (Score:5, Insightful)
One issue the article fails to mention is that you can in fact divide one programmer between development and support roles. The article says don't intersperse these roles durring the work day, but I've found in my own work, - which requires both activities - that the manager simply has to allow the programmers to do his own time alocation, for example, I find that I can get into the work day completing a series of support tasks, in the morning when I'm relitively stress-free, then in the afternoon, turn my focus to one of the never ending pile of development projects on my desk.
Having said this, I have to agree with the author that interspersing these tasks such that every 45 minutes the programmer has to stop developing and change his mindset to support a user, hten shift back into development mode is inherently bad.
The point is, programmers - being artistic as they are - are reasonably flexible. It's just important not to expect unreasonable flexibility, as this would prevent achieving the nessecery level of focus on each of the tasks at hand.
--CTH
Intuition (Score:2)
I think there is a single, simple, well-understood word for that: intuition.
Artists vs. Scientists? (Score:2, Insightful)
True scientists and true artists have more in common than the general public thinks. Art and science are built on pure creativity; open minded scientists and artists also mesh well together, and can have some stunning conversations which provide insights into each others work.
I suggest you all read Martin's play "Picasso at the Lapin Agile" for a little insight.
Jim
My Vent as a Programmer (Score:2, Insightful)
Fascinating - Explains A Lot (Score:2)
From personal experince, the average programmer spends 2-3 years at any job. The most common excuses for leaving: lack of challange, lack of requirements flexability, inflexible or unresponsive managment, and red tape(configuartion managment going out of control and issues such as having
Brilliant (Score:2)
Grrreat idea! Now your office is going to have skinnable chairs and themable desks with a configurable number of legs :)
Psychology of a company (Score:4, Insightful)
Too many programmers are Asperger-syndrome types that have difficulty with social skills and with understanding that THEY work for SOMEONE ELSE. They are not the boss, and therefore, just because they think something should happen a certain way, doesnt mean all other ideas are wrong.
There is a severe problem with tech workers in this respect. Too many think that they are driving and refuse to take direction. Too bad if something like this were written, most of them would not read it, and if they did, they would discount and ignore it.
Good Interruptions (Score:3, Interesting)
Some author - maybe it was Hemingway - said that when he was done writing for the day, he'd always stop while he was still "into" it. This gave him something to look forward to the next day. It gave him a place to start.
I think a similar technique is useful for programmers. For example, say you are writing a really fun function but only have 10 minutes of work left. I say, stop writing! Spend the rest of your time on the net reading some tech articles, or improve your code's documentation (if you think documentation is boring, maybe you aren't doing it right. When you document, pretend your talking to another programmer about your program).
When you come in the next morning, you'll have an easy way to start the flow again. You won't be hacking around trying to figure out what to do next.
Hacker Employment FAQ (Score:3, Interesting)
Malachi
So. (Score:5, Interesting)
Software bees (Score:5, Interesting)
Software - How Software Companies Die
By: Orson Scott Card
The environment that nutures creative programmers kills management and marketing types - and vice versa. Programming is the Great Game. It consumes you, body and soul. When you're caught up in it, nothing else matters. When you emerge into daylight, you might well discover that you're a hundred pounds overweight, your underwear is older than the average first grader, and judging from the number of pizza boxes lying around, it must be spring already. But you don't care, because your program runs, and the code is fast and clever and tight. You won. You're aware that some people think you're a nerd. So what? They're not players. They've never jousted with Windows or gone hand to hand with DOS. To them C++ is a decent grade, almost a B - not a language. They barely exist. Like soldiers or artists, you don't care about the opinions of civilians. You're building something intricate and fine. They'll never understand it.
BEEKEEPING
Here's the secret that every successful software company is based on: You can domesticate programmers the way beekeepers tame bees. You can't exactly communicate with them, but you can get them to swarm in one place and when they're not looking, you can carry off the honey. You keep these bees from stinging by paying them money. More money than they know what to do with. But that's less than you might think. You see, all these programmers keep hearing their parents' voices in their heads saying "When are you going to join the real world?" All you have to pay them is enough money that they can answer (also in their heads) "Geez, Dad, I'm making more than you." On average, this is cheap. And you get them to stay in the hive by giving them other coders to swarm with. The only person whose praise matters is another programmer. Less-talented programmers will idolize them; evenly matched ones will challenge and goad one another; and if you want to get a good swarm, you make sure that you have at least one certified genius coder that they can all look up to, even if he glances at other people's code only long enough to sneer at it. He's a Player, thinks the junior programmer. He looked at my code. That is enough. If a software company provides such a hive, the coders will give up sleep, love, health, and clean laundry, while the company keeps the bulk of the money.
OUT OF CONTROL
Here's the problem that ends up killing company after company. All successful software companies had, as their dominant personality, a leader who nurtured programmers. But no company can keep such a leader forever. Either he cashes out, or he brings in management types who end up driving him out, or he changes and becomes a management type himself. One way or another, marketers get control. But...control of what? Instead of finding assembly lines of productive workers, they quickly discover that their product is produced by utterly unpredictable, uncooperative, disobedient, and worst of all, unattractive people who resist all attempts at management. Put them on a time clock, dress them in suits, and they become sullen and start sabotaging the product. Worst of all, you can sense that they are making fun of you with every word they say.
SMOKED OUT
The shock is greater for the coder, though. He suddenly finds that alien creatures control his life. Meetings, Schedules, Reports. And now someone demands that he PLAN all his programming and then stick to the plan, never improving, never tweaking, and never, never touching some other team's code. The lousy young programmer who once worshiped him is now his tyrannical boss, a position he got because he played golf with some sphincter in a suit. The hive has been ruined. The best coders leave. And the marketers, comfortable now because they're surrounded by power neckties and they have things under control, are baffled that each new iteration of their software loses market share as the code bloats and the bugs proliferate. Got to get some better packaging. Yeah, that's it.
Autism (Score:3, Interesting)
My concentration is interesting. While it is normally quite short, I have the ability to hyperfocus for hours on anything I am obsessing on. This is usually code, so that works out just fine, tyvm.
As far as working accomodations, to get what I really needed, I had to jump off the deep end and become self-employed. My home office has extensive soundproofing and other "accoustical management" stuff, most of it was pretty easy/cheap.
For the first time in my life, I have all of the people I need to be in contact with to do mainly via IM. If I'm lucky, one of these days I can cancel my phone, but for now, I will just settle for turning the ringer off (it flashes, too).
Not limited to programmers (Score:5, Interesting)
I code. Admittedly, it's just PHP, a language of limited utility for anything but web-oriented tasks, but nonetheless a real programming language. I have felt that "flow" when working with PHP: you code fast, overcome obstacles fairly quickly, and it all just flies out of your head and into being. Then you blink and realize that it's been 10 hours since you sat down, and you haven't had anything to eat or drink since breakfast. It's glorious.
But PHP is just a hobby. I'm a medieval literature postgrad; I write papers analyzing tales written over a thousand years ago (my specialty is Old English). And I can tell you that when I really get going on a paper, I reach the same mental state as I described above: I sit, I type, and it flows. The thoughts I've been tumbling around coalesce miraculously into a full paper. Sometimes the flow lasts even into the "debug" stage where I have to go through and check to make sure that all of the footnotes are there, and that every comma, semicolon, and punctuation mark is in place, from the first sentence to the end of the bibliography.
For this reason, I believe that "flow" happens to anyone who is capable of becoming absorbed in a task. The type of task is probably important, though. I feel a bit flow-ish writing this post, because the topic is interesting and requires thought. But if you set me out as a lifeguard, say, over a pool full of people, I would never, ever achieve "flow". "Zoned out" maybe, but not "flowing" (which is bad news for the drowning guy in the deep end). On the other hand, repetitive physical labor -- setting bricks, knitting, making chain mail armor -- can be mentally liberating (in proper amounts).
Programmer psychology. (Score:3, Funny)
The programmers are the most valuable people in every organization, even if they do a job that is of negligible importance for the rest of the company. Thus, each programmer should earn more in a month than all the shareholders and management of the organization combined earn in a year. Each programmer should be given a $60,000.00 car for each member of their immediate and extended families with all expenses covered by the company. All of this in addition to benefits which include every type of insurance imaginable and every type of investment, paid in full by the company, for the programmer's benefit. All of the programmer's bills should be paid by the company and all discretionary spending should be submitted on expense reports in order that the company can reimburse the programmer for those expenses as well.
A point system should be established so that the programmer earns a point for each dollar spent by the programmer or any member of his/her immediate or extended family, and at the end of the year, the company shall pay that programmer ten dollars for each point earned. Furthermore, the programmer with the most points at the end of the year receives a bonus equal to ten times the combined points of all other programmers in the organization, or one million dollars, whichever is greater.
Obviously, each programmer receives a corner office with a square footage of 1,500 square feet or greater, with plush furniture, a private secretary, a private DS3 connection to the Internet and any computer equipment desired by the programmer.
Every member of the organization will have to make an appointment, through the programmer's secretary, for the priveledge of speaking with the programmer. The secretary may indefinitely tell everyone in the organization that the programmer is busy and cannot talk. If it takes the programmer a long time to accomplish some task, the boss is to make an appointment with the secretary in order to thank the programmer for taking his time to make quality software. If a bug is found in the programmer's software, the boss must make an appointment with the programmer's secretary in order to thank the programmer for all the bugs that were not introduced into the software. If the programmer writes long code, the programmer receives a penny for each character typed. If the programmer writes short code, the programmer is paid 100 dollars for each character typed.
Nobody may criticize anything done by the programmer, and each programmer must be given tenure after 1 day at the organization, after which the programmer may not be fired or laid off for any reason.
All intellectual property developed by the programmer is explicitely the property of the programmer and not the company. After each piece of intellectual property is developed, the programmer may bill the company for royalties for use of the intellectual property. And in fact, all of the aforementioned shall be made federal law.
lil things. (Score:3, Informative)
First thing I want is leeway of when I come and go. I am not especially good at keeping track of time when I'm thinking so yes I might show up at work 15 minutes late and leave three hours late. I tend to wander around when I'm thinking so I might just wander out for a walk at anytime or maybe take lunch at some weird time or not take lunch at all. As long as my work is getting done don't bitch at me for these things.
Give me vacations when I want them. I don't even ask for paid vacations. I just need the ability to go take a 3 or 4 day weekend sometimes. Don't give all other employees vacations but deny me mine. The worst I had was a travel agency I programmed for.. they sent all new employees to Italy as soon as they were hired.. except for the couple of us that were programmers. That just really sucked. I really liked working there and would work extremely hard for them but things like that really left a sour taste.
Don't lay me off when the project is over. This is probably the worst. I'm so freaking paranoid now because I take jobs that aren't labeled as per project.. then when the project is over.. after working my ass off to get it done well and done quick.. I'm let go. It's hard to be loyal if you can't trust your employer and it's hard to work your ass off for someone you expect to stab you in the back. If the job is only for the length of a project then say so upfront.
Put up with the fact that I'm weird and not especially good at socializing. Yes, I may wear things ranging from neon orange sweat pants and ratty old tshirts to a purple pinstripe suit but it doesn't hurt anyone. Don't think I'm anti-social just because I don't talk a lot over the water cooler or go out drinking with the guys after work. I'm a busy guy - working for you - so appreciate my effort. If you want me to go out after work with the guys then invite me - in person - several times. A lot of times I'll simply forget anyone invited me unless they ask more than once. It gets lost in there some place between lines of source code. Really go look.. I've been known to make notes such as that as comments in the code I'm working on. Don't tell me that everyone hates me and thinks I'm a jerk because I never hang out. Really not very motivational.
This guys idea about letting the employee pick their own furniture is good. Especially the bit about the chairs. I'm a big guy (6'6, 300lbs) and normal chairs just don't cut it. Give me a small budget for office supplies too. I don't like filling out forms because I need a place to hang printouts. Trying to explain my needs to a none programer is to much effort.
Give me a well soundproofed room. Music helps me program - especially loud music. I don't know why but it does and I'm certainly not the only programmer to have noticed. Having my own office is very motivational to me and if it's well designed I can play my music and not bother others.
Keep a kitchen and bathroom nearby. If I have to go out of my way to get a drink or take a leak then I'll probably just wait til after work which isn't good for concentration.
Don't call my desk every five minutes for no real reason. The phone ringing tends to bother me.
If I'm on call then why not give me a cellphone allowance? That way I can pick the one I want and not have to pay for it out of my own pocket. That way I can pay the bills directly so if I use it as my personal phone too I don't have to explain those calls to my boss. Swap my on-call status with somebody else now and then so I can go on short vacations.
If I'm sick or can't get to work because of the weather then let me work from home. Telecommuting is a good way not to miss days I otherwise would. I tend to get sick easily so being able to work even when sick is a big thing for me. Give me an allowance for broadba
Re:Gender blunder (Score:2, Funny)
'MakeBelieve software employed its first female programmer last week. At around the same time, male co-workers were seen being taken to hospital by ambulance. High level sources tell us the shock of a female in such close proximity caused a wave of fainting, dizzyness and stuttering. Doctors we contacted remained tight lipped, only saying that the men were barely coherant and were being kept under close observation'
Engineers and other stereotypes (Score:2)
I fear that we are heading into 'real engineers don't eat quiche' territory here...
Surely the point is that the guy is talking about creating stuff from scratch, and most programmers and most engineers don't do that most of the time. If you are building bridges, most of the time you take an existing design, tweak it a bit, and ship it. And a lot of programming is like that too.
Now I suspect that engineers who are working on a fundamentally new type of structure look a lot like programmers who are writing