My Development Process

July 25th, 2006 -

I was asked today by Yannick what my development process is when I am working on a project. It’s an interesting question, one that I have been developing and refining more recently as I have been working on bigger projects.

At work, I am the sole Web Developer and I also handle all the drafting of business documents. It’s the price to pay for having a degree in Business Administration and also being a programmer as well as working for a start-up company.

When I started this job, I’d often go from one aspect of a project to the next and back again. Productivity was being lost, and I wasn’t being efficient with the time I had to complete the projects. I’ve never been late on my assignments, but I could have finished them much quicker. Knowing this and getting frustrated for feeling that I wasn’t accomplishing as much as I know I could, I started to refractor (cool geeky word!) my development process.

My process

At work, I see the project from start to finish, I meet with the clients to document their needs, I do all the design and coding, and I get the applications up and running. I also draft up any business documents, such as contracts, or anything else that is needed. It’s a lot of work, but I really enjoy what I do and I am used to it because I also freelance.

Being that I am the sole developer and I have a lot of responsibilities, I have to be as efficient as I can be. I have refined my own process to be as productive as I can and am constantly refining it to be more efficient.

At the acquisition of a new client, I always meet with the client personally, in person or on the phone depending on location. I do this for a very simple reason, information can be lost when a person is sent to the meeting who is not doing the development. Having developed numerous applications, I know what needs to be asked and when it needs to be asked. I wouldn’t send a salsa dancer to go play a professional game of tennis, it just doesn’t make sense. Likewise, I won’t send our accountant to talk about the development of an application, it just isn’t their area of expertise. Besides, there is always information lost in-between, so why use a middleman when you can do it yourself or have another developer or development minded person to do it? It also saves time because I can ask all the pertinent questions at the time of the meeting so we aren’t playing phone tag in the future over issues that I could have resolved in the initial meeting. The clients time is valuable, there is no need to waste it by sending the wrong person for the job.

After the initial meeting, I start work on the wire-framing of the application. This is just an outline of what the Client and I have talked about in the initial meeting. After I have that set, I type up my notes on how the application is suppose to work according to what the Client wanted. Then, I start work on the mock-up.

I have seen many other people do this a bit different. They do the mock-up first then the wire-framing. It is whatever works best for you and I have found that organizing the Web Application first, before creating the mock-up, actually helps me define the mock-up itself.

My reason for this is that I like to organize the site and document how it will work according to the needs of the Client and then create the mock-up that implements the organization with the visual look. I find that it saves me time [read more efficient] doing it this way and I don’t end up creating numerous mock-ups for the Client, going back and forth, until one or few are decided upon. I can get it right usually the first time around, which also helps foster trust in the Clients relationship with you.

Once the mock-up has been agreed upon, I’ll code that up in XHTML and CSS and then set that aside and start developing the functionality of the site itself. I do almost all of my development these days in Ruby on Rails, so that in itself is another point for productivity. While developing the application, I segment the application into parts. I’ll use my current project as an example. I am writing an Online Appointment Scheduling application and it will contain a calendar, a form to schedule appointments, a login authentication system with various access levels, a customer archives section, a reports section and a few other things. Basically, I split the project up into pieces just like I have in the last sentence, and I start with the hardest/biggest pieces first. The hardest/biggest can change from person to person. For me, the calendar was the first one to start with and I have a college day story for the reason why.

My first year of college, when I was working for a Computer Science degree, one of our projects was to create a calendar in C++. Well, the short story is that I never got my calendar to work just right. It was almost there, but I couldn’t get one aspect of it to work before the due date. I turned in my first and only uncompleted project and since then I have feared creating calendars, even though I have written them in PHP and RoR. Stupid fear, I know, but one that stays with me, haunting me.

Okay, so I start with the hardest/biggest pieces first and work my way down to the easiest parts. I don’t even worry about piecing each of the parts together yet, I just focus on each part and make sure it works and has been tested. Once I complete all of the pieces of the project, I start to style the application applying the coded mock-up to all the pieces of the application. I also take out my wire-frame and piece all the pieces together with links. I forgot to mention, for the login system, I do implement that across the board where it is needed. The piecing together is just what page goes to what that I don’t focus on.

After all that, I test again. Once all the testing goes well and all bugs have been ironed out, I setup a test server online (note I always test my applications locally) and contact my Client to let them know so they can take a look at the application and go through it. I usually do this contact through email, so that they can check it out at their leisure and I also ask when is a good time for us to meet or get on the phone and walk through the application to iron out any changes that need to be made.

Once everything has been ironed out, I setup the production environment and upload the completed application.

I know my process isn’t exactly revolutionary, but since Yannick did ask, I thought perhaps it might be helpful to anyone else or someone may have some suggestions that could help make me even more productive. I’d love to hear your process that you go through, either through comments or leave a comment to a post you have made about it.

ciao!

Tags: development

 

Comments

 

Commenting has been turned off.