views:

214

answers:

4

Most developers know how a project should be managed. You should follow the software development life cycle. You should gather requirements and come up with a design beforehand. The code should be nice and readable, and you should follow principles like DYR. The end product should meet most, if not all, of these requirements:

  1. Development should proceed according to schedule, and deadlines should be met without working long nights.
  2. All the meta-work like bug tracking and task management should be handled in some sort of system that actually gets used.
  3. The development environments should be setup properly, with proper version control and deployment procedures.
  4. People should write documentation for everything.
  5. There should a proper testing framework in place.
  6. There should be code reviews.

I could go on.

In my experience, most developers seem to know all, or most, of these "shoulds." They want to do as many of them as they can, and they are upset when they do not, myself included. However, it is also my experience that few, if any, of these "shoulds" ever actually happen in the real world. For whatever reasons, usually relating to deadlines and money, nobody ever has time for these things. Instead, the developers just keep writing code for hours on end until it eventually "works".

At every job I have had, every developer, including myself, wanted to do these things. We wanted bug tracking systems. We wanted to write documentation. We wanted to have very nice task management. Yet, despite our efforts, none of those things ever came to be. The closest we got was to have a nice git repository and a documentation wiki with a handful of pages written in it.

Has anyone in their entire career ever been a part of, or seen, a project that actually did a significant number of these things properly? Is there really a project out there that met a well-estimated deadline? Is there someone who is actually making proper use of task management, bug tracking, and version control all together at once? Did you actually write clean readable code following good principles?

If such a project has ever actually existed, how did it happen? What special something allowed you to avoid just coding a big mess just to get the finished product out the door? Obviously nobody is absolutely perfect, but I've never actually seen anything come even remotely close to good. Has it actually be done, or is the well-managed project just a fantasy?

+2  A: 

Yes.

I work for a large process-heavy contract software development firm. We do a wide range of projects from space-centered development to defence research projects. I worked on a ground-station application, and the level of project management was top notch, and high quality. They even offer courses on how to do it right based on experience, and not on vague theoretical project management ideas.

Look for another company like mine if that's what you're looking to experience!

Kieveli
+3  A: 

I have actually seen a project that was managed well; what struck me most about the management process that worked so well was that my manager on that project was very explicit about his role in the process; he was, according to his own words, there precisely just to "protect the developers from upper management". He put a LOT of explicit trust in us devs, and the interesting thing was that his trust was completely repaid, in spades; we worked very hard to get the project done right, and to make sure that he was able to report good things to HIS management.

Fundamental to his process was an idea (which I agree with) that engineers fundamentally know what they need to do, and that they WANT to do it very strongly; and if given a chance, they will.

McWafflestix
+1  A: 

I have heard great things about Intuit methods for managing projects. Something stuck in my head from a video I was shown about how Intuit woud bring in customers and do usability testing. In general, they have good quality software, which is reasonably complex.

Of course open source software development and the philosophy has worked out great for all the software developers. Maybe it is the "lack" of restrictions and freedom to innovate that has led to some of the most useful products out there. :)

Ryan Oberoi
+2  A: 

Yes, we do here at least on my team. The way you get projects to run they way they "should" be run, is that you start doing it. You can't wait for management to decree the correct way of doing things. You start taking small steps and making changes in the current process. Don't have a bug tracking system? Start using Excel spreadsheets to track bugs, and slowly graduate up to a real system. No requirements? Start writing them. It takes time, but it will change the process. (Most people don't realize where I am now, that this actually happened). All of a sudden you will start working for a company that has policies and procedures. I'm not saying all places, but at a lot of places, management thinks they are in control of what happens. They are some, but really they aren't especially with development. Now if you have a manager who is good at his or her job, that's a different story, their employees want them to be managing the helm that person knows how to lead and get things done. The others are really just along for the ride. Getting change done, normally means start making changes, asking them how the new process you are already using is going and going about your merry way.

Kevin

related questions