Jump to content

Best practice for developing and maintaining a project


gortron

Recommended Posts

I am a PHP / mySQL developer and I manage the ongoing development of a content management system for the company I work with.

 

I'd like to manage the project as effectively as possible and I would like to get some advise in this area.

 

Can anyone recommend a specific approach to development? For example should I use CSV? Is there an recommended method to document new features, feature requests, milestones, roll outs of updates?

 

My main concern is if I repair or update a clients copy of our application, how do I ensure each other client receives the same update? Is there a recommended process for this?

 

Thank you in advance to anyone who can give me some help or advise in this area.

Link to comment
Share on other sites

You're talking about a lot of different things here. I'll give some ideas though.

 

I've never been a big fan of CVS or SVN, but if the project is large enough, or has multiple people working on it, then it can make sense.

 

Approach to development? Again it depends on the particular project at hand. If you are 1 man doing the work, then the waterfall model makes the most sense. When you're one guy, A has to happen before B, etc. Everything is linear. That being said, I like waterfall even for team projects. It forces clients to commit to something before you move on. Otherwise 3/4 of the way through the project they try to change things and you have to retrofit it in. Sometimes you've got to do this anyways, but if you have required them to signoff you have a leg to stand on, some of the other models don't really promote this.

 

You really ought to have your system developed in such a way that you're managing a single installation, otherwise pushing out updates become very difficult. That doesn't mean each installation has to be the exact same, but the core should remain the same. Also modules should be developed with the master copy and then integrated for said client. If something needs changed, you change it in the master then push it out... really need to keep things in sync. One good approach to pushing out updates is diff files.

 

For documenting your code, phpDoc is a good tool. You structure your comments in a certain fashion and then it generates the documentation for you. This makes as a nice little deliverable for a client.

 

Managing documentation is a tricky one. There are a lot of different ways you can do this. I suggest first deciding which documents are always needed. Then you'll probably want a project management tool. With this you'll create a project, upload the standard documents and then create tasks, milestones etc as they relate to that particular project. At the end of the day it doesn't matter how you do it so long as the information can be found easily and related. For example, this document belongs to this client, for this project, etc.

 

For new feature requests/bug fixes it's a little more difficult. Most people use some sort of a ticketing system... which works well. The problem is it's usually a disjointed system from your time tracking/PM tool above. This makes it hard to relate the small things back to a client.

Link to comment
Share on other sites

dbo, Thank you for your detailed reply.

 

Yes, I am one man working on this project. I haven't heard of the waterfall model, I don't know if its a particular process or not so I'll look it up.

 

I have the project centralized as much as I can. Meaning all the files are on one server and the clients log into this. Some files are still needed on the clients sites however and this is where things get frustrating to manage. Again, I don't know what diff is, but I will look that up also. I am considering writing a PHP script to FTP all the necessary files to a clients site for a new site or even to 'repair' a clients system if it fails. ( in relation to PHP FTPing files, do you know if PHP can FTP a compressed file and uncompress it at its destination?)

 

phpDoc sounds great, it may be exactly what I need.

 

Can you recommend a specific easy to use ticketing system ?

 

 

 

Link to comment
Share on other sites

Waterfall is just a systems development lifecycle (SDLC). It basically outlines the various aspects from requirements gathering, design, development, support etc as a continual process... each previous step gets completed before moving forward.

 

The ideal system would be to require your clients to host with you and manage all of the clients off of a single installation. That means as you make updates you only have to make them in a single location and the updates are pushed out to all clients by default.

 

There are ways to pull off the FTP/Unzip process you mentioned, but it may be cumbersome... and will depend on what your host allows. It could be a script that calls FTP from command line using PUT... then you've got some sort of listener you provide to your clients that unzips them on the other end (it may just run on a cron job...). That being said, be very careful doing this. What if you've custom built a feature for a client and you apply the "fix." You can potentially break their entire site, which leaves very angry clients. You'll at the very least want to have a backup of the files.

 

Diff is a thing that looks at the differences between file A and B and then applies them to the said file.

 

I've recently been playing with osTicket a bit. It seems to have the main features but not be overly bloated, though I've not used it a lot yet.

Link to comment
Share on other sites

I've not used Trac, but I see it popping up more and more. I probably ought to look at it myself.

 

The project management tools I've used are more of the commercial sort. Team Dynamix, Creative Manager, BaseCamp

 

I've tried ActiveCollab, but it's features were too limited last time I checked. You can't assign hours to task, or rates to different resources, etc. But for managing tasks and documents as they relate to a project it's pretty good.

Link to comment
Share on other sites

Thanks Redbullmarky, Trac looks like it could be very useful. I'm wondering if im using an Axe to pear a pencil using Trac to manage our content management system development?

 

I'll continue to look at the option of PHP FTP'ing the files. It won't damage a clients site as I'd only be focusing on one folder and its subfolders.

 

 

 

 

Link to comment
Share on other sites

I have a test running that creates a list of files to upload, uploads several files til it reaches about 200K worth of files and closes the connection. Then starts over uploading several more etc until finished.

 

Im not saying this is the definite answer, but I've always wanted to try it out.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.