views:

145

answers:

5

I majored in a great software engineering program, and was taught the importance of process and the steps of a life-cycle model. I'm familiar with the classic "waterfall" model. Though we explored others, the waterfall does a good job of listing the possible tasks no matter how crafty or tricky your new-age model is. So it's a good starting point.

When I was finishing school, .NET was just on the rise so we didn't cover new ways to approach web development with a good life-cycle model. Now I work in a web shop and we are trying to establish some good practices and processes where we have none. Since I only graduated 6 years ago and have experience in more structured software environments, I'm the guy to introduce some new stuff.

Right now the office is just chaos. I got a lot of laughs from a project manager yesterday telling him "our process is the sound of one hand clapping." We are desperate for process but we don't know what to do. Everyone is taking a backwards approach of wanting a tool to tell them how to do things, when we should be gathering requirements first.

We are a shop of 9 total people. We need to be able to do work fast. What are some good software development models that are industry standard now? Everyone else is doing this so we need to learn, this shop has been building sites since 1995. Where can I find good resources on best practices? We are a LAMP shop.

EDIT: I should also add, we would be looking to add a process to existing websites. So we aren't building new projects, which is what these models are always geared towards. We're maintaining 10 year old monsters of sites (ok more like 3-5 years, but the clients are older) and keeping them going, while adding new features incrementally. Can any of this help there?

A: 

Agile and eXtreme Programming (XP) both work well. I've also had good experiences with the Rational Unified Process (RUP).

All of them are iterative, which gives them a leg up over Waterfall as you don't get stuck implementing huge amounts of functionality with no visibility into how it's going to be perceived (not to mention your users get smaller bits of functionality far more often than the traditional monolithic release).

RUP does a great job at gathering requirements up front. Agile and XP both employ some really interesting techniques to ensure quality with a fast turn-around. I'd take a look at all three and figure out which would fit best for your team (or canibalize the best parts from all three for your application).

Justin Niessner
+2  A: 

What a lot of shops are using now is the Agile development method. It's scalable from a single developer to as many as you might ever have. Using this method makes it easy to track the amount of work any one individual will be able to complete in a given period of time. Check out the wikipedia page describing the methodology:

http://en.wikipedia.org/wiki/Agile%5Fsoftware%5Fdevelopment

There are also some great open source and free tools for helping you set up teams, projects, iterations, and everything.

However, I will say that I used to work in a waterfall shop, and unless management is on board with the change, you'll get nowhere trying to change from waterfall to agile.

EDIT (In response to question edit): YES! Agile will definitely help you with maintenance and enhancement releases of existing projects, as well as possible refactoring releases. It is all-inclusive.

~md5sum~

md5sum
+1 for everybody has to be on board or it won't work. management AND developers.
qntmfred
It's nice to have your existing developers on board, but they ARE replaceable if they don't want to cooperate, and besides, I've not met any "good" developers who had a problem working under an agile methodology. Unfortunately, you can't fire your boss. The solutions architect where I used to work was responsible for choosing the methodology used, and, while he was a nice guy, I don't think he could solve the FizzBuzz test in less than 3000 lines of C# code. He claimed to like Scrum, and that we WERE agile, but we were more like some sort of broken waterfall. A waterfall without water maybe...
md5sum
A: 

Scrum, which is an Agile practice, would be a suggestion for trying to rein in some of the chaos. What practices do your project managers have? That'd be one of the bigger questions as perhaps the laughs are coming from someone that is feeling threatened in their position.

EDIT: Just as something else to consider, do you have these in place:

  • Testing - Do you have any automated tests?
  • Continuous integration - Do you know of it? Use it at all?
  • Source control - Do you have branches and procedures or check-ins?
  • Development methodology - Ad hoc or "Just do what works" mentality?
  • Environments - Is there development, testing and production environments?
JB King
nope, the laughs were genuine because he knows I am right. There is literally no process. Each project manager does their own thing. We talk to each other and get the work "done," then end up putting out fires later. Truly chaos.
tkotitan
At least some work gets done. I can imagine some places nothing gets done due to all the finger pointing of whose fault it is that nothing gets done.
JB King
Yes, but there are days - nay - weeks, even months, where I would kill for some downtime! :) But you're right. We have an incredible collaborative spirit in my office, no blame, just working together to solve the problem and help the clients. I've never seen anything like it.
tkotitan
A: 

The hype is Agile. I love the principles behind Lean which has its roots in the Agile community.

Marius Burz
A: 

I think a good starting point is the Joel Test. Here is the Joel Test for web development. Once you take a look at this you will get to know where to start improving stuff. These are the basics.

Pasta