Log in

View Full Version : In a Developer's Mind


Andy Sjostrom
04-11-2003, 09:43 AM
<a href="http://www.devx.com/devx/editorial/11659">http://www.devx.com/devx/editorial/11659</a><br /><br />I came across this wonderful article about developer psychology. It's not long and boring, so even if you are not interested in development and such, it is still a fun read. The article discusses code writing vs creativity: "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. Therefore to be a programmer one has to be highly creative."<br /><br />The key point of the article is that it is important to achieve and maintan the state of flow. I bet it is true within any type of creative work: "When creative people work on making something new, they often enter a mental state where things just flow. This is a highly desirable state, both for the programmer herself and for the organization that profits by her labors."<br /><br />Go and check out the <a href="http://www.devx.com/devx/editorial/11659">entire article</a> to read what the author, Bryan Dollery, suggests to keep the flow flowing. If you decide not to check out the entire article, here are the three summary statements:<br /><br />1. Provide Adequate Mental Insulation<br />2. Provide Adequate Time to Recharge Creative Energy<br />3. Accommodate Reasonable Special Requests

PJE
04-11-2003, 01:21 PM
Hi Andy,

Check out the Joel On Software archives at http://www.joelonsoftware.com/navLinks/fog0000000247.html where he covers this topic in quite a lot of detail.

One interesting point he makes is that while programming you're holding a lot of information in your head (variables, function names, etc) and that any interruption when in full flow takes quite some time (15+ mins) to get beck. He therefore states that individual offices (with windows) rather than cubicles are necessary to stop colleagues interrupting programmers to use them as a fast access user manual... It saved the person asking the question 5 minutes looking up the answer but lost the person answering the question 15+ minutes of productinve time.

PJE

shekondar
04-11-2003, 02:01 PM
He therefore states that individual offices (with windows) rather than cubicles are necessary to stop colleagues interrupting programmers to use them as a fast access user manual...

I'd be happy if I could just get the people in the next cube to shut up for five minutes!!! :really mad:

shekondar
04-11-2003, 03:57 PM
Hi Andy,

Check out the Joel On Software archives at http://www.joelonsoftware.com/navLinks/fog0000000247.html

His site has some other interesting stuff -- I found his article on interviewing techniques quite entertaining. As I was reading it I was thinking, "who in their right mind would ever want to work for this guy???" Maybe this explains why nobody's ever heard of Fog Creek Software....

vetteguy
04-11-2003, 04:55 PM
Interesting read...and I have to say I agree with most of it. I know I can get a lot more work done when I'm in the "zone" and not dealing with people pestering me. When I had the chance to move into a private office I took it, and it has helped a lot too.

Venturello
04-11-2003, 05:01 PM
--- edit --- sorry for long rant. See discussion on geek central, /. - here on this same article, quite enlightening many of the posts:

http://developers.slashdot.org/article.pl?sid=03/03/29/147251&mode=thread&tid=156

--- /edit ---

I am in an 'open' office. Nice window next to me, co-worker next to me and diagonal, and my boss in front of me. 2 other co-workers on other side of the room. Nice window with wonderful view of highway. At first I thought, hey, cool place to work. I work about 75% of my time coding, and I am the only programmer here. So my productivity is quite important, as the company's software solution are... well... provided by myself.

Now, its hard to concentrate. Being the computer wiz in the company, kinda a jack-of-all-trades (I was hired as a programmer, not this) when any user has a problem, I am interrupted. Printer not working, outlook crashing, spyware, virii. About a third of this calls requires me to walk to this persons location (VNC not enough). Guy diagonal to me, I dont know why the hell, screams into the phone whenever he is talking, which he does a lot, because he services our machines all around the country (spain). He laughs and talks shouting. Guy next to me is quite nice, but he keeps needing help with stuff. And between this 3 things, I know what flow-interruptus is and hwo painful it is for a programmer. My programming is normally at most in 10 - 15 minutes interval, and when I am lucky maybe an hour. And I know what this guy means, after an interruption I am half in a 'where was I?' mood. It takes me quite some time to get steam built up and reach that point where the code... flows. I can handle, and I do, multitasking withing my PC (chat windows, winamp, maybe a couple web browsers) but all within my coding... if someone interrupts me, I am done.

Talked with boss, he accepts problem but said bigger boss (owner) said cannot do anything, no space for separate office (which is true without an investment). I am stressed out, we need a sysadmin or techie to give user support, which I end up doing. And while I try to do my job the best, I end up coming in at 9:30 every morning, and putting in extra hours after everyone leaves at 6:00pm because, at that time, I can be very, very productive. Boss tries to be cooperative letting me in late, but calls pile up for help and I am needed. Also, when near deadlines, I end up doing A LOT more work at home, at peace, than a whole day of coding-interruptus at work.

Now, because of this situation, and the company's unwillingness to invest in my position or in another person to cover the responsabilities I should not be taking (everyone accepts I am overworked, and 'understand' when I cannot keep up to promises on work - they see me running around the whole company all day), I began looking for another job. Found one, in a big multinational (Roche) where I will be part of a team of 9 programmers, and that will be my entire job. Office for myself. Flexible work times. Put in 40 hours a week, they dont mind the schedule. Nice, eh? And did I mention pay is 30% more? Well, Monday I told boss at current job I am leaving on the 30th. He was very disappointed, but understanding.

Now, sounds like I am exagerating but I am not, a storm has brewed around me leaving... I have pulled ahead important software projects in a company where there where none, and brought in big business. Bonuses, pay raises? None. Whatever.. I am not bitter, and that's why I will not elaborate further, they have treated me fine (for it being a small company). Still, I was very disappointed when owner/boss didn't do an offer to keep me. The storm I said that has been happening is from those head of departments that have seen my work, and dont want me to leave. They have gotten together and DEMANDED to the boss/owner that they wanted me to stay... his answer is still to be known, but if they give me a rise to equal that of Roche... I will demand an office of my own AND someone to cover the techie side of supporting 85 computers and 3 servers. Since I know they will not do this, I have no illusions of staying here. A shame, made some friends. Still, Roche is going to be challenging and VERY interesting, and a change of pace - a better position for a professional developer.

Sorry for rant, have nothing better to do at the moment and things just went off :) :oops:

Felt identified when I read about this guy with the shower and the ideas - again, the software I have done (not that I am a genius, any other decent developer given the specs would have done it, still, I think my implementation is qutie good) has produced tons of money to the company and opened a new market. Not millions of dollars, but this projects are expanding and my going off will set them back, since the new developer coming in will have to learn things and understand the structure anew. Well... I guess I am better off at another place. So long XXXX!

Cheers all and good luck, and bosses reading this: take care of your developers!!

Juan Miguel Venturello

---- edit: took out my current company name... also sorry for the long rant, skip post at will!!

Jeff Rutledge
04-11-2003, 05:11 PM
I tend to split my time between development and implementation & management. I was getting distracted quite a bit in our open environment, so now I work from home most of the time.

It started gradually, but now I only go into the office about one day a week.

I convinced my boss it was a good move and he supported it by supplying me with an extra computer and printer, plus a good speakerphone (I do a lot of conference calls).

The difference has been incredible. I just started forwarding my work phone to my cell, which is forwarded to my home when I'm here so that reaching me is seemless. Many people don't even know I'm not in the office when they call.

I definitely feel like I'm getting more done here. It's a new concept in my office so I hope things continue this way. I'd probably have trouble going downtown every day now. :D

SteveR
04-14-2003, 06:04 PM
I'm both a developer, and a boss of developer's. You've probably never heard of my company (DMSI) but we've been developing systems for the analysis of machinery operating consition for about fiften years. The work involves both fairly heavy coding (C/C++, OOP, relational db modelling of +300 tables, heuristics - we developed our own backward-chaining diagnostic system, etc.) and some nasty math (signal processing - FFTs, filters, windowing algorithms, ...)

Anyway, this is not a casual environment. To get full productivity from the programming staff (6 developers, 1 tester, 4 support engineers) we have set up the following:

1. Every developer has his own office and his own door, which is under his control. If the door is closed, leave the man alone. Send him an email.

2. Developers are not internal support people. If your printer doesn't work, its not a developer's problem. Besides, half of my developer's barely know how to turn a printer on - they treat computing resources the way the rest of us treat water from the tap.

3. Scheduled status meetings are anathema - we have two a week for 15 minutes each, shorter if possible. Impromptu problem solving meetings occur continuously, only directly involved participants allowed.

4. We buy the right tools - if a developer feels that a packaged piece of kit will reduce time to market, we buy it. Sometimes the tool doesn't work out - and that's OK, you always learn something.

5. Sometimes you find that one developer simply "has it" for a certain kind of problem - developing instrument interfaces, building parsers, etc. You hate the idea of having all that key capability wrapped up in one individual, but its best not to fight it - just do what it takes to keep that individual motivated and happy, and keep a bottle of Scotch in the office for the day that he tells you he's moving on.

6. The bosses' job is to keep distractions to a minimum, and to filter and funnel the requests from the end users (the people that pay the bills) into a properly defined set of goals and objectives. And then, as much as possible, cement them into place. The best thing the boss can bring to the table is a set of clearly defined objectives that don't change every five minutes.

7. And, at least once or twice a year, let the developers out amongst the end users and see how their creations are being used. You need to keep distractions to a minimum, but not keep the developer's in a vacuum. Nothing is more motivating to a developer than seeing another person actually using the code he has written.

PS I know I use the pronouns "he" and "his" - that's because DMSI has an all-male development staff - not intentional, its just the way its worked out. Do not think that I am denigrating the talents of female developer's, we just don't have any - at the moment.

Steve