Do You Wireframe Client Projects?

mockup-thecottonclub Recently I have been trying to move toward computer generated wireframes because they are a lot cleaner than the mockups I have been sketching out by hand for clients.  I have found that these mockups give me a starting place while meeting with the client to markup a game plan or layout changes that may not have been considered initially.  Granted, drawing the layout for a project from scratch is still a lot quicker for me, especially if I use SmartDraw or Microsoft Visio that are somewhat clunky.

The other day I had someone recommend Mockingbird to me as an online tool for creating wireframes so I decided to go check it out.  I created a free account and within just a few seconds I was able to get up to speed well enough to mockup a future redesign of this website (much needed).  It only took me a few minutes and I was able to work from my MacBook while riding down the highway connected to AT&T’s wireless service.  With Mockingbird you can also save your project and come back again later to make changes.  I think that I might be using Mockingbird a lot more in the future to layout client projects but before I commit 100% to this product I wanted to find out…

What product or solution do you use to wire frame your clients projects?

Do You Use Project Management?

I had someone ask me on Facebook and another on Twitter this weekend, which project management software I recommended.  I immediately said Basecamp. Although recently, we switched to ActiveCollab at Pleth for managing our open projects because it integrated w/ QuickBooks a lot easier than Basecamp. For a company like ours w/ offices in 3 cities and hundreds of clients out there, we need everything to connect and work well together…

I am interested in hearing what everyone else is using for project management. Also, if you have an interest in discussing any of the other project management solutions on the market today in an upcoming episode of The Cotton Club Podcast drop me a note below…

Current Projects: Streamlining Project Discovery

I have been developing websites for a long time now and over the years I have seen a lot of changes in the way that we, as developers, approach projects.  I suppose a lot of this has to do with the fact that we not only approach projects differently but we also build them differently. 

Personally, I wouldn’t have dreamed of using an open source content management system or framework about 7 or 8 years ago because a lot of these solutions weren’t mature enough to be trusted, especially from a security standpoint.  Of course, this is polar opposite today, many popular content management solutions like WordPress, MODx, Joomla, and Drupal have all matured and are viable options for building web projects in.

While a whole lot has changed in terms of how we develop projects, one aspect of what we do hasn’t.  Project Discovery, or the initial conversation you have with a prospective client prior to quoting out their web project, is extremely important.  During this process I like to try to get my head around everything the client is wanting to achieve with their website. 

Phase One:

This initial conversation, or Phase 1, usually consists of the following determinations…

  • Do they require content management?
  • Do they plan to blog or publish news releases?
  • Do they need graphic design / photography / or page layouts?
  • Do they have a rough project outline?
  • Do they have content writers, or will we be quoting this out?
  • Do they plan to capture any user data?
  • Do they need any custom applications or functionality?
  • Do they need to plugin or interact with any third-party applications?
  • What is their timeframe for testing / launch?
  • Do the also need email?
  • What is their budget?

Phase Two:

Once I have all of the answers to Phase One I can pretty much start on a proposal, but before delivering the final cost analysis to the client I usually will follow up with them regarding our initial conversation about the following…

  • Has anything changes since we last spoke about the project?
  • Can we nail down the project outline and go through it to make sure we haven’t left anything out?
      • If the project requires capturing data or any custom programming, can we nail down the specifics and build a model of how they are envisioning the project to function. 
      • If the project requires interacting with a third-party application or service, do we have a method for me to test this functionality?  Is there support documentation or point of contact for this service?
      • Who is going to be my point of contact during the project?

Once I have all of this information in my head, and I have already gone over our policies and procedures for dealing with scope creep and additional development costs down the road, I am usually ready to build them a proposal based on the information I have.

Since most of the discovery information I get from clients comes through either web conferencing or telephone calls, I simply jot down these notes in my notebook and pull from that while making the proposal.  A few years ago I would send the prospective client my discovery notes along with my proposal just so that there wouldn’t ever be any confusion once the project got started.  Over the years I have stopped doing this but I got to thinking today that it might not be a bad idea to start doing this again.

What Got Me to Thinking About This?

Today my business partners and I were on the phone w/ a potential new account and were asking him the usual discovery questions regarding his project.  My partner Stephen had already spoken with this person briefly so he took the lead on the call, my partner Greg and I listened in and chimed in with any questions we might have.  While this was going on, I jotted down a few notes in my notebook about the project, even though I had already more or less made the determination, as did my partners, that I was more than likely not going to be the one developing this project.  Internally we are able to discern which one of us is best suited to manage a project, sometimes even from the initial conversation we are able to make this call… 

When we got on the phone after the conference call with one another we all agreed that it would more than likely be a project that Greg would oversee.  But, let’s say that Greg get’s bogged down and needs for me to pickup and help him out on a project, it would be nice for me to have access to the discovery notes that Greg has put together regarding the project.  We currently use Basecamp for project management but it doesn’t do a detailed job of capturing discovery data in my opinion so I got to thinking what we could do to build onto this…

Idea for Custom Application

I am going to build a custom application that we can enter in discovery notes for projects into a form online during our conversation.  I am also going to have this form be accessible by our blackberries and iphones as well.  Of course, once all of the project discovery information is input we will be able to generate a PDF or Word Document from the data entered.  I haven’t got the entire schematic worked out in my head as to what this is going to look like yet and I haven’t started on it, but once I have something rough, I will be sure to post an update here.

Just out of curiosity, what do you use for your project discovery process?  Be sure to leave me your comments below…

Week One with the iPhone

apple-iphone-3g The other day I reluctantly went into the local AT&T store to find a replacement for my Palm Treo that I had been hoping would hold out for me until January when AT&T was supposed to get in the new Palm Pre but it just wasn’t meant to be.  I went in w/ the intention of checking out the BlackBerry Bold but the more I looked at the iPhone the more I realized that the touchscreen keyboard wasn’t too bad (that was my holdout from day one w/ the iPhone).

Another holdout that I had w/ the iPhone was that I had heard that it wouldn’t synchronize with Outlook.  For me that is a huge deal because the past 15+ years of my life are archived in Outlook as well as my notes, tasks, and client data going back as long as I have been in business.  Leaving that kind of business intelligence behind was not an option.  I asked around and a few people told me that it was possible to sync up w/ Outlook but person after person at the AT&T store told me that the iPhone would not synchronize with Outlook, but I knew that I trusted my friends who had said that it would do it so I went ahead and brought a 3gs home w/ me to test it out.

Sure enough, on the first attempt it synchronized right up with my Outlook Contacts and Calendar.  Someone should tell AT&T to send out a memo to all of their sales people and let them know this because apparently it’s not common knowledge to them.  Long story short, I was able to sync up my contacts and my calendar but not able to hook up w/ my tasks.  And a few months ago the tasks thing would have been a deal killer for me but my partners and I recently moved over to Basecamp to do our project management so I was able to just load an app to handle my tasking and I was all setup.  Even better than I had hoped for…

My Basecamp® Wish List

A while back I blogged about our recent transition to Basecamp for handing our project management needs.  After having used the software for a little while now I have to say that I am still pretty impressed with what all that it allows us to do.  Our biggest hope was that it would allow for us to easily collaborate on projects with our team members who might not be in the same office.  For example, we have projects open right now that have tasks assigned to various members of our team.  Our team members are scattered out into three locations (Batesville, Jonesboro, or Conway). 

Basecamp allows us to break our projects down into Task Lists that can be assigned to anyone within our team.  When someone completes a task, they just check it off the list and the rest of the team can be alerted that that particular task has been completed.  Basecamp also allows for Milestones, this helps a lot when it comes to scheduling projects, of course we never like to give definite start dates or launch dates because there are so many variables, but it does give us goals to shoot for, and for me that helps keep me motivated and on top of things.

Having used Microsoft Outlook for as long as I can remember to manage my clients projects, there are some things that I have gotten used to. For example, I assign a task for each client project I have going on, inside that task I have attached the clients content files, images, and all other notes related to the site.  It’s nice to be able to glance at my taskbar and know that I’m not forgetting anything.  I have also used the Outlook Calendar to track my start and projected testing / launch dates for my projects.  The beauty of Outlook for me is that I am able to synchronize all of this information with my phone. 

While I have been inputting my projects into Basecamp for management purposes, I still have blank tasks inside my Outlook for all of my open projects.  I know that sounds silly and redundant, but that’s just how my mind works.  This brings me to my wish list of features that I would like to see available for Basecamp.  I would be happy with either a client side solution (that is an add-on for Outlook) or a SAAS (software as a service) solution that is available as a plug-in for Basecamp.  Here’s what I would like to see…

Synchronize Basecamp Projects w/ Outlook’s Tasklist

I am not interested in having 40 tasks open for 2 projects, I would like to see each project as a tasklist.  Inside the Outlook Task, there could be tabs for Notes, Files, To Do Lists, Whiteboard, and Time.  I know that a solution this would require a good bit of programming, but in the beginning I would just be satisfied to see the To Do Lists brought into Outlook Tasks and synchronized.

Synchronize Milestones w/ Outlook Calendar

I like Outlook’s calendar reminders, I know a lot of people are polar opposite, but honestly if it wasn’t for those reminders I would be lost.  The milestones could be entered into Basecamp and then upon synchronization it would go in and change the start date and end date inside the task itself and then go out and set me up two calendar entries for the start date and the end date.  If something happens and I see that I am going to have to move the project launch date back a week, I could either change the date inside of Basecamp or just edit the task itself inside of Outlook and voila!

These are the only two things that I would like to see added into Basecamp, or at least made available for purchase as an add-on.  I still use Outlook exclusively for managing my 2000+ contacts, but as soon as I get caught up on some projects I plan to checkout Highrise, which is a sister application to Basecamp.  Highrise brings a lot of functionality that my current Outlook solution is lacking such as Lead Tracking, Follow Ups, and SMS reminders.  Highrise also will allow you to track conversations, manage email, and centralize contact data in an exportable format, I am already doing this with Outlook.

—————
I posted a note on Basecamp Support Forum today, the last conversation about an Outlook Synchronization Tool was last year and apparently a project called Grabsync was launched but it’s not being actively developed at this time.  Hopefully someone will pick up the ball and run with it on this, I am sure that I am not the only one that would like to see this functionality.

Project Management w/ Basecamp for Web Developers : Cotton Rohrscheib

PHPR Project Management

I found this interesting post on the Xlinesoft forum tonight. (Best Practices) It relates to Best Practices for using PHPRunner & Subversioning.  I currently don’t have a use for this in anything I am working on but thought that it was pretty interesting so I decided to include it here…

——————————————————

1.0 Summary:

Setting up an SVN Repository significantly increases manageabilty of large scale projects using PHPRunner across many environment instances and developers. SVN Repository will also encourage companies to use PHPRunner to be used in larger scale projects. The output codes can be deployed based on the subversions and the config file can be determiend upon staging.

2.0 Case Statement

I have a project that is used in the development and live environment. Initially, it was not an issue since the db schema was synched. As the the dev version is release to production, and additional tables were added to the dev environment, I found it almost impossible to manage the project with my simplistic approach. What I ended up doing was for each instance of the development (dev, test, stage and live), I created seperate projects. so, I now have 4 individual projects. Our european counterpart saw our US project and of course, they requested for each of their instances which of course was about 6 all together. So, now I have a total of 10 seperate project for each db instance of our development phase. In my mind, the only difference is the config (i.e., host, user, password and db name).
For awhile, I would just select one of the projects, make my modifcations, and then save as for each instance of the project. This worked for awhile.

The problem started to occur when we went live the first time. There were enhancements that I wanted to make for the production version. Meanwhile, the db schema in the development and test instances started to change. So, I found many of my links started to break. So, I could no longer just simply Save As. The next step was to Cut and Paste.
I stopped Saving As, and started doing the following. I would make the changes in one of the most complete instance which usually was the development instance since its where the new tables are comming from. Then, I would open another PHPRunner and open one of the other instances that I wanted to update. Of course, I couldn’t update all since some of the test and stage instances have not been updated.

As a result, there was chaos in my codes. I no longer didn’t remember which project belonged to what instance. I didn’t know which one got updated and which ones are the same and which ones are broken. In other words, the project(s) became extremely unmanageable.

3.0 Analysis

This is a typical result when what seemed to be an easy process ended up entangled. Many times, the simpliest approach many not be the wisest approach and could cause havoc on project and resource management. The criteria for a simple project is if the proejct is being developed by a single develper on one or two instance of the same project. Both db instance must be synched for most of the time or at least a push to keep it in synched. As soon as a third unsycnronized db instance is introduced, then it can no longer be considered as a simple project management case. In order to avoid the pitfall of the case statement, one must ensure scalability, flexibility of code management, as well as the deploy process.

 

4.0 Approach

4.1 Set-up

The way to resolve the issue was we deployed a subversioning tool, SVN with a UI frontend, Tortoise. We created a project folder in the SVN Repository and a trunc.
I selected the best “version” from the projects, which we’ll call ProjectPHP. I then looked for the PHPR project file and copied that and the tmp and visual folders into my SVN trunc folder (which was also in my local apache htmdoc webserver path). I opened PHPRunner, make the changes I wanted and Save. I am now saving the PHPR file into my SVN trunc folder that is also within my apache webserver folder. I set my output file directly onto my trunc folder and I set the preview with the localhost url. I build the projects.

4.2 Work Process and Project Management

If all goes well, all the output files is created within the trunc folder. I use the preview just to see if anything was broken. When I am satisfied with the changes, I close PHPRunner and then go to the trunc folder. I delete the tmp and visual folder since I discovered that once I successfully build an output files with the tmp and visual folders, I can erase those two folders. Somehow, when I open PHPRunner and build it again, PHPRunner knows where to look for those tmp and visual folders. Also, for some reason even if I delete these folders, when I go to my Visual Editor, I can still see all the icons.

I committ all the files to the SVN Repository. (Note: It’s realy easy to do it using Tortoise SVN). I know have a trunc of my project. I then check out a Working Copy. This is a good idea since you don’t want to mess up your trunc version since it will always be your “base copy” of the code. In my working copy, I can open PHPRunner and open that particular project file. It works beautifully. All the icons show up in my visual editor. I can change the db configuration so that I am developing to the relevant instance of the database. Once I am done, I save my I used the Live instance of db to create or update the project. Once I was satisfied, I save my project which was the latest and greatest of the codes that I have been chaotically managing. Once we created the trunc, we created tags and branches.

I checked out the trunc into my Working Copy folder. For now, my WC is pointed towards the trunc. For every major milesone I reach, I create a Tag. The naming convention for the tag is usually the date and some task indicator like Dec102008_Task_1of3 or some other meaningful naming convention. I continue with my work on my WC until I complete all my tasks. By now, I have 3 tags, since I created them for each milestone.

I then committ my changes into the SVN Repository. Since I was pointed towards the trunc, it updated the Trunc. But since it is also a completion of a version of ProjectPHP, I created a Branch and called it Revision 1.0. This is my first “subversion.”

For now, I can continue to make small modificaitons or bug fixes to Revision 1.0. It is important to note that I am working constantly on my WC (Working Copy). Basically, I can “Switch” the WC to the trunc, tags or branches. When I am working on Revision 1.0, I will make tags along the way in order not to lose any of my codes in cases I mess up further along the way. There is a stopping point. Once I am done with my changes, I create a subversion Revision 1.1

Note: Please refer to the sources link below for more detailed subversion workflow.

4.3 Deployment

For every completed revision, I test it in the Test, QA, Stage environment. And once it passes all 3, then I deploy it to Production. We created a page that allowed me to selecte which subversion I want to deploy and the “dbcommon” version that I want to use. Since in PHPRunner, the db information is part of the editing the project, when it builds the file, it also builds the dbcommon that has all the db information (user, password, etc.). So, when there is a different db login for each instance, you will have to specify the correct “version” of the dbcommon. All I did was to create one dbcommon as a “trunc” and then created all versions of that for each instance of the db.

Whenever I deploy, I select the code that I wanted to put into dev, qa or stage, and select the appropriate dbcommon. It is a dropdown. The staging process basically takes all my files which are the output files and overrides the dbcommon with whatever “version” of the file I select. Remember the version is realy just to be able to have all the dbcommon for all the instances.

Also, there is one caveats for those that may want to have a others use the project for each of the instance. So, say if you have a Live version with the old db schema. So the Live version is Revision 1 and all the subversions. The active development is already on Revision 3, for example. And you’ve made some changes on Revision 3 and deployed it to your develpment and stage instances (and not Live of course, because the latest db has not been deployed to Live).

Since you still want to test and stage your Revision 1 code, you can deploy the codes to the development and test environments but use the db instance that has the matching schema (usually by now, it will be just the Live version). Notify the folks using the tool that you’ll be testing and staging a production fix and therefore need to log out. Once you verify in test and stage the codes, deploy the code to Live. At this point, unless there are major functionality and not just small fixes, you may have to merge it with either Revision 3 (the latest and greatest version of your project) or back to the Trunc.

I suggest not to do this however. I would just leave Revision 1 and all its subversions where it is. It is easier just to make sure that that functionality is copied over to Revision 3 and then merged back to the trunc (since Revision 4 may be under way).

5.0 Conclusion

When you use SVN with Tortoise and set up the appropriate subversions, your project with multiple developers and instances can be manageable, as long as everyone understands the subversioning principle. Keep the PHPR file with the output files and delete the tmp and visual folders once you have successfully built a project within the svn file folder. The PHPR file gets subversioned as well. In other words, it becomes protected for any accidental mistakes (like I have done so many times with my manual management of my php projects.)
I hope this post will encoruage to use PHPRunner at a large scale basis and will encourage the makers of PHPRunner to make it more and more robust.

6.0 To Do’s

  • Set up URLs for each project intance (dev, test, stage, live). These corresponds to the db instances.
  • Set up SVN repository
  • Set up staging page. There will be a list of the environment where the codes will be deployed, a list of the code version to deploy, and the dbcommon version to override the dbcommon built along with the PHPRunner.
  • Set up Project Folder then /trunc, /tags, /branches (Please see the link and study the manuals)

Resources Links:
SVN
Tortoise