views:

100

answers:

5

I made a website almost 2 years ago that needs some serious T.L.C. I've been maintaining the site, doing bug fixes and the like but I only ever wrote 'ideas' and features for the site on scrap paper or in a text file somewhere on my computer. The site never had a 'structured' development plan as it was just something fun to do at the time.

I'm now sitting here looking at the site, the users love it, its popular, it makes a profit and I have a 'million' ideas/fixes/features for the site that I want to get done but I don't know where to start. The code is in such a mess, no version control, no to-do list, no feature list, no bug tracking, no nothing!

I'm stuck, I really am. I look at it now and I have literally no idea where to start. In an ideal world, this is what I want; I want to re-write the whole code base. I want to find some kind of planning or project management software that will let me itemise every feature or idea I have for the overhaul of the site, then I want to be able to share this with fellow programmers who can look at the list, comment/discuss any issues and ultimately work from the software's 'feature list'. I want to implement version control so the programmers can work on the site simultaneously and commit their changes every couple day's. (I was thinking git for this)

What do I do? Is there anything that can help me plan/itemise a huge web project with multiple programmers?

+1  A: 

I'd start by trying to write a structured use-case document describing all the current functionality, plus all your new ideas and features that you'd like (transcribing from paper or file) to this single document. If you want to rewrite from scratch, just make brief reference to the fixes as "problems to avoid". Then you need to work through this list identifying the "must haves", "would be nice" features, and prioritising them all. Typically, current functionality should be higher priority than all your new features, unless the items on your list clash.

Note that the use of "you" here shouldn't just be limited to yourself, but to all members of your development team; and you may also consider soliciting the advice of your user base to identify the features that they actually use, what they consider ugly or inefficient, what they view as essential, or just "nice to have".

Once you have this requirements list, then you can consider how to re-design everything. You might look at existing frameworks for a lot of the work, rather than reinventing the wheel, and this is where your fellow developers may by a great help because they may well have experience of libraries, tools and methods that you haven't been exposed to.

EDIT

Links to some other questions here where the answers are well worth reading:

http://stackoverflow.com/questions/139346/including-quality-into-the-software-development-project-plan

Mark Baker
+3  A: 

As you're learning, there's more to running a reasonable sized website than just writing some code.

Do you seriously expect to learn how to do project management, software development management, people management, code management and more from an answer here? That stuff takes years to learn.

Certainly you do need some tools to help you. Its rather tricky without knowing what the constraints on your project are. Your shopping list should include:

  • a coding standard (the horde one is good)
  • testing standards and tools (phpunit?)
  • code documentation tools (I like phpxref)
  • a version control system (take your pick)
  • defect tracking software (again there's lots available - 'rt' seems to have survived a long time)

I'd also recommend using a Wiki for developing / maintaining documentation (other than code documentation) for the system.

There are no end of free tools out there for these purposes. But as a money making enterprise you also need to start thinking about how you manage your hardware and ensure availability. Part of this is about code - but also about stuff like backups and monitoring.

HTH

C.

symcbean
+1 I like the focus on all of the ALM steps. Standards and testing as well.
Michael Shimmins
+1  A: 

In terms of a system to track it all, I'd consider using JIRA (Starter license available for $10, commercial support, 10 users). Chuck Git up on a server (or use GitHub if you'd prefer).

JIRA can track all features, grouped into released/components, can be assigned to developers with work flows etc. You can use GreenHopper (another $10 purchase) to do Agile planning around these issues, such as backlog planning and sprint tracking.

Michael Shimmins
PivotTracker http://www.pivotaltracker.com/ is another alternative for Agile planning
Mark Baker
+1  A: 

You have to start somewhere - that somewhere should be getting your site into source control, getting database backups and a good backup scheme. Nothing will destroy your community faster than losing your user database - people will just stop showing up.

To that end, any of git, subversion, mercurial, etc. will do. I've converted to git, even being a HUGE subversion fan, simply because subversion doesn't fit my development model - I work disconnected 100% of the time.

If you're not sharing work with people, or publicizing your bugs or enhancements, there's no need to have something structured to share - just use a text file you commit into source control with your sources. But there is value to putting your ideas in public and letting your user-community comment on them. There's value in that dialog. To that end, JIRA is probably your best bet, but there's other tools out there too.

I don't necessarily agree with @symcbean, because you can start doing all of this stuff immediately. Source control, even done badly, will be immediately beneficial. Writing your bugs and enhancements down, even if in a text file, will be immediately beneficial. Using these tools to be effective over the long term, that's where he's right - it'll take you a while to get good at it, especially if you start working with others.

Mostly, avoid the idea of doing a rewrite - you'll spend a lot of time on it, do some of it badly, and have a whole boatload of NEW bugs to deal with. Refactor instead.

Chris Kaminski
+1  A: 

It is quite tricky to start organizing everything when you haven't done it before. I would implement a tool that has quite a lot of functions, like VisionProject. This will help you control your source code, keep your tasks in order, organize your projects and keep track of your documentation (with version control). Also, you can use it as a HelpDesk and get your customers to put in their views about the product themselves through the customer portal. Since VisionProject is hosted, you can get started immediately. Also, it is one of the products on the market that actually is very well priced comparing to all it can do.

Now, there are other products on the market that can do almost the same thing as VisionProject, but I don't have experience of all of them. However, I believe that there aren't so many that can get you up and running so quickly and that gathers so much information in one system. Most systems integrate with others, so that you need to create links to those systems. This makes it a bit messy when you want to do aggregate reports with data from all different parts. Also, the users need to get used to several UI instead of being able to communicate within one system.

I believe that most Project Management Systems are going in this direction. This is really interesting, since Project Management, Issue Tracking, HelpDesk and Document Management together really is a lot to what is happening on a day to day basis in a company.

MattPro