Slashdot Mirror


Is Process Killing the Software Industry?

blackbearnh writes "We all know by now that Test Driven Development is a best practice. And so is having 100% of your code reviewed. And 70% unit test coverage. And keeping your CCN complexity numbers below 20. And doing pre-sprint grooming of stories. And a hundred other industry 'best practices' that in isolation seem like a great idea. But at the end of the day, how much time does it leave for developers to be innovative and creative? A piece on O'Reilly Radar argues that excessive process in software development is sucking the life out of passionate developers, all in the name of making sure that 'good code' gets written. 'The underlying feedback loop making this progressively worse is that passionate programmers write great code, but process kills passion. Disaffected programmers write poor code, and poor code makes management add more process in an attempt to "make" their programmers write good code. That just makes morale worse, and so on.'"

76 of 460 comments (clear)

  1. "Creative" by Anonymous Coward · · Score: 5, Insightful

    If you want to go off and do your own thing, fine. Have at it.

    But don't expect to write code that keeps a 777 safely in the air. That is the type of scenario that we need discipline, not creativity.

    1. Re:"Creative" by Entrope · · Score: 4, Insightful

      This is dead on. Every software-developing business needs to decide its own process needs. Even if they are developing safety-critical code that has to pass rigorous certifications (FDA, DO-178B, etc), sane people do not order everything on the process menu. However, an organization does have to look at its market, its code base, its structure/culture, and its history to figure out what kinds of process it should use. Sure, having a defined process means developers spend less time throwing code at the wall, but the code they do throw usually sticks to the wall better and longer, and they usually feel good about that.

      If someone seriously and repeatedly complains that following the process kills their passion, it is due either to a failure of that analysis or them being in the wrong organization. As an software developer and occasional manager and/or process guy, I have seen both cases. I have also seen cases where having a defined process helps channel creativity. Good process tools help you focus on the right parts of the problem; for example, having a template for a design description that identifies particular subjects to focus on, and may suggest areas that have been rabbit-holes in the past.

    2. Re:"Creative" by donscarletti · · Score: 3, Insightful

      If you want to go off and do your own thing, fine. Have at it.

      But don't expect to write code that keeps a 777 safely in the air. That is the type of scenario that we need discipline, not creativity.

      You need creativity to write something accurate, elegant and easily reviewed, tested and verified. You need discipline to actually do the review, testing and verification steps. Both are equally important if you want something solid and delivered on time.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    3. Re:"Creative" by heathen_01 · · Score: 5, Insightful

      This is dead on. Every software-developing business needs to decide its own process needs.

      This is just another cargo cult problem. Managers, seeing that another company/team use process X on a successful project, decide to implement the same process for their team. However no process will make a difference if the developers have been directed to build the wrong solution in the first place, even if the code is 100% bug free.

    4. Re:"Creative" by vlm · · Score: 2

      That is the type of scenario that we need discipline, not creativity.

      Its a mistake to think discipline and creativity must be bipolar exclusive opposites. Anecdotes from all parts of that venn diagram claimed as "universals" are not really insightful, either. The best solution will maximize both within constraints and specs, assuming you have the discipline to provide any, and enforce them.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    5. Re:"Creative" by RyuuzakiTetsuya · · Score: 4, Interesting

      My thoughts exactly.

      I worked basically in the skunkworks for an ISP's call center. We developed the CMS that handled all of our policy and procedure documentation, we developed neat tools that interacted with our IVR for outages, displayed coverage maps with said outage data, and various little tools here and there.

      When we started, we weren't bound by our IT department's change management process. As our tools grew and as their usefulness permeated our business, we started to get noticed and before we knew it, we were being held to the same standards for process as teams who developed tools like our CRM and our internal ticketing system.

      The whole point of our skunkworks was to be nimble, efficient, and effective on smaller projects those teams didn't have the ability to take on due to commitment to other projects. Yet, as IT's demands for compliance grew, all of our advantages went away. Soon, i found myself having to answer, "Why is late?" and invariably the answer would be, "Oh, it's held up by IT's Process. It'll be three weeks." Managers weren't happy. I REALLY wasn't happy and stressed and my user base wasn't happy either(Although my user base had a certain degree more sympathy than management did).

      It sucked the life and effectiveness out of our team.

      When layoff time came a month ago, on paper, we looked like were banging rocks together, and bunch of us were laid off, with those teams that didn't have the time or resources to build these tools in the first place having to absorb yet more work.

      (note: I didn't mind the particular IT policies, they made sense, but, I felt like a sense of scale was lost when it came to our projects. Oh well.)

      --
      Non impediti ratione cogitationus.
    6. Re:"Creative" by Barbara,+not+Barbie · · Score: 2, Interesting

      The usual problem is bosses who either don't want you to follow a process, or they don't want to have to bother with the work that they would have to do.

      How many times have you been told to forget updating the documentation or specs (or worse, "what documentation?"), or you're told to "just make it work"?

      Or you've sat in a meeting during a review of the current project, and it's just a waste of time because it's like management is just filling up their buzzword bingo card by spouting various processes that could be used to improve things - and you should implement them and then tell them how (or if) they work. (as long as THEY don't need to be part of it beyond reading a half-page summary every once in a while)

      Often, these are the same guys who will demand a 120-page report on the current state of the project "and it needs to be in my inbox in 48 hours" - and then "tl;dr" it.

      In many cases, their reluctance to follow process is because it would show that they don't have the understanding to make a meaningful contribution to the process. If they don't tell you what to do, it's not their fault when the horse pucky gets into the HVAC. They'll blame you for not following their ad-hoc "management process."

      Like the boss who dumps 3 different emergencies on you at the same time, and then gets all snarky because you didn't fill in the detailed spreadsheet of what you did every 10 minutes ... because now he can't use it to figure out how to fill in his time sheet of what he did all day, because he never keeps track of his time - just works it out backwards from yours.

      Most developers would be more appreciative of processes if they weren't used as a weapon by the same management who refuses to adhere to sane processes themselves. For them, it's just CYA all the way down ...

      --
      Let's call it what it is, Anti-Social Media.
    7. Re:"Creative" by joebagodonuts · · Score: 3, Insightful

      ...and you've exposed the secret - developers can create and deliver good code WITHOUT being audited to death. The whole "lean six-sigma/ITIL/insert-the-name-of-your-favorite-process-methodology-here" is just another way for bean-counters and MBAs to pretend they can do something to add value to an endeavor.

      --
      "Give a woman two glasses of wine and some pad thai, and they'll agree to just about anything." the Sports Guy
    8. Re:"Creative" by ZeroExistenZ · · Score: 3

      But don't expect to write code that keeps a 777 safely in the air.

      He writes about creativity. You write about engineering.

      There are now a multi-tude of disciplines in software development, yet this isn't very well understood.

      I agree that the "management squeezing the life out of their dev-teams to make deadlines" with their charts, while devs are filling out sheets like monkeys to justify the space they take up, then it is absolutely a process that is killing.

      I remember a time filling out 3 timesheets for the same work, filling out a scrumlog, doing a scrum-board, sitting in meetings, linking my code-check-ins with my timesheet. Management could make pretty graphs, but I wrote 20% of the code I did before. And it didn't work. All this overhead work is also not "estimated into the planning", so pressure mounts, creativity and production lowers.

      Maybe the ad-hoc wont keep the 777 in the air, your papertrail and logs wont even get the software to be installed into your 777 and it'll never lift off. But it justified the bill presented for all the hypothetical work done (spent on filling in "justification files")

      --
      I think we can keep recursing like this until someone returns 1
    9. Re:"Creative" by Trailer+Trash · · Score: 2

      Right. And maybe 1% of developers out there write code that is that critical. *Maybe* 1%. Most are writing web sites or internal applications that have nowhere near that kind of criticality.

    10. Re:"Creative" by Omnifarious · · Score: 4, Insightful

      I rated you up, but I notice that most people seem to be missing the most important part of your post.

      If someone seriously and repeatedly complains that following the process kills their passion, it is due either to a failure of that analysis or them being in the wrong organization. As an software developer and occasional manager and/or process guy, I have seen both cases. I have also seen cases where having a defined process helps channel creativity. Good process tools help you focus on the right parts of the problem; for example, having a template for a design description that identifies particular subjects to focus on, and may suggest areas that have been rabbit-holes in the past.

      I agree that software development can be 'over-processed'. And I think that management frequently decides to 'apply more process!' in lieu of actually carefully thinking through what would help. But usually, when developers complain about process and delivering things on time, I think "Oh, so you just want to slap that code in there without even really knowing if it works. Write code, compile, problem solved!". Good process is what keeps you on-track and disciplined to write quality software. Too much software in our industry is of extremely poor quality, and that's still the case. Developers should feel proud of writing software that works, not how much software they write.

      Most of the responses I see to your post seem to be of the "You're darn right, all that process just kills development!" variety. No talking about how to balance things for quality results or anything of that nature. I'm kind of disappointed.

    11. Re:"Creative" by Calsar · · Score: 2

      You cannot manage your way to good code. Good developers write good code and bad developers write bad code. At best these processes help you mitigate some of the risk and ensure your requirements are being met. If management spent as much time working on the hiring processes as they do on managing the development process they’d see a much higher return on their investments.

    12. Re:"Creative" by Entrope · · Score: 3, Interesting

      I am disappointed too. I have lost count of the times that my coworkers (or direct reports) decided to skip documenting a design because of pressure to get the code done, only to have that come back and bite them (and the project manager who was applying the schedule pressure) later. Then there is one coworker who made commits to reindent and reformat every source file in a project -- mixing that with functional changes. Another coworker decided to write his own not-quite-XML parser.

      I probably annoy my coworkers occasionally with my insistence that we define and follow certain (usually minimal) processes. I know there are one or two people who hate our code review system. However, I have never advocated for a new process unless it was meant to fix a recurring problem and I thought it was close to the most efficient way we could mitigate the problem.

    13. Re:"Creative" by radtea · · Score: 2

      If someone seriously and repeatedly complains that following the process kills their passion, it is due either to a failure of that analysis or them being in the wrong organization

      This.

      People who blame process are like people who blame XML, or C++, or any other tool.

      The problem is not the tool. The problem is the stupidity of the people who insist on using it in inappropriate ways.

      Process is never the problem. Stupidity is the problem, which leads to inappropriate processes, poor metrics and bad management.

      People who complain that "process kills creativity" are just as stupid as people who implement inappropriate processes. Ironically, they lack the creativity to see how appropriate processes would enhance their productivity and freedom. As engineers say, "Form is liberating."

      --
      Blasphemy is a human right. Blasphemophobia kills.
    14. Re:"Creative" by d'fim · · Score: 2

      Reminds me of The Gervais Principal.

      --
      Adherence to the truth is a form of disloyalty.
    15. Re:"Creative" by Archangel+Michael · · Score: 4, Insightful

      Was gonna mod you up, but instead, it hit me. The problem isn't the process, it is where the process is engaged. And I think the Article and subsequent posts clearly indicate there is a time and place for process, but not everything needs to be stuck in a process.

      In your case, you and your team were building tools for your own use and were doing it the quick and agile way. Dirty code that got stuff done quickly. You bypassed the systemic processes that were in place because they just got in the way.

      The successful code base often starts out as UGLY spaghetti code, but eventually needs to be cleaned up.

      What needs happen is your skunkworks program should be autonomous from the normal process. Only when something you've created gets noticed does it move from the skunkworks over to the normal development channel. To accomplish this, you have to be willing to hand off your code to someone who is, more than likely, going to "ruin" it by running it through the process of getting it clean and neat.

      This way, you can still build fast efficient code that is messy and ugly, and the managment can get code that is functional, and everyone can work towards getting it all nice and pretty by process. Everyone wins.

      Just my thought

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    16. Re:"Creative" by Skapare · · Score: 4, Insightful

      And the certifications don't actually check any code, they just check that the processes chosen are the right ones, and can even miss if the processes don't get adhered to. Perfectly developed and certified software can still have a ton of bugs that will crash that 777 or shut off the heart monitor in a hospital.

      Less on process and more on coder competency would help. Pick the best coders and double their pay.

      --
      now we need to go OSS in diesel cars
    17. Re:"Creative" by Jane+Q.+Public · · Score: 2

      "In your case, you and your team were building tools for your own use and were doing it the quick and agile way. Dirty code that got stuff done quickly."

      This kind of thinking is exactly the problem. There is no reason "agile" code has to be "dirty" code. Studies have shown that it can be of as good or better quality than code done "the other way". But management resists that, because... they think like you: if they are not dictating the process, it isn't going to get done "right".

    18. Re:"Creative" by lonelytrail · · Score: 4, Informative

      I feel sorry for all you guys. I've worked in "no process" companies before and it sucks. No requirements, no process, no cohesion. Politics were rampant. It was just plain elementary.

      These days I work in a company that's been CMMI level 3 certified for years and we have a process in place for each level of necessity; light, medium, heavy, manned-flight. All of our requirements are part of the contract, before any design even begins, and if they change the customer must pay for the change. It's a joy and my creativity is unleashed, not restrained.

      Process is not your enemy. It's the lack of buyin. Everyone must participate and ensure the process is held. Requirements definition is part of process and if you don't have stable requirements, you aint got shit.

      Again, I love working within our process, whether it's the light one or the manned-flight one. It's well defined and provides a schedule, but doesn't tell me how to write my design/code/test, just that I get it reviewed at all of the proper phases.

    19. Re:"Creative" by lonelytrail · · Score: 2

      Continued from above.
      One thing I forgot: Our process provides templates for all the BS documents we all hate to write. Half the effort is done by the boiler-plate and the only thing I have to write is my creative part about how I'm getting the job done.

    20. Re:"Creative" by Intron · · Score: 2

      For most projects you will never have all the requirements defined up front.

      Writing detailed complete requirements takes about as long as writing code, and as you've mentioned clients usually don't know what they need.

      So the developers/analysts will have to write the requirements for them and guess what they want and how they might change their mind in the future. How much they guess wrong depends on luck and experience ;).

      I've put in stuff before which people say they don't want, but later they want/need it because of some new external demand.

      If you get the foundation/schema/design right, you don't have to rewrite stuff to add features they want later. You don't have to write all the code in advance, just prepare the way "just in case" :).

      One of the big pains I find is fixing/overhauling other people's code. I'm far from a great coder, but often it seems the reason other developers seem so fast is because they're skipping a lot of stuff, or even doing things plain wrong. The other big pain is dealing with crap like "legacy PHP" and similar crap that make it so hard to do stuff the right way.

      FWIW, some people have had decent results writing the "user manuals" first! I see some merit with that idea, but I'm not sure what projects will be good with that approach.

      The thing is, the developers have to write the requirements anyway. You can either make it explicit and write a document up front, or you can do it piecemeal as you go along, which will lead to constant errors and backtracking. So you might as well do it up front.

      I'm writing a document right now (which wasn't requested by managment, BTW) just so I could nail down all the points so they can't come back later and say "that's not what I expected".

      --
      Intron: the portion of DNA which expresses nothing useful.
    21. Re:"Creative" by Jane+Q.+Public · · Score: 2

      "There are three things you can pick: Fast, Cheap, Tested"

      If done right, TDD can be faster than other development methods. Why? Because, among other things, it eliminates having to go back and fix regression bugs and other such issues, which standard "after the fact" testing does not address.

      And at the same time, it actually reduces the time, size, and budget needed for traditional "after the fact" testing and QA.

    22. Re:"Creative" by Omnifarious · · Score: 2

      I came to the conclusion awhile ago that making money is the wrong goal. The money should be treated as a reward, a signal that people think you're doing a good job, not as the goal. If you're treating it as the goal, you will do all kinds of things to get there that actually make things worse for everybody rather than better.

    23. Re:"Creative" by MDillenbeck · · Score: 2

      If you want to go off and do your own thing, fine. Have at it.

      But don't expect to write code that keeps a 777 safely in the air. That is the type of scenario that we need discipline, not creativity.

      I just finished an intensive course on Human Computer Interface (HCI) design. True, poor code can cause these things to happen - but so can poor design. In your example, we read a research paper where they discovered pilots use spacial location and position of analog instruments and components to gain information "at a glance", but with an all digital design they received information in purely numerical means and thus were unable to quickly process the information (in other words, the cognitive load of the analog systems was lower by 'chunking' the information via visuospatial encoding). I would suggest to the coder who wants to expand into a "creative" realm, they get involved in HCI and design teams or help form one in their company.

    24. Re:"Creative" by SixDimensionalArray · · Score: 2

      This is why things like "Google Labs" exist, in my opinion. Just imagine if every company had a formal "Labs" entity within IS/IT. The only problem is that being able to have a free-flowing anything goes R&D-type department (which is separate from your ordinary every-day "structured" or process-based type department) usually requires corporate support, a company of a certain size, enough people, or enough discipline to separate R&D time from planned/organized/structured time.

      I believe the core purpose behind Agile methods was originally to support what comes naturally to most developers, which is light-process and getting things done incrementally (which as I recall, is even a practice used in total quality management/TQM). So, really, many of us do "agile" intrinsically in some form, unless you work in a monolithic situation, a large company, one that makes complex or very expensive products that require lots of up-front planning/documentation, or one that requires traditional SDLC/waterfall/project-planning type processes.

      If you built an aircraft carrier using agile methods, vs traditional project planning, I wonder, what would the difference be?

      SixD

  2. Does anyone know the Happy Medium? by AdmiralXyz · · Score: 3, Insightful

    I'm all-too-aware of this issue and how quickly it sucks the life out of you and prevents anything from getting done, but at the same time obviously having no process doesn't lead to stellar code either. My question is, do any of you work in a place where you think you've struck the right balance? What are you doing?

    --
    Dislike the Electoral College? Lobby your state to join the National Popular Vote Interstate Compact.
    1. Re:Does anyone know the Happy Medium? by CynicTheHedgehog · · Score: 2

      Good issue tracking, short iterations, and daily stand-ups to discuss issues. Assign mentors to junior developers that you know need help, and have the mentors spot check the code. Let the more experienced developers choose the stack, define the interfaces, an create prototypes, and then hand those off as a template for other developers to follow.

    2. Re:Does anyone know the Happy Medium? by tripleevenfall · · Score: 4, Interesting

      Where I used to work, (I posted elsewhere here why I left development), part of the problem is that the attitude was always "another small task won't hurt engineering". "Another step in this process is not a big deal"... until there are so many of these tips and checks that you aren't doing anything else but these microtasks.

      I think that most places have big problems going cheap on staff. They cheap out on testing staff. They cheap out on training for the support people. They cheap out on resources for environments. All of these things cause more weight to be placed on the developers.

      And it's all by design... develppers are replaceable, in many companies' view - more are churned out of college annually and they only have a 2-5 year lifespan on average. Rather than expand budgets to reflect what development really should cost, they simply treat developers as disposable resources on a burnout/replace cycle.

    3. Re:Does anyone know the Happy Medium? by vlm · · Score: 2

      My question is, do any of you work in a place where you think you've struck the right balance? What are you doing?

      Think of the brilliance of the parental strategy of having once kid cut the cake and the other kid select the slice? The way that cuts down on squabbling about who got the bigger piece of the pie? Application of this principle to coding/coders vs testing/testers seems obvious... Doesn't it?

      An inherently self stabilizing and self balancing system always works better than one managers best (possibly misguided) attempt at neo-authoritarianism.

      Also for gods sakes make everyone in management read Fred Brooks book and fire anyone who disagrees. Absolutely timeless meta-advice to frame the problem.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    4. Re:Does anyone know the Happy Medium? by Eivind · · Score: 2

      Brooks - and also The Pragmatic Programmer.

      Agreed. Read both. Fire people who do not or can not understand it.

  3. Over my head by Apple+Acolyte · · Score: 2

    70% unit coverage? CCN complexity 20? Pre-sprint grooming of stories? This article is apparently not meant for a general geek audience. Can someone translate these terms into something that non-professional programmers can comprehend?

    --
    Part of the hardcore faithful who believed in Apple long before it was cool again to do so
    1. Re:Over my head by Derkec · · Score: 5, Informative

      70% Unit Coverage:
              -- You've written code level tests that flex 70% of your code checking for regression failures.

      CCN:
              -- Technical term you can look up, but basically it's a measure of how many decision points are in a block of code. Less decision points is simpler. Too many and you may have something difficult to test and difficult for a programmer to understand. Higher complexity generally means more risk and a higher need for testing of various types.

      Presprint grooming:
              -- A "sprint" is a time block set aside for development. Usually 2-8 weeks. The goal is declare what you're going to get done in that time and not change the requirements during that time. Between sprints, you can change your processes, "groom" stories (tasks that describe things in a user experience way generally).

      Test driven dev:
              -- When writing a new feature, right a test for that feature first and you're close to done when the test passes and you haven't broken other tests.

  4. The solution is simple... by Old+Sparky · · Score: 2, Funny

    Get rid of management!

  5. The one process to rule them all by Tribaal_ch · · Score: 5, Insightful

    Karma be damned, this is relevant to TFA:

    1. Re:The one process to rule them all by mcvos · · Score: 2

      My son's mother would work quite well for me.

  6. This is why I left development by tripleevenfall · · Score: 4, Interesting

    This is why I left development. After 5 years working at a software company I found that only 10% of my time or so was spent writing new code, which is the only thing I really liked about the job. The rest of the time was spent in meetings, wading through red tape, reviewing others' code, doing maintenance on the (junkpile) legacy system, doing remedial training for the front-line tech support staff, and the 5 million small tasks that have nothing to do with why I went into the career field.

    1. Re:This is why I left development by mevets · · Score: 4, Informative

      I used to deplore meetings; listening to some preening jackass and thinking about how far we were getting behind by this. It isn't just the time sitting in the room, but depending on how bad it was, focus could be lost for the rest of the day.

      Then I became freelance. Meetings took on a whole new significance. These jackasses paying my rate because I'm good at a few things; but rather than have me do those things, I'm sitting in a meeting, bored, but well paid.

      Look at your contractors in the next meeting; if they aren't in the scapegoat chair, they are the only happy ones in the room.

    2. Re:This is why I left development by Anrego · · Score: 3, Interesting

      Maybe try a smaller company. Find a nice 5 to 7 person operation, bonus points if software isn't the main objective. When you are programmer 1 of 1, you find very little process, and what process there is, you define.

    3. Re:This is why I left development by vlm · · Score: 2

      This is why I left development. After 5 years working at a software company I found that only 10% of my time or so was spent writing new code, which is the only thing I really liked about the job.

      Something I've never understood, even after being in the game for three decades this year, is the proprietary field demands the majority of your time be spent doing all manner of foolishness. In the open source field, the programmers pretty much program 100% of the time they're "working". And the market has shown that any serious OS project absolutely crushes any proprietary project in reliability, featureset, security, documentation (At least in the internet / google / blogs / mailing list era).

      Even the densest bean count-er-y management should be able to trivially see what I do at home "works better" than what is tried at the office. Yet they generally insist on doing it "wrong" despite staggering costs to the company. You'd think Darwin would apply, but the herd-like mentality of "everyone" copying whatever fad they read in a magazine prevents Darwin from weeding them out.

      I've always found that puzzling.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    4. Re:This is why I left development by Vasheron · · Score: 2

      One cruicial difference between OS and commercial projects is the existence of tight deadlines and unstable customer defined specifications, which often have implications for reliability, featureset, security, and documentation.

    5. Re:This is why I left development by hitmark · · Score: 2

      http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html

      There is also a mention somewhere that a core lib of Amiga os was written by one guy over 2 days in virtual isolation. He only had to get one design issue clarified with a superior during the process.

      --
      comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
  7. Two sides to everything by Haedrian · · Score: 2

    On one hand, I can understand the creative process that goes into coding and the 'fun' you have in making it your thing.

    However if you're likely to have millions of people depending on your code, which will alwso be modified by other people, then you had better have a good process as well.

    I used to work at a company which required that pretty much all the important pieces of code have JUnit tests for them. Whenever someone else touches your code - which is bound to happen (I was modifying code which was written years ago - and the author wasn't employed anymore), it'll be a good thing if you know you haven't smashed anything.

    So there's a time and a place for everything. If its very important code, yes please, strictness. If its something small and silly, then go creative on it.

  8. Beh by Hognoxious · · Score: 2

    I've worked on projects where they had procedures as thick as a phone book, and it was still possible to write crap code. In fact, due to the incompetence of the person who wrote them , they sometimes pushed you into writing bad code.

    On the other hand, some programmers produce good code, whether they're specifically ordered to or not.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  9. Mutual dislike between managers and coders by 140Mandak262Jamuna · · Score: 4, Insightful
    People who are passionate about coding, rarely make it to the management cadres, partly by choice, partly because they lack the other skills needed to be managers. So the management is filled with folks from sales, marketing and mediocre programmers.

    I think may be the guru-disciple system of education practiced (allegedly) in ancient India might bear better fruits. Guru lead teams with disciples learning from them might turn out better quality code, but the system would be expensive in the short run and takes a while to take root. The quarterly bottom line obsessed corporate world is as far away from the system of stoic ascetic guru living in a hut in a jungle accepting princes as students romanticized in Indian mythology.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    1. Re:Mutual dislike between managers and coders by tripleevenfall · · Score: 4, Insightful

      There's a lot of truth to what you say. I am one of those. I think I was a "B" grade coder. Not a star, but adequate. I developed the skill, met deadlines and specs. It just wasn't my calling like it is for some.

      Frankly, I don't think it's bad to have somewhat mediocre programmers in your management structure. We understand at least a good chunk of what developers are doing, and when we don't you can explain it to us and get understanding. If I'm a McManager who used to be in HR and has never written code, I'm not going to understand your basic needs as an engineering team. You won't be able to explain to me why a certain architecture isn't workable. I understand you and what you need 80% of the time and I can go fight those battles and leave you to code.

      I think it's good to have mediocre programmers become managers if they have the management skills necessary (and aren't simply promoted because everyone else is irreplacable). Most of the time those skills are not common to the skillset of the best developers. It's better to have average developers become good managers than having good developers moved out of programming and into management, leaving only mediocre programmers writing mediocre code.

  10. Process by Anonymous Coward · · Score: 2, Interesting

    Only about 10% of programmers are "artistes" who create new things of beauty...process stifles those.

    80% of programmers come to work more-or-less on time, sit where they are assigned, work using the tools and processes given, and produce most of an organizations output. Process is beneficial to those, in that it makes their work useful in the overall "whole."

    10% of programmers should be fired before they do any more damage. A better HR process would help with those.

    1. Re:Process by roman_mir · · Score: 3, Funny

      your comment is mostly wrong.

      Only about 2% of programmers in a large company actually do most of the real work.

      20% are good for chit chat.

      78% should be fired immediately.

    2. Re:Process by internerdj · · Score: 3, Interesting

      I've come to understand this. When I go to my boss for a performance raise, he evaluates me based on me compared to everyone under him. It is my advantage to have the 78%. When he sees this and he says that we need to break the company policy on raises over x% so we keep this great employee, his boss evaluates his request based on my bosses perspective of best one out of 62 rather than one of 11. It is my advantage to have the 78%. Not to mention that bigger groups need bigger funding, so when I need something to do my job I'll have a bigger funding pool to draw from.

  11. Measuring Code by rwv · · Score: 3, Insightful

    The main issue is that measuring whether code is good or not is impossible. I promise you that I can write code that has the prescribed level of unit testing and complexity that also doesn't work. Software reliability/dependability was a problem in the 1960s. It's still a problem today. No silver bullet, and all that.

  12. Inappropriate reliance on process... by shic · · Score: 2

    What really cripples things is when process is deemed a substitute for understanding the specifics of individual situations - where a one-size-fits-all-problems approach is adopted and imposed - usually by people who have no practical experience with the processes they espouse.

    If software development could be successfully reduced to a process, I'd have automated it. Where there's a considerable burden of process, either the process is inappropriate - or developing the software itself is inappropriate as it amounts merely to re-inventing the wheel... an exercise in task creation that benefits no-one.

    We should think of software development techniques and apply them judiciously - and the more techniques a developer masters, the wider their skill-set and the better they will adapt to new challenges. The critical question that needs to be asked is this: why is a technique being used and is it providing tangible benefits? If this question can't be adequately answered, everyone involved is wasting their time.

  13. Passion isn't important by Uruk · · Score: 2

    Passion isn't important. Cost and risk are important. The processes are put in place to (attempt) to minimize cost and risk associated with software development. Experience teaches us that cost and risk are very high when building software.

    When it's your money paying for the development effort, feel free to structure it so that you can chase your passion.

    I sympathize with the idea that this kind of bureaucracy can suck the life out of developers, but guys, this is work. If it were that fun, they wouldn't have to pay you to do it.

    --
    -- Truth goes out the door when rumor comes innuendo. -- Groucho Marx
    1. Re:Passion isn't important by Entrope · · Score: 2

      People who have passion about what they are doing are usually much more productive than people who view the job as a way to get a paycheck. They also tend to want to stay longer, meaning the organization saves on replacement and retraining costs. There are also just wrong processes (of which "too much process" is a case) for an organization, so organizations need to do cost/benefit analyses on their processes.

      Other than that, I agree with you. Developers have three choices when they are faced with a process requirement that annoys them. From easiest to hardest: (a) suck it up and do it because it's part of the job, (b) quit and look for greener pastures or (c) try to convince the right people to revise the process. (Sometimes (c) is easier than (b) if the process is new, and the cumulative effects of (a) can make (b) easier when summed over many annoying process requirements.)

    2. Re:Passion isn't important by Derkec · · Score: 3, Insightful

      I firmly disagree. Passion is key. People who don't give a damn and people who don't enjoy coding tend to write crap. We try to hire for passion and smarts (knowing both are hard to interview for).

      Passionate people given good processes and tools are ideal.

    3. Re:Passion isn't important by LordLucless · · Score: 4, Insightful

      And if you kill the passion, your cost (of hiring new developers because you drove the old ones away) and risk (of losing corporate knowledge in process) increases. So you can say "my money, my rules" all you like, but actually, it's reality that dictates the rules. And reality says if you burden people under a weight of bureaucracy disproportionate to what that bureaucracy is intended to accomplish, they'll leave. And if they don't leave, they're probably afraid of not finding another job, indicating that they're not good enough at their job to be confident in their abilities.

      Like pretty much everything, it's a balancing act. You need to provide direction, or the goose is going to go wandering around the yard instead of laying its damn eggs, but if you stifle it too much, the thing's going to croak.

      --
      Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
    4. Re:Passion isn't important by jbengt · · Score: 3, Funny

      People who have passion about what they are doing are usually much more productive than people who view the job as a way to get a paycheck.

      I work in engineering, not software, still, the last time I encountered a passionate IT employee, he got fired for taking long, passionate lunches at the hotel down the street with an electrical engineer and fixing their timesheets to cover up their absence.

      On a more serious note, you don't have to choose between passion and apathy. I'll take conscientiousness over passion any work day. Passion can at times be dangerous to objective thinking, partner relations, or a professional standard of care.

  14. Devs should own the process by Derkec · · Score: 3, Insightful

    This is really the key insight of most Agile methodologies. Development should own the process and change it to suit their needs during regular retrospectives. The team (not the whining individual) should be able to say, "You know what, I think we're not getting bang for our buck out of this many unit tests, let's shift to 50% coverage." As long as that same team is taking ownership of the regression failures and making an informed trade-off their comfortable with, all is well.

    If you get a good team together, you're going to get good code. You'll get better code if you empower them. Experienced and good teams will usually have a lot of these processes and tools in place because noticing things like high code complexity automagically alerts them to "bad smells" that can be examined and either accepted as necessary or invested in to address or test more thouroughly.

    Generally, I think development is most fun when you're on a new project and don't give a damn about breaking things. Then it's pure creation. But once an app is older and there's some weird code you're staring at you have to decide, "is this probably a bug, or is this a bug fix for some weird situation or platform?" That's when you wish that the guy having fun three years ago had written some damn tests.

  15. Re:In a nutshell by Anonymous Coward · · Score: 3, Insightful

    the problem is always the same:

    how can manager get bonus lowering staff costs?

    they get cheapo developers and throw the top notch methodologies at them in the hope those will make up for the devs inexperience and plain incompetence.

    that gives in turn a bad name at methodologies and tools, because cheapo devs cannot understand nor benefit fully from them. what use is a pmd output to a guy who's never got the difference between passing by reference and passing by value?

    and there are, lots of them. just check any java forum.

    yet, the truth is that some of the methods and tools are a good helper for good and also top notch developers. if you work with the tools, and not by the tools, you can catch way more common errors, be notified of piece of code that may need some attention because grew too much in scope and features and lot of other small things that make your life easier.

    but it has to be a cereful choice, based on your experience and knowledge, not something imposed because it's the last buzzword.

  16. Not the problem by asherlev · · Score: 2

    Process isn't the problem, environment isn't the problem, language isn't the problem. The problem is that everyone looks to all of these things as the silver bullet that's going to "fix" software. Test driven development doesn't make good software any more than I-495 makes New York City. There is no silver bullet.

  17. Distortion: construction is free by dazedNconfuzed · · Score: 4, Insightful

    In most engineering disciplines, the process of actually building something is long, hard, expensive, and persistent. If the project is build a bridge, you spend a lot of time making sure the design is right; why? because the process of actually building the bridge takes months or years, costs many millions of dollars, and once built is not easily replaced. There is no room for error, so process is taken very seriously as a central part of ensuring timely cost-effective correctness.

    In software, the process of actually building something is instant, easy, free, and transient. Type "make all" and go get some coffee; find a bug? tweak a couple lines and do it again. This distorts the development process; "process" gets snubbed as a costly distracting annoyance instead of the means of assuring that what gets delivered is correct, because it's just so dang easy to fix and rebuild in seconds ... losing sight of the long-term cost of not doing it right the first time.

    --
    Can we get a "-1 Wrong" moderation option?
    1. Re:Distortion: construction is free by Tridus · · Score: 4, Insightful

      A bridge is also a fixed, well-known thing. It's not going to change radically in design between when you start and when you finish building it.

      Software on the other hand is written for customers who themselves don't know what they want, in a market that is probably rapidly changing. It WILL change between the start and the end of the project in a lot of cases. Sometimes it changes because the customer changes their mind. Sometimes it changes because the market changes. Sometimes laws change. Sometimes the customers were just flat out wrong in everything they told you and the entire design is wrong as a reuslt.

      When you're dealing with that, process does just get in the way.

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    2. Re:Distortion: construction is free by John+Hasler · · Score: 2

      In software, the process of actually building something is instant, easy, free, and transient.

      Then you should not use processes designed around the assumption that building something is slow, difficult, and expensive (which is not to say that you should not have processes).

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    3. Re:Distortion: construction is free by geekoid · · Score: 2

      except programs also take months, cost millions of dollars and aren't easily replaced.

      "In software, the process of actually building something is instant, easy, free, and transient"
      Yeah, if you're writing hello, world program.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    4. Re:Distortion: construction is free by geekoid · · Score: 4, Insightful

      " It's not going to change radically in design between when you start and when you finish building it."

      not true.
      In the process things gt changed, but it's part of the process. This includes new features added while building.

      You don't see it becasue:
      A) engineers can attach real world costs to any change and need to get someone to sign off on the costs.

      B) You don't build bridges, so you don't see any development issues.

      Properly engineered code would mean when a change comes up, you say 'it will take this long, and cost this much'. PLease sign the document stating this. You make the sign off a requirement for the developer. Meaning they get fired or fined. This way you protect them and have someon to take responsibility.

      When you go to the customer and say, sure we can do this,. It will take 2 months and cost you 20K extra. they may rethink their 'minor' change.

      Since the industry doesn't have that, I do it in email. They few times someone tried to call me out, I just forwarded and email and said 'I told my manager it would take this much longer and cost this much more and he approved it.'
      While not a lot of legal protection there, it has worked.
      Right now I work with a bunch of civil engineers. They get all the same crap software developers do BUT they have legal requirements for sign off, and protection if someone is trying to build something that isn't structurally safe.

      When dealing with that, the process will help you because as you go you will have a base of knowledge about how long something takes and what it costs.

      If someone wants a , without changing in parameters you need to call them out. Have a process means you have factual backing you can document.

      They say that if software developers built house, civilization would fall when the first woodpecker should up.

      I wish that was true, because after the last house fell, we would fix it. Instead the industry just slogs through this miasma of low quality slap it together crap over and over again.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  18. Cholesterol by geoffrobinson · · Score: 2

    A wise elder at a defense contractor once told me that process was like cholesterol. You can't have none. But too much will kill you.

    --
    Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
  19. Re:TDD by tigre · · Score: 4, Insightful

    TDD is a painful waste of time that at best serves as a crutch for unskilled or insecure coders and at worst a smokescreen behind which serious bugs remain unfixed because they aren't picked up by any test cases.

    No, TDD is painful, but it's a long-term investment. If you code once and never have to touch it again, you can get away with making it work right without tests. But if you want to be able to grow your system, you want something to make sure that you don't kill the old functionality in the process of building the new. And sometimes it's just helpful to spell out the expectations of new functionality ahead of time so that you know when you've achieved it.

    Process for the sake of process is pointless. And if you have good reason to work around or jettison a given process, go for it. As I told the other programmers at my job, the only piece of our process we would probably consider an absolute necessity is source control. Code review is highly recommended, tests are very strongly pushed, formatting standards are there for good reasons, but there are times when they are not helpful.

    The problem always comes down to whether or not your developers are adults with good decision-making capabilities. Process is too often employed as a way to allow you to get stuff done with people of average or less ability, but process also hurts them because they can't figure out when the process is unhelpful. And if process is imposed by fiat, those who could figure that out are frustrated by having to go through the motions. But if you have trustworthy people and you actually trust them, you institute the process for their benefit, and when it's not useful they know not to use it.

  20. Methodology == Religion by syousef · · Score: 2

    The real problem is that methodologies are followed, taught and practiced like religion instead of science. A new buzzword or buzzphrase and a new way of doing things will never substitute for thinking through whether what you're doing is actually working to attain the goal you've set out. Unit tests for example are brilliant when the developer gets control and is honest about using them. This almost never happens in practice. In practice unit test coverage becomes some bureaucratic check box to tick. What's worse is that there are dozens of industry expert consultancies wanting to sell you their own particular brand of excrement which may have some merit but the way it's sold - as a fix all for everything - will never be anything but a pile of poo.

    --
    These posts express my own personal views, not those of my employer
  21. Re:Darth Vader, bring balance to the force by Spy+der+Mann · · Score: 2

    I completely agree. I've come to believe that Agile development is a fad invented by some marketing genius to get big loads of buck from gullible enterprises. While TDD might be useful for, say... a linux kernel module, there's very little use for it in your standard "make me a module which reports in detail our budget surplus and deficits" project.

    It's much more efficient to hire a small team of beta-testers available on-demand ("Jim wrote this new model, can you test it please?") than wasting hundreds of man hours per-month in "agile" development.

  22. Budget by mrops · · Score: 4, Insightful

    My problem with process has always been budget. Folks higher up budget on the basis of minimal process and expect full process. If you want 70% unit-test coverage, that is twice the time the code would have taken if you did not write unit test. Add 3 times the time if you want good integration tests to go with it.

    Unfortunately, this makes a project costly. The problem occurs if the PM then demands full process when the time is not accordingly budgeted for it.

    Release cycles also become long.

    1. Re:Budget by angel'o'sphere · · Score: 2

      If you want 70% unit-test coverage, that is twice the time the code would have taken if you did not write unit test. Add 3 times the time if you want good integration tests to go with it.

      Serisouly if that is the case for you you must either be a genius (the unit tests are for nothing and don't ever reveal anything) or you do really a lot of stuff wrong.

      Having >80% code coverage ashould cost less than 10% of the developmen time.

      And having the unit tests should save over the whole team a lot of time as it basically makes it impossble to check in non compiling code or code that does not pass the tests, saving not YOUR time but saving the time of ALL OF YOUR TEAM MATES.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Budget by AuMatar · · Score: 4, Interesting

      80% code coverage costing less than 10% development time? Only if you're either ignoring all errors, or have massive try catch blocks that catch everything generically (which means your code coverage numbers are garbage- if you aren't testing each way of generating each type of error, you only have a fraction of that coverage).

      I'm not going to deny the usefulness of unit tests, but in my experience writing a good unit test suite takes 50-200% of the time to code the function, depending on the complexity of the code being tested.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  23. Good Development Process by Foofoobar · · Score: 2

    You can use mediocre programmers if you have (and enforce) good development process and train them in best practices. Being able to build code that is easy for the programmer to read (and others to read), separation of sql/html,css,js/ etc into their respective parts of the MVC/ORM pattern, consistent inline documentation, consistent comments on code checkins, etc., following the same rules for writing code (development docs)

    A good development process can alleviate many of the problems with having to do all that testing as you test because you have a bad development process wherein you are unable to easily have the developer look at his comments, his documentation and his clearly written code and go 'oh thats the issue'

    Not saying this will ELIMINATE the need for testing but this reduces the need for at least 30-50% of it if everyone is properly trained in a good development process and it is enforced.

    --
    This is my sig. There are many like it but this one is mine.
  24. Re:TDD by heathen_01 · · Score: 2

    I don't (usually) practice TDD. I do however write automated test cases for as much of the system that I'm developing as practical. Usually thats around 80% or more of the functionality.

    The major benefit of automated testing comes with maintainence of the code. Making changes 6months or more later can be more difficult as you've forgotton all the intricate details and exceptional cases. This is where test cases can make your life eaiser and much more productive.

  25. Software Isn't Unique In This.... by tungstencoil · · Score: 2

    So, in the article he does suggest some process is probably good. That's good. But then he suggests that "better" coders might need less. In practice, that is probably true, but his implication goes farther than "let's hold the hand of the junior guy a bit more."

    So... how to architects, civil engineers, electrical engineers, graphic designers, technical writers, project managers, and, I dunno... just about every white (and blue, for that matter) collar employee stay "passionate" in the face of some level of process and bureaucracy? How would you like to go on a bridge (or a plane, as others have mentioned) built by folks who are so smart they don't need any process to validate their genius?

    This sounds more like "I'm so good I don't need to do these dumb things that slow me down" and less "perhaps we should keep the process just at the point it is beneficial".

    I just spent two years with a team of 6 refactoring a critical legacy application built and maintained by people who were "smarter" and "better" than code reviews, TDD, planning, documenting, or hell, breaking that 8K header file into header/class and maybe even into a couple of objects. And truth be told: they were ALL really, really smart.... and really, really willing to cut corners just to "get something done", resulting in an unmaintainable mess that cost us somewhere in the neighborhood of 1.8MM to clean up.

    To all you guys who are WAAAAAY too smart to have processes: that's awesome. Please just go work somewhere else, preferably someplace I'll never work.

  26. Re:TDD by TheRaven64 · · Score: 2

    The problem that I've found with TDD is that it encourages people to write code that tests the wrong thing. I like using it, because I gradually grow a set of regression tests and can be reasonably confident that I haven't broken anything, but I've seen a lot of people write tests that check for specific details, so you make a 5 line change to their code and then have to modify 100 lines of tests - not because you've broken anything, but because their tests were checking for implementation details rather than valid semantics.

    --
    I am TheRaven on Soylent News
  27. Dear god yes it is by jeffc128ca · · Score: 2

    I've been programming since the 80's and getting paid to do it since the mid 90's. It was the mid to late 90's when I got introduced to life cycle methodologies and at first I applauded them. I was even selected for a committee to help firm up our "best practices". I thought I would improving things by stopping bad practices by bad programmers. After a while it turned into a nightmare as those bad programmers started using the "best practice" rules as cover for the crap they produced. "But it passed unit testing and UAT, it must be awesome". Our project budgets went up and implementation time increased while our customers were visibly pissed at the final product.

    The problem with SDLC process management has been sufficiently skewered by Joel Spolsky in a blog post several years ago. By putting a bureaucratic process in place you replace rock stars with compliance monkeys. Actually delivering a solid product is far less important than meeting checkpoints. And when your a programmer who's dedicated to a polished final product it's like murdering your soul to watch mid level managers (who know nothing of development) work hard at micro-managing you to ensure those check points are met on time. The actual outcome is irrelevant, the surgery was a success even though the patient died.

    I have worked in both environments, the loosy goosy no rules and the highly rigid SDLC bureaucratic world. I understand the need for review and verification and the problems of wild west development. But development process methodologies are dangerous enablers of bad middle managers and "consultants" that sell you management processes that don't really help any body.

  28. Re:Um no, sorry. by caywen · · Score: 2

    I use lib777, so my code looks like:

    while(!wantToLand)
          my777.StayUp();

    my777.Land();

    There is no crash in the code.