Last week I had the opportunity to contribute to a great software developer community, Gun.io. Gun.io wanted to hear about what we are doing with Squad and how it might fit in with the needs of the developer and startup communities. It was a great opportunity for me to think through and quantify how Squad has changed the way I think about development, how it’s affected our team’s development cycles (since we always use Squad to work on Squad), and ways other teams can incorporate collaboration into their culture. Check it out on the Gun.io blog or find it reposted after the break!
I’m Hillary Elmore Cage, CEO of Code Together in Bloomington, Indiana. Code Together started as a “home sprout” out of Bloomington-based incubator, Sproutbox. Since 2011, I’ve been running it and trying to grow it into something even cooler.
Code Together has two products: Squad Edit and our brand new product Treaty. Squad Edit is a browser-based, real-time collaborative code editor, and Treaty is a real-time collaborative text and document editor plugin for third-party applications. Squad, launched in October of 2009, had a complete overhaul in August of 2012. Treaty launched on January 29th of this year and is currently in private beta. While we have a few advisors who keep us on track and push us to continue innovating, on a day-to-day basis, Code Together functions as a duo of developer Ben Serrette and me.
We’re focused on developers’ needs for both products. While Treaty is meant to be integrated with other applications via our API, Squad is the product we built to make some of your day-to-day tasks easier. Interestingly, we used Squad to rebuild Squad (and Treaty) – so our team is well-acquainted with ways Squad helps to streamline the development process.
For me personally, there are two benefits to Squad. First of all, I’m not an expert developer. Ben is the expert, and I do the design-type stuff that would be a drain on his valuable time. As a non-expert, sometimes I have questions about the code I’m working on that Google just can’t answer quickly. Since Ben works from home, I can’t just walk over and ask him why my rollover effects aren’t working, or why a div has disappeared. Instead, since we IM all the time, I simply grab my workspace’s “Share” URL, send it to him, and he joins me right in my Workspace. He can see all the files I’m working on, so when I tell him where I think the problem is, and he takes over, and generally fixesing the issue pretty quickly. When we first started working on Squad, we weren’t used to its capabilities and would sometimes revert to sending snippets of code over IM. Using Squad is much more efficient! The chat function within Squad means we don’t have to switch back and forth between IM and the browser window, either. Using Squad has saved me many hours, as well as headaches.
I’ve found that this expert/non-expert pairing is quite common among Squad users. Usage patterns and other data suggest that many of our users work together in pairs or groups with differing levels of ability. Of course, this is often the case on any project, and Squad makes it easier for non-experts to ask for help and for experts to provide it in a timely manner that is also less disruptive to their own work.
The other Squad feature that has really changed the way I interact with our code is the Git integration we added in August. The SimpleGit panel we added allows me to add repositories quickly, and then perform all the common git functions without leaving the browser, switching to a terminal, and then switching back. If that’s in your workflow, it doesn’t seem like too big of a hassle. When we added the feature, we didn’t really anticipate what a welcome change it would be. The ability to commit, pull, merge, etc., from the browser keeps me in context and helps keep me focused.
So how can Squad help you and your team work better together? Collaboration is key, so the first step is to consciously add more collaborative time to your workflow. We know that most Squad users who work together sign in pretty much simultaneously, meaning they’ve planned their collaboration session and are working on a specific problem. If you are used to working pretty autonomously, it will seem strange at first, especially as you work out how to collaborate with a developer of similar skill to your own. While you don’t need to follow strict pair programming principles (Squad can help with that, though, if you want!), it can be worth it to start by setting aside 30 minutes to commit to being in the same Workspace and working on the same problem together.
In a larger team with some skill disparity, setting aside time to mentor—or be mentored—can be extremely beneficial to both parties, as well as the team as a whole. As with collaborating with a developer with similar skills, committing a specific amount of time to the activity can help get the ball rolling, as opposed to simply waiting to be asked questions. Mentoring and working together helps build team cohesion and enhances knowledge transfer between team members.
Whether you and your coworker are in the same office or on different sides of the world, working together like this can change your perception of the problem and the available solutions. Starting in small, finite bits makes the change more palatable, and Squad’s smooth real-time sync helps workflow naturally. Squad can handle large teams; we did some testing with a few computer science classes at Indiana University and even with an entire class (up to 35 students) signed into one team account, they never broke the real-time collaboration.
If your team size fluctuates—sometimes including outsiders such as freelancers—Squad is a great way to keep everyone on the same page. The Squad Team account allows the administrator to grant FTP/SFTP access to the appropriate directories, and using Workspaces together can help bring the newer team members up to speed more quickly.
Squad initially enforced a strict pair programming workflow, with only one person able to type at a time. This proved too restrictive for most users, so we added the “simultaneous” mode, which allows all team members to work independently within a workspace. However, if you want to try pair programming, either for part time use as a mental exercise or full time as a part of your culture, Squad supports that by enforcing the rule of one “typer” and one (or more) observer.
While we all know that the stereotype of a hacker working alone in a dark basement doesn’t tell the whole story, it is true that many developers still like to get in the zone and code solo. Obviously there is a time and place for working alone, but research and my own observations suggest that making time for collaboration can have profound benefits. In almost all cases collaboration results in a more even distribution of knowledge throughout the team, helps newer team members acquire skills quickly, and pushes experienced developers out of their comfort zone into new ways of thinking. Since Squad facilitates collaboration for both co-located and distributed teams, it can be a valuable tool in your arsenal for writing better code, faster.
Thanks for giving me the opportunity to tell you a little about Squad and how we have seen it change development teams for the better! If you’re ready to check it out, sign up for a free account. I’m always looking to talk to more developers and find out how we can improve Squad and make it a better tool for you, so don’t hesitate to get in touch with us on Twitter or via email!