Developing a web app
My side project, Indie Aisle has been online for a few months now and as I did with designing the web app, I'd like to share my thoughts about the development process.
Layout and structure
I first started coding the HTML and CSS of the design. I used the opportunity to do some experimenting with the latest HTML5 and CSS3 techniques. The biggest part that came out of this was developing the layout to work across mobile devices using CSS3 Media Queries. I cover the results of the approach in a presentation I gave at Desert Code Camp.
Figuring out what language to develop with
As I was continued to code the front end HTML and CSS for the site, I also spent some time trying to figure what backend programming language I should go with. Should I stick with PHP since I had been using it for so many years and was most familiar with the way it worked? Or should I try a different, potentially more beneficial approach by using Ruby on Rails.
What I liked the most about Ruby on Rails was its framework concept. But I realized PHP had its own Model View Controller (MVC) frameworks as well. I decided to try using CodeIgniter to get a good feel for how the programming methodology worked. I went as far as setting up a couple dynamic pages that pulled in different sample data from a database. This gave me a better understanding of the dev process and even influenced the design since it was the first time I went through actual user scenarios.
After doing further research comparing Ruby on Rails to PHP and CodeIgniter and even to Python and Django, I ended up deciding to go with Ruby on Rails. While all had their pluses and minuses, Rails seemed to have the best collection of components which I figured would make the initial version quicker and more cost-effective to program.
Finding a good developer
By the time I got to this point, I happened to come across just the right article for my situation, “How to hire a programmer to make your ideas happen” by Derek Sivers, the founder of CDBaby. It helped me break down the development process and find a developer using online freelancing sites Elance and oDesk.
From using Elance in the past on client projects, the biggest lesson I learned from the experience is that communication is key. It’s important to find someone who clearly understands what’s required of the project and is able to discuss their approach to getting it done.
While I was already developing the front end code for some screens for the app, I realized how there were certain aspects I still hadn’t fully worked out. There were also all these features I had in mind to include but hadn’t really prioritized them based on what was important to get out initially, in a ‘version 1.0′. So just the exercise of thinking about every part of the interaction process and describing the functionality to someone who had to make sense of how to develop it was helpful in figuring out exactly how the final app would work.
Releasing a version 1.0
The developer I worked with on Elance for the first milestone did a great job and I ended up hiring him to develop the full initial release. By this point I already had the project broken down and most of the frontend code for all the screens, so I setup a Basecamp project and we were on our way. About two months later, a final product was coming together.
Before release, I had managed to gather some interest in the project and was able to do a short beta testing period. It helped with bug fixes and gave me a good look at areas that were unclear to users.
Indie Aisle finally went live in November and exciting as it was, the work was far from over. Having it out there meant getting some real feedback and seeing how people were using it. So based on that feedback, there was a lot of needed revising to do. Not only in code and functionality, but also in design and business strategy. There was so much time spent on how things should work from a technical standpoint during development, that the business side, the purpose of the site and its customers, seemed to get lost.
And that’s where I am with things today. We recently released a final piece of the puzzle to the overall concept, at least at this stage. Which means there’s another aspect I need to focus attention on: Marketing. I’ll cover that in the next installment.