Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Developing software needs a clear mind, full of creative ideas (art) & good knowledge in computing, software domain and logic (science).

Still many companies consider programming as a desk jobs, where you have tasks you have to finish. But it's not just paper filing, developers are more creative on few days than others, more keen to solve the software issues and problems one day and the other day they don't feel like even if they try hard to do so.

How should IT department management concider this issue?

Should developers be considered as artists and given full time to do what they like to do (many will not deliver software on time like that) or should developer be treated as assembly workers who have to finish their specific tasks no matter how they feels about it (will not get quality results)?

I think it should be somewhere in the middle, but where exactly?

share|improve this question

closed as not constructive by thorsten müller, Walter, Joel Etherton, ChrisF Feb 28 '12 at 14:12

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

Programming is indeed a creative profession, but that doesn't make it an art, and having to finish a set of tasks within a specific time period doesn't make your work a "desk job", at least in the manner you seem to think it does. –  Yannis Feb 28 '12 at 9:44
It's what you make of it. You can be an artist, a craftsman, a coder, or a miserable useless code-monkey. Like the French say: "L'habit ne fait pas le moine". Same goes for any activity. –  haylem Feb 28 '12 at 15:38

5 Answers 5

up vote 1 down vote accepted

In theory Programming is a desk job. Good programming is an art. However, both require more than average intelligence for sure. Good programming specially, requires intelligence. What makes programming different in the workplace from other professions is:

  1. Programmers are usually given imprecise inputs and output requests, yet, an 'acceptable' output is required.

  2. No specific training path or tools are offered for each type of programming task.

  3. Research and knowledge acquisition is the responsibly of the programmer not the team or the organization.

  4. It is not always possible to find help withing the workplace because no one usually has time (or personal interest) to sit, help, show, document and explain, so a programmer has to be very much self sufficient.

  5. Programming requires personal integrity and self check. Good programmers do above and beyond sometimes without being paid or asked to do extra work.

  6. Programming projects are rarely estimated properly, putting excessive loads on programmers.

  7. Most programming tools are rarely up-to-the task as is. Lots of work (and additional tools) have to be done to make them work (Frameworks come to mind)

  8. The programming project is sometimes composed from people that don't come from the same background, education, company or even culture. This makes communication a challenge in cases.

To overcome all of the above, you need a special person and not your regular average employee to succeed. As a result, developers/programmers are NOT to be treated as assembly worker. I wish we could be...but it is too late form me at least!

share|improve this answer
Hmmm, all of your points could apply to assembly workers as well. –  Yannis Feb 28 '12 at 9:43
@Yannis Rizos, I don't think so. Assembly workers (Ford's assembly line comes to mind) are trained to do a specific task and are not required to teach themselves or research and are asked to do work in time known to be sufficient for their skill level. That is far from the programmer's case. –  Emmad Kareem Feb 28 '12 at 10:52
Ford's assembly line? Are you referring to how it was operated in 1913? Because when I worked at in assembly line in 2000/1, things were done a bit differently... –  Yannis Feb 28 '12 at 10:55
@Yannis Rizos, while I meant the concept, not the physical assembly line, I know for a fact that even the workers on the line don't do research or train themselves and what I have described above still applies. –  Emmad Kareem Feb 28 '12 at 10:57
And I know quite a few programmers who don't do any research or train themselves... There are bad programmers, as there are great assembly workers, your generalizations don't make much sense, sorry. –  Yannis Feb 28 '12 at 11:03

I consider my job not as an art but as craftsmanship.

Usually, companies handle creativity highs and lows by taking into account or by undergoing Hofstadter's law.

share|improve this answer

I think software engineering is a good term for what software developers try to do. And it's less about creativity than it is about ingenuity. The distinction is subtle, but it is the fine line between arts and engineering. Creativity is about creating something new, ingenuity is about creating something that solves a given problem elegantly.

The process of creating software is called software development. You can put a bunch of coding monkeys on an assembly line, but the resulting process is software production and the results are as you would imagine.

If you want to get a great product, you must give your engineers room for developing it. You should give them control over their schedule, rather then trying to force one on them. You ask this:

I think it should be somewhere in the middle, but where exactly?

There is no general answer that question. You must find this sweet spot and it is different for every person and every phase of every project. In that regard, management must be flexible and communicate with developers. If problems arise, tell the developers what the problems are and ask them how they intend to solve them.

When you want productivity, motivation is important. When you want to motivate software developers, then satisfy there need for autonomy, mastery and purpose. Chances are good you'll be done ahead of schedule, with a satisfied team, rather then sending a bunch of burnt out souls on yet another death march.

share|improve this answer

Learn from the best. AFAIK Google has a 80/20 policy about this - developers can use 20% of their time on their personal projects as long as they are company-related. Here are some related links:



Other companies may have different approaches, but I have never heard of any company giving you more than 20%.

share|improve this answer
I don't think this answer has anything to do with the "art vs. desk job" debate. Are you trying to imply that google considers programming 80% "desk job" and 20% "art"? –  Bryan Oakley Feb 28 '12 at 12:24
@Bryan: the gist of the question was "Should developers be give full time to do what they like to do" and "should IT department management concider this issue". I assume the OP did not mean the word "artist" too literally. –  Doc Brown Feb 28 '12 at 15:25

I think Programming starts as an art and then as you become experienced in case solving it takes the shape of a desk job

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.