views:

163

answers:

4

Hey Guys, I'm relatively new to the Web Development business. Me and 2 friends started up our own little company. 1 person is a designer, 1 person is sales / consultant, and I am the developer. Right now, its an after work project, but we hope to expand and let it become our full time jobs.

Anyway, my question to you, is what is the best way to go about a full web development project cycle.

List of things to discuss:

  • Proposals - do you guys find these important
  • Project Planning - how much planning and mapping out should there be?
  • Project Management Software - I did a little research before and I like the online portals. Parallels stood out for me.
  • Editor tools - I have been using the most basic editor Notepad++. I feel like I should be using something more advanced.
  • PHP Framework - I just got hooked on CodeIgniter.
  • Ways to deploy site - right now I am doing most of my editing via FTP to the live site. Should I be working on a local copy and then uploading to a test site for the client? Then eventually go to the live server. Are there ways to automate this? (best practice ?)

I cant wait to hear all your input, especially from folks who are veterans at it!

+2  A: 

Impossible to answer this fully in a single post here, but I'll give you some punchlines:

Proposals - do you guys find these important

Not sure what you mean by that? Sales proposals?

Project Planning - how much planning and mapping out should there be?

Don't spend too much time planning up front - it'll lose its value once you get further down the line. Do plan enough though. Usecases and some interface sketches/wireframes are good value.

Project Management Software - I did a little research before and I like the online portals. Parallels stood out for me.

You'll never find a golden bullet here. Use as little/simple as possible and always go for something with a clear exit route. Less is more. Also, keep in mind that this kind of tool needs to work for very different types of people, at the same time. The tool supports a process though, so keep that in mind - don't let the process be defined by the tool.

Editor tools - I have been using the most basic editor Notepad++. I feel like I should be using something more advanced.

Use what works for you. A good tool is nothing, unless you know how to use it. Likewise, if you know a simple tool well, you can get very far.

PHP Framework - I just got hooked on CodeIgniter.

The exact same applies as with editors.

Ways to deploy site - right now I am doing most of my editing via FTP to the live site. Should I be working on a local copy and then uploading to a test site for the client? Then eventually go to the live server. Are there ways to automate this? (best practice ?)

This should be high priority to change. At the very least, get your source code in a SCM - Subversion is the most mainstream, so I would suggest to use that. Second, get a separate development environment and production site. You develop at your dev setup, and when it's done, you deploy to the live site.

Next step is to look in to testing and automated deployment (google for that). But first things first - Get used to SCM and a separate dev/prod setup.

Finally, if you haven't read it already, Getting Real might be worth your time.

troelskn
gonna give that book a read. seems interesting!
Roeland
A: 
  • Proposals - Why not. Just don't overdo it. Don't let it become like this big corporate wall between you and your clients. You're small, be personal. That's your strength.
  • Project Planning - There's three of you? Skip project planning software.
  • Editor tools - If there's a specific function that Notepad++ doesn't have that you need, then switch editor. But don't switch just to feel more advanced.
  • PHP Framework - Keep an open mind and use what ever you get hooked on.
  • Ways to deploy site - Always work against a dev box. Some have test boxes with real-world data to test updates before deploying to the production box. Always version control your code. Whatever tool or method you use to deploy (really a matter of taste) keep a simple checklist with steps to go trough when deploying, and keep it up to date. Do automatic regular backups of your production box and actually do a reset and restore on a test box every now and then, and write down the steps needed to restore from backup.
0scar
A: 

As an editor, I strongly recommend jEdit. It's cross-platform, speaks many programming languages, has lots of plugins for extended functionality, macro record/save/playback, is actively maintained, and is very configurable.

For deployment, Subversion makes a lot of problems go away. For web development, I typically have two branches; devel and live. All changes are done in devel. When you're ready to publish the changes, a single svn merge operation applies the same changes to the live branch.

Subversion has hooks in its infrastructure to call scripts when certain events happen, like checking in software. A post-commit hook can automatically transfer (scp, ftp, unison, etc) the files onto either the devel server or the live server, depending on which branch the changes were. Now you have nearly immediate and automatic website updates whenever changes are checked it.

Another nice thing about Subversion is that it can hook into Apache to provide a WebDAV interface, so you can change files from anywhere without opening up Subversion itself through your firewall. If you need to make a quickie change from your day job, you can.

dj_segfault
+2  A: 

Proposals

This really depends on what sort of clientele you are looking at. It probably will not be necessary at the beginning of your company since you will be dealing with small to medium clients, but its not bad to get into the habit. When I did a bit of freelance web development, I did not work on a proposal-based system. Instead, I did more of a site mockup->changes->implementation system. I suppose a mockup is a form of a proposal...

Project Planning

Again, this depends on the size of the project. If you're working on a static 20-odd page website, you probably do not want to get too much into the planning aspect. However, if you are working with a site that pulls into a large number of technologies (forums, CMS, AJAX, web-services, etc.) you probably want to invest a little more beforehand.

Project Management Software

Cannot say I have ever used a project management tool during my days as a freelance web developer. I'd say don't invest in anything right now. Once your company grows, you'll have a better idea of what your requirements are.

Editor tools

Notepad++ may cut it now, but I wouldn't recommend it in the long-run. If you are looking at technologies other than PHP, I'd definitely not recommend it. In fact, if you are looking at a clientele that's more "business-user" esque you need to think about getting into ASP.NET or J2EE. I would suggest getting a PHP IDE that at least has code completion, as this can help eradicate a ton of PHP bugs. I'm not sure if Notepad++ has this. You also probably want to get a debugger that integrates into your IDE. I know Eclipse had a PHP IDE a few years back, but I'm not sure how good that is these days.

PHP Framework

Never really used any PHP frameworks but that's because I graduated and got a job before I had time to teach myself any of them. :) Go with whatever fits. You probably want to get used to more than one since some projects will fit better with some frameworks.

Ways to deploy site

Defintely, definitely get a local server set-up. You can get a WAMP/LAMP installation set up really easily on your dev machine. As others have said, you probably want to use source control because of Murphy's Law. Personally, I've been using wampServer the last few years as I haven't really been developing that much PHP and that allows me to get a working environment up really quickly. But you may wish to customize your devenv further. But you should definitely test your applications on a dummy server with a dummy database before deploying it to a live server with a real database!

Hope this helps!

sohum