Last changed March2002, anything to refactor/add in 2004?
Many programmers characterize what we do as a profession or craft. What is the state of this programming profession?
We allow ourselves to be told
how to work - what our processes will be and what our tools will be. Is this true of other professions? Or more importantly, was it true in the nascent stages of other professions?
Imagine how effective the medical profession would be if doctors let managers and "process specialists" dictate how they treat their patients. Wait... we don't have to imagine in the USA, we have HMOs. Flame-bait. I'll bet doctors have no more liberty under NHS.
One huge impediment to the development of a true profession
of programming is that we give control over our methods of work to outsiders. In particular, we have granted the management cult tremendous influence. Many of us have even begun to believe
the nonsense they proffer.
- that programming is a regimented, repeatable, soulless activity, devoid of creativity
- that a good programmer can't do analysis well, because analysis is a people skill and programmers don't have people skills
- that the best choice is always the tool with the most market share
- that the management of manufacturing processes, well suited to automobile assembly lines, has relevance to programming
- that process is as important as talent and experience
We also foolishly cede parts of our own jobs to outside specialists. For instance, we relegate the management of our source code and the process of building our products to nonprogrammers whose processes often needlessly complicate our own work.
Yes, we must put food on our tables. But in good times, we would do better to say "no thank you" to jobs within dysfunctional companies, no matter what salary is offered. Far too many talented programmers squander their abilities helping mediocre organizations or bad managers cheat Darwin. In the long run, that makes for worse working conditions for us all.
If we programmers would operate somewhat more collectively, we could shake this monkey off our back. Let the ISO/SIE/CMM cults apply their manufacturing principles with low-grade talent. LetThemFail?
. If you have strong talent, lend it only to organizations where you can practice your craft free from interference. If you work under bad management, vote with your feet. And if the upper management is competent, tell them why you left.
If you like XP for example, work hard
every day to find a job on an XP team. When you find a good team, recruit your best former colleagues aggressively. Start study groups to build local networks - programmers don't network enough while they are employed. Work towards aggregating the talent pool around the best organizations.
Until we regain control of our own work methods, we cannot hope to develop the programming into a true profession.
I fully concur. My feelings and the resultant actions are articulated in TimeToChange. -- JeffPanici
"If you work under bad management, vote with your feet."
The problem is, eventually, if you vote with your feet enough, there won't be any new ground left to stand on.
I think this is relative to the individual. Maturity and experience help. As an example, I was programming for many years before I actually got into the corporate side of things - and that experience helped me develop my own concepts regarding software development in particular, and my own worth in general. Armed with that, I was observant of how things worked in 'IT' vs 'Operations' - and when I was offered a position in IT I refused; they were clearly broken. I ended up doing some very interesting things on the operational side on a small team. Me and my work is valued because it allows the operations group to do more with less - perfect symbiosis. My team is like a 'mini-IT' department for the Ops group - and work that would normally be attempted with the IT group in the past (on time lines reaching into several years, and budgets approaching tens of millions of dollars) is more economically and timely accomplished by us. The group and positions did not exist when I first joined the company - over time the concept of a tightly integrated development team became apparent to management, and the rest, as they say is history.
It's not clear what you are doing now. What would be a typical day? Is it some form of automation, or simplification (process re-engineering)?
Two blog article warning people against a programming career:
- Field changes too fast for experience to be valued much & requiring constant re-learning
- Low prestige
- Path "upwards" is bumpy in practice
- Lousy working conditions and/or long hours
- Accounting, Finance, and Law offer better long-term options, even if they start lower
Not listed, but something to still consider: CarpalTunnelSyndrome
See also: ProgrammersBurnout