After working on Skribit for the last 4 months, I have gotten a grip on my workflow and the tools I as well as the other co-founders use. The scope of this post is to give potential starter-uppers an idea of how to get work done collaboratively with others for a web app startup. I am by no means saying this is how everyone does it. In fact, I would love to know how your startup does things so leave a comment if you're willing to share. This post is in response to a suggestion by an anonymous Skribit user.
Note: Many screenshots have been edited to hide private data for obvious reasons.
When it comes time to find a solution to keep track of many constantly-changing files and gather thoughts in one place, there's no need to look further than 37signals' Basecamp. To date we have created dozens of writeboards in addition to messages added and commented upon daily. To get around receiving many emails from Basecamp, we use the authenticated RSS feed.
While Basecamp is stellar for sharing documents and managing revisions, there are times when firing up Excel or Word is a bit too much. For that, Google Docs is just the ticket.
I'm also in the process of seeing if Campfire, the chat app by 37signals, would make a good fit. I can see it coming in handy for informal online meetings with the dev team, marketing and so on. For more technical discussion Skribit has a private Google Group.
I've always been a fan of the Google Apps suite of domain-based tools. It's free and immensely useful. After changing some MX records in DNS I had setup email accounts for anyone on Skribit that wanted one. However, even more useful than regular email accounts was Google Apps' support for email lists.
For example, we have a contact form on Skribit. There's no easy way for everybody to get that email. We used to have a shared account but that got annoying for everyone to log into and check. Now we have an email list that the contact form is connected to. Everyone on the list gets the email and if someone wants to take care of it they reply to the email and BCC the email list so everyone else knows what has been taken care of and how.
Skribit is a Ruby on Rails web application currently hosted on a custom Media Temple (dv) running Ubuntu. We use the very memory efficient nginx for serving HTTP alongside monit managing mongrels for staging and production environments. But those are just the application details, for development we make use of Assembla's hosted Trac and SVN services. I think most people will lean towards their own hosted SVN and Trac. It's a bit more time spent setting up and if you migrate to another server or experience downtime you'll suffer from a lack of SVN and Trac.
Whoever needs to have access to SVN/Trac has their own account. It's a powerful way to see who has been doing what with SVN commits, bug tracking and the development side of project management. Assembla accounts are free and come with a slew of other tools that I don't really take advantage of yet, like Scrum reports. With a paid account you get more storage space, the ability to backup to your own Amazon S3 account and more. At the moment, we're fine with the 500MB of provided disk space. Also, an alternative to the fully-featured Campfire for chats, Assembla has a basic chat system.
My development is done with the OS X terminal, TextMate and a Firefox with Joe Hewitt's Firebug. Pretty much the same way I develop with most things. The project is all SVN-based so I make heavy use of basic SVN (up, diff, commit, status, delete, add). Most of my development is done locally. When we need to get some security testing done, the current revision gets pushed to our staging server via Capistrano and our resident security expert Josh Sweeney takes a look at it.
The single feature of TextMate I use than anything else is by far Cmd+T, Go to File. When working with an MVC project with many files in various directories it's important to be able to open up the right file with quickly.
Working on Skribit has been a bit different than my typical development workflow which involved solely editing files over FTP. Other than for migrating the Skribit blog, I haven't used FTP. Everything is done over SVN and SSH (Capistrano uses SSH for deploys). When it comes to getting SSH access, we only allow key-based SSH authentication rather than just passwords for security. For server backups, I setup a version of my Amazon S3 backup script.
When I feel the need to monitor processes and mongrels I use a combination of htop and monit.
Last but not least, the best tool of them all - a worthy laptop. Worthy depends on your definition. I'm not going to say that a MacBook Pro is the best thing for everyone, but I'm happy with mine. Others enjoy coding with RadRails on an Ubuntu box, E on a Windows computer, or just straight-up butterflies (<- read that!).
Naturally laptops don't make sense as a primary computer if you're going to be compiling all day but for web development they do just fine. Then again, I could be wrong. Wil Shipley, developer of the popular Mac app Delicious Library, is quite happy with his MacBook Air (NSFW) that just arrived (SFW).
It compiled Delicious Library 2 from scratch in 1'59". The 2.33GHz MacBook Pro takes 2'04". SSD's LOVE compilations.
If you noticed any trend in this article, it's probably that most things are done online. Is this the same case with your work? How do you run or plan to run your startup? What's your workflow like? Let me know, I'm wondering how I can improve my own.
If you enjoyed this post, check out the discussion on Hacker News.