How 50 startups manage their code

49
1/2/15, 7:33 PM How 50+ Startups Manage Their Code Page 1 of 49 http://foundersgrid.com/code-management?utm_content=buer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buer Founders Grid Startups & Entrepreneurship Our Products Our Amazing Sponsors Recent Content We reached out to over 50 startups to ask them how they manage their code to Actionable Startup Advice. Delivered weekly. HERE IS WHAT YOU CAN EXPECT FROM US: The best startup/growth resources from around the web. Lessons we are learning building our own products. Exclusive access to our private community. Our latest blog posts and founder interviews. (You can unsubscribe anytime.) Learn How 50+ Startups Manage Their Code October 1, 2014 Home About Join Advertise Contact FOUNDERS CONNECT Daily sales leads via email. FOUNDERS PERKS Exclusive perks for startup founders. ACACIA TRADING BOT Easy and eective Bitcoin bot. NUREGO Automation for subscription businesses. STAY IN THE ZONE Try Provigil for enhanced productivity. VIDEOLANCE Find the best video specialists. GOODCALL Sales development automation. INVEST WITH EQUITYZEN Pre-IPO investments made easy. DOORBELL Gather in-app user feedback. CLOUDCANNON Static sites clients can edit. HIRED Get 5+ job oers in one week. DESIGNHILL Marketplace for custom designs. MITINGU Supercharged event registrations. Enter email address...

description

 

Transcript of How 50 startups manage their code

Page 1: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 1 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Founders GridStartups & Entrepreneurship

Our Products

Our Amazing Sponsors

Recent Content We reached out to over 50 startups to ask them how they manage their code to

Actionable Startup Advice. Delivered weekly.

HERE IS WHAT YOU CAN EXPECT FROM US:

The best startup/growth resources from around the web.

Lessons we are learning building our own products.

Exclusive access to our private community.

Our latest blog posts and founder interviews.

(You can unsubscribe anytime.)

Learn How 50+ Startups ManageTheir CodeOctober 1, 2014

Home About Join Advertise Contact

FOUNDERS CONNECTDaily sales leads via email.

FOUNDERS PERKSExclusive perks for startup founders.

ACACIA TRADING BOTEasy and effective Bitcoin bot.

NUREGOAutomation for subscription businesses.

STAY IN THE ZONETry Provigil for enhanced productivity.

VIDEOLANCEFind the best video specialists.

GOODCALLSales development automation.

INVEST WITH EQUITYZENPre-IPO investments made easy.

DOORBELLGather in-app user feedback.

CLOUDCANNONStatic sites clients can edit.

HIREDGet 5+ job offers in one week.

DESIGNHILLMarketplace for custom designs.

MITINGUSupercharged event registrations.

Enter email address...

Page 2: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 2 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

hopefully pass on some useful tips you can use when managing your codebase.Heaps of great responses, so grab a coffee, sit back, and let’s geek out.

A big thank you to the Raygun team for sponsoring this group interview. If youwant to build better software and keep your users happy, Raygun is an amazingerror tracking system for software developers. Get a complete overview of bugsand crashes that are affecting your users and fix them before they cause youbigger problems. Keep your software healthy and your users happy with Raygun.Get started for FREE today.

We use git, with a feature branch workflow strategy to manage ourcode base and push frequently to production (also through a git-based process). This has worked really well for us, but as we addedengineers and our development pace increased, the git commithistory started to look a bit like spaghetti.

There are best practices to any process, and you learn them throughexperience. For example, the simple practice of squashingcheckpoint commits and rebasing the feature latest changes to themaster branch prior to making pull requests has significantlyincreased the manageability of our code base.

Sandi Lin, skilljar

As a startup with a strong focus on technology, CommercialTribeknows how important it is to keep code clean and managedcontinually.

Our team manages a fully distributed, video-based social learningplatform, which means that clearly defined tools, a robust internalQA and tracking system, and strong global server capacity areactually vital to our growth.

To manage our code, we use a number of tools, but in reality, theorganization is driven through defined goals, roles, and tasks.Developers have a clear sense of what they need to achieve, howthey fit into the greater framework and efforts of their peers, and thebest practices and methodology to get there.

You can have all of the tools and applications in the world, but if youcan’t have the whole team use and embrace them, you will run intoproblems.

CommercialTribe operates with a variety of industry-standard toolsto make code management and workflows as simple as possible.Most important is versioning, keeping all efforts up to date, so thatthe entire version seamlessly melds all parts and features.

VIRTUAL ASSISTANTS5 Signs it’s time to hire a VA.

GROWTH HACKING101 Growth hacking resources.

ONLINE VIDEO12 Ways startups can levrage online video.

DESIGN TRENDS50+ Designers share trends for 2015

Page 3: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 3 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

We focus on JIRA, git, and gulp.js to drive our day-to-day codeoperations. JIRA helps us to maintain a consistent and reliable issuetracking and QA process, while git is the versioning control utility ofchoice.

Gulp is our task runner, helping to reduce developer time spent onthe build process and increase productivity. As with most of ourpeers, we also drive our server capabilities through Amazon.

What do you wish you had known before that you know now?

Start early! In the first few months and weeks of starting a newdevelopment project, it is easy to let the excitement get the best ofyou. If you take the time in the beginning to really get a sense ofwhat tools and practices you will need to keep code and any processaligned and defined, it will pay great dividends when growth reallyhappens.

Overall, align your sales and marketing, train your sales team toamplify tribal knowledge, make sure your developers and projectsare constantly systematic, and embrace growth with a clear visionand strong sense of order! ”

Paul Ironside, CommercialTribe

We are developing our startup using Ruby On Rails. I believe thatRails still has a lot to offer startups in terms of flexibility andproductivity. We’ve been through numerous iterations in terms ofservers and utilities to run the code.

We first started by deploying our app on the JVM using Torqueboxand JRuby but found it lacked a lot in terms of websocketcommunication, which we use extensively to deliver new leads andcalls to our chrome extension.

After than we moved back to MRI and the rainbows web server,using it’s eventmachine support to host faye inside our rack stack.After making the jump to Rails 4.1, we were able to switch topassenger which has improved our performance and serverutilization.

As far as hosting, we have been running everything on DigitalOceandroplets and using Google’s cloud storage to host customer assets.

In terms of managing the codebase however, we’re mostly sublimeusers, and use the git command line to manage version histories. Westarted using BitBucket from Atlassian but found the UI and UX to bea bit clunky and moved the codebase to Gitlab’s cloud hosting.

Outside of hosting, RSpec is an invaluable tool for managing yourcode base. We recently did a large refactor of our code base, moving

Page 4: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 4 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

all the business logic out of our models and into service objects.

Having a solid test suite really sped up the process and gave us theconfidence to make such a large refactor happen quickly.

We use MagnumCI as our constant integration system. If you areunfamiliar with a CI system, it basically works like this. We have hookon gitlab that pings MagnumCI every time we push new code to ourmaster branch.

MagnumCI then checks out the code, and runs a build script that wegive it. This usually means running RSpec and ensuring the buildpasses, but could be much more complicated in other projects.Having a good CI platform is almost as important as having a testsuite.

Now no matter what, before a new build gets deployed toproduction, we make sure that we have the Green light fromMagnum.

Another important thing we’ve found that helps with a code base inthe wild is a solid Exception/Error tracking system. In the past we’vei’ve used honeybadger.io and airbrake, but with being abootstrapped startup we decided to go barebones, and deployedErrbit to a heroku instance.

It actually has a very nice interface for seeing backtrace, settingreminders and can be configured to hook into a number of services.We run a lot of our auxiliary services like this on free Heroku dynosto keep costs down.

Finally a good team chat server is super useful. Some great optionsare Campfire, Slack, Hip-Chat, or what we use now IRC. Again we takeadvantage of free heroku dynos and a custom buildpack we createdto host an IRC server on heroku.

All our services, gitlab, magnumci and errbit will report errors to ourIRC channel to make everyone aware of issues that come up, newcode deployments, or CI build status in real time. Its really a greatway to keep everyone in the loop without spamming them withemail.

Justin McNally, LeadpopHQ

CodeSpark is building an iPad game to teach kids about computerscience. We are a small and often distributed team working inUnity3D. We have an SVN repository for all code and assets, with anorganized directory structure separating audio, scripts, textures, etc.

Our repository is hosted on Assembla, with additional local backups.I use Cornerstone as a visual SVN client on MacOSX and TortoiseSVN

Page 5: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 5 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

on Windows. We manage our coding tasks on Trello using prioritycolumns separated into two-week sprints.

We avoid branching, preferring instead to use runtime configurationfiles or compile time flags to turn features on and off. This methodalso allows for easier A/B testing. We do not have an automatedbuild setup yet, but plan to as the team grows. I’ve used Jenkins andTeamCity successfully on previous projects.

I’m a believer in code reviews and have practiced it religiously onlarger teams with live products. Since our current team is small,experienced, and moving fast pre-launch, we generally only reviewthe trickier sections of code and most bug fixes.

We have a standard coding style for indentation, where to putbraces, etc. Similar to the famous broken windows theory, I find thatclean, professional looking code tends to make everybody moreresponsible coders.

Joe Shochet, codeSpark

Our codebase is managed via github. We use pull requests for allchanges, and use those PRs as our mechanism for code reviews. Onlarge features, we will use sub-branches into a feature branch so thatwe can incrementally review more digestible-sized pieces.

Overall we’ve been very happy with this approach.

Seth Pollack, Rival IQ

We’re using git as version management tool in addiction tobitbucket.org to store our repositories.

We’re trying to follow an agile management approach and we find inTrello a simple and lean tool to track our activities, in addiction withRedmine, used mainly for defining milestones and issue tracking.

Our startup works on a mobile product using mostyle Ruby andObjectiveC languages.

Other useful tools we use everyday are:- New Relic- Digital Ocean- AWS (S3 + CloudFront and EC2)- Testflight- Flurry

We started using new relic recently and it helped us a lot for trackingperformance issues, slow queries, etc.

Page 6: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 6 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

It think we would have saved a lot of times finding issues andbottleneck with such a tool if we have started using it since thebeginning

Davide Cenzi, Needle

How do you manage your code base?

We manage our code base using Git (a distributed version controlsystem) that is served by Atlassian BitBucket on the cloud. Every newcommit to the VCS triggers Continuous Integration build in order toensure that code can be integrated and the new commit does notbreak existing functionalities.

What systems or tools do you use?

Git, Jenkins, SourceTree, BitBucket

What do you wish you had known before that you know now?

We’ve been adopting GitFlow in order to bring some workflowstandards to our Configuration Management process. Previously,Configuration Management and releases were not managedproperly and caused some problems especially during the periodwhen we needed to do quick releases to capture businessopportunities.

Henry Suryawirawan, Einsights

We are big fans of Node.js at Lever. One of the greatest things aboutNode is its simple but very powerful dependency management andnpm.

At first, we checked our node_modules into Git, but this became amaintenance nightmare as widely used dependencies had to bemanually reinstalled and updated across multiple services.

Since then, we’ve switched to keeping private modules in a privatenpm repository. We also have many open source projects that wemaintain, including http://derbyjs.com/. For these, we publish to andinstall from public npm.

When we do a build, we use Docker to make sure that the image isconsistent across different server instances, and we keep a log of allof the versions that npm installed at build time.

This gives us the stability of knowing what code we are deploying,safer rollbacks, ability to see the diff when modules have updated,no extra cruft being checked in to Git, and a much easier path toupgrade widely used modules across many production services.

Page 7: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 7 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

For more detail, read our full blog post.

Nate Smith, Lever

We manage our code base through github pull requests, travis-ci,and custom rolled linters.

Linters are a series of bash scripts which are executed in a Travisstep. They do mostly simple things like grep for `.only(` methodscalls in javascript tests (which is a way of excluding the run to runonly a single test), or debuggers or similar which are often easy tocheck in.

From a product perspective, we use sprint.ly for managing tickets.

Various other tools we use:- coveralls- travis- github- sprintly- recordit (screencast to gif software)- google hangouts- google docs

Happy to answer more in depth, but struggling for a bit of directionon what you want. Please feel free to email me at the listed address.”

Justin Abrahms, Sprintly

We use GitHub for source control which we love. We break up ourcode assignments by feature and frontend/backend. We developnew features on new branches and push them to GitHub so anotherdeveloper can grab the code and add the frontend/backend or testthe code.

Our full stack is Ruby on Rails, PostgreSQL, coffee script, haml, SCSS,Redis, Heroku.

We follow agile development methods and try to push out severaldeploys per week, gather customer feedback and iterate quickly. Weuse Trello to prioritize, assign and keep track of feature developmentand bugs.

Karl Gusner, Good Audience

Page 8: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 8 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

When we first started out, we didn’t have a single softwaresubscription – everything was open source and hosted on our ownserver. So we used Gitlab instead of Github, Jenkins CI instead ofCircle, tried both Kunagi and YouTrack instead of Pivotal Tracker, etc.

If you’re bootstrapping, this can make a big difference. Do your duediligence, though, before choosing a solution and decide if it’s worththe extra time, maintenance, and risks you commonly face with freetools.

We’re still using some of the free tools, but others we have migratedaway from, mostly for the benefits of cloud/hosted solutions andless hesitance to pay for convenience.

Andrew Schorr, Grata

JIRAMercurialJIRA AgileBeyond Compare

Alan Chaney, Bitvore

We use :Bitbucket as a Git repository for our code.Jenkins for Continuous IntegrationCucumber for automated testingCalabash Android/Xamarin for testing with device virtualizationJIRA as well as Trello for Agile development process management

For development :Maven and Eclipse (Android/Java)Xcode/TestFlight (Objective-C/iOS)Canopy/Eclipse for PythonEclipse for PHP

1SDK Inc, 1SDK Inc

We use a Ruby framework.Our infrastructure is on AWS

We use Pivotal Tracker, github and codeship for continuousintegration

Elie Toubiana, CardFlight

Page 9: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 9 of 49http://foundersgrid.com/code-management?utm_content=buffer555…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

“How do you manage your code?

Our day-to-day development process consists of planning, coding,quality assurance and release. Unless it is a critical fix, we usuallyplan weekly development sprints to implement a feature /functionality.

During the planning session the tasks are divided into some logicaldevelopment work pieces, which could be evaluated in time effort of1, 1/2 or 1/4 work days. After we have this on our board, each of thedevelopment team member takes an individual task and proceedswith the coding work.

After the work is done, the code changes are firstly tested out by thedeveloper locally on his workstation, afterwards pushed to the coderepository. Before merging the code to the master code branch thecode is firstly reviewed by at least one other developer and either he/ she leaves some comments for clarification or with a modificationsuggestion, or is approved and so merged with the master code.

After this is completed, the code is pulled to the servers of thedevelopment environment, where all the team members can test outthe added code piece, whether it is a fix, a new feature orfunctionality.

Lastly, when all the additions form the result of the planned sprintthe code is deployed in the pre-production environment, where finaltest are done with real database copies and on acceptance it goeslive by deploying the modified code on the production systems.

What systems/processes/tools do you use?

For the development coordination we took the Scrum practice toplan the sprints and achieve the continues development andimprovement for our product development. Going more technicalour product is mainly built on PHP, so everything that we findefficient and what increases productivity always are in our spotlightfor use – frameworks, classes, good source code examples foundpublicly.

The developers on their workstation are using the tools of their ownchoice – not the tools, but the result is what matters most to us. Andafter we have what to show to the world, we publish our product onthe servers, which are hosted in the Microsoft Azure cloud at themoment.”

Sarunas Legeckas, PlaceILive

Page 10: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 10 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

As far as overall project management goes, Heyo typically tries tokeep one repository of core library code per language we use andone repository per application. Where an application can use manylanguages and produce many builds.

Our application repositories are typically structured to house manyservices which act as a root sub-project in a repository. Each serviceis written in a single language and uses its languages tools formanaging its dependencies, test runners, builds, deploys, and otherbells and whistles typically needed to manage the life-cycle of aproject.

If a service ever has some code that needs to be shared with otherservices, those modules are typically rolled into the language’s corelibrary so that all services can have access to the functionality.

Although we are not quite there yet, we plan to start versioning thecore libraries so that we can safely make updates and not worryabout having to update ever single dependent service.

Heyo uses a pretty standard workflow with git. As far as tools areconcerned, we mostly use git on the command line in conjuncturewith github’s pull requests for code reviews and triggering ourautomated tests which are ran via Travis CI.

We manage projects and track defects using Fogbugz. We start a“”project”” for each repository, a project for tracking customer servicerequests, and a project for tracking defects sourced from in housequality assurance/control initiatives.

With global milestones we can coordinate sprints and releasesacross all projects. To provide some rough real-timeish updates tothe rest of our team we use the Kanban plugin.

For planning we typically take a look at the past few months worth ofcompleted work and roughly determine the team’s weekly (oursprint length) capacity. Stories are sourced from each fogugzproject’s product backlog.

Acceptance criteria and story priority are both the responsibility ofthe product owner of a project; a product owner can manage manyprojects. Once the product backlog is locked for a sprint, seniordevelopers look over most of the top stories and write in somerough implementation notes.

The development team then does some estimation using ourweighted story points. Once acceptance criteria, priority,development notes, and estimations are in a sprint is compiled foreach project.

Coordination between teams to keep the entire platform stable iskey when building sprints. These processes and tools help to keepHeyo focused and aligned with our goals as company.”

Page 11: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 11 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Eric Bittleman, heyo

“We use git for version control across all of our code bases (wecurrently maintain 4 websites, an Android and iOS app for ourtherapists and an iOS consumer app). All of these are hosted onBitbucket – why did we not use GitHub? Because Bitbucket give youan equal feature set – for free (always important for a startup!)

We run a feature/bug branching strategy – all of our issues arereported into our JIRA on-demand instance (we used to work in alarge-scale corporate environment and decided JIRA and Confluencewere simply too valuable to miss), linked to our Bitbucket instancefor easy branch creation and auto-referencing back from commits tothe related issues.

We have about 30-40% automated test coverage across our web &server-side code bases (all end-to-end NodeJS), sitting on top of amocha/chai framework and a small amount of selenium-webdriverautomation.

Once we are happy with a feature/bug branch, we have codeship.iosetup to automatically run our full test suite upon pushing to anybranch. This replicates a full environment, including multiple neo4j,redis and elasticsearch instances.

We then perform smoke and feature testing within our stagingenvironment, and when happy this gets pushed to production. Ouruse of Heroku for most of our web-processes makes one-linedeploys incredibly quick and easy.

For our mobile apps, we have a number of test devices to hand –once we’re happy with how any updates perform in the simulator,we push out builds linked to our staging environment to our testdevices to perform feature-testing upon, and when happy we pushout a production build to our live devices. We use testflightapp.comfor iOS distribution (sitting on an Enterprise iOS license) andtestfairy.com for Android distribution.”

Giles Williams, Urban Massage

We follow the agile development process, with scrum every morningand short short one week sprints. Each sprint ends with a releas to astaging environment every Friday night. The sanity tests are runduring the weekend on a smaller version of our network, and if alltests pass, we release the previous week’s build to production onMonday evening.

We plan our sprints every Monday, based on a roadmap that spans

Page 12: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 12 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

the next 3 months or so. We try to make every sprint or every fewsprints have a major theme, so our team have a sense ofaccomplishment and know they are working towards concrete goals.

We use Team City as our build server and YouTrack as a scrumboard.

We use Github for version control and Github’s pull request featurefor code reviews. We do code reviews religiously to enforce qualityand consistency across of all our code.

Tina Denuit-Wojcik, Enplug Digital Signage

“Processes:Agile Development

Tools:JiraVagrantPuppetLAMP StackRedisMemcacheElasticsearchRabbitMQ”

Josh Holat, StageBloc

Version Control

For version control, we use Git/Github. Pretty much the norm thesedays.

Agile Management

We use a couple of tools here: Pivotal Tracker to organize things andprioritize tasks, and Git Flow as our workflow tool for all features andreleases.

We are looking into moving towards Continuous Integration though,so Git Flow may have to go away, or we’ll use some modified versionof it.

Testing

Rspec and Cucmber for Rails. PHPunit for our PHP stuff.

Deploying

Capistrano and Cloud 66. Capistrano is used for some of our smallerapplications, while Cloud 66 is used to manage our major

Page 13: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 13 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

applications and manage our servers.

Ian Fosbery, NMRKT

We manage our code using git, github, and conventions. The mostimportant convention is that master is always deployable toproduction and deploys are cheap (one command, do them early, dothem often).

Most development work happens in feature branches and we striveto make code reviews very small (usually only one or a few commits).This means we don’t use pull requests. By the time we are merging abig feature branch into master several code reviews have happenedand all tests are passing.

We have fairly comprehensive test suite. We call all of our tests unittests, but they are all integration tests in one way or another — weseldom go out of our way to test some piece of code in full isolation.

We use github issues to track bugs. We triage these once a week andevery developer on the team has at least one scheduled sessiondevoted to working on the bugs each week.

Our github account is also integrated with our iDoneThis account; asummary of how many commits to each branch is automaticallyincluded as a “”done”” or accomplishment and shared with the restof the team. This kind of asynchronous communication is veryimportant to us as a distributed team.

We keep track of technical debt by having a list of “”cleanups”” to doat some point. The idea is to think of the cleanups like we do of bugs:have them triaged and schedule a time for every developer to workon them, but we haven’t found the time to put that process in place,yet.

Walter Chen, iDoneThis

There are a number of tools that enable us to build the KloudlessAPI, the storage layer for the cloud.

When it comes to managing code, we use Git for version control andGitlab, the open source clone of GitHub, as the central way tomanage code, bugs, merge requests and code reviews.

Another member of the team reviews each merge request made onGitlab. This process helps ensure a high standard of code quality andincreases the team’s awareness of different sections of ourcodebase.

In addition, we use GitHub to host and share open-sourced

Page 14: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 14 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Kloudless SDKs for Java, Android, iOS, NodeJS, and Python. Alsoavailable on GitHub are open sourced UI tools such as the FileExplorer and Authenticator JS libraries. These tools enabledevelopers to get started on the Kloudless platform within minutes.

For deployment purposes, we use Fabric, a python-like orchestrationlibrary to script actions on remote servers. Prior to deployment, wedo some automated testing and combine it with manual testing. Ifwe need to rollback, we simply revert to the previous version beforere-deploying.

Our server and system configurations are managed via Puppet.Webhooks on our Gitlab server automatically deploy code to othercomponents of our infrastructure and lets Puppet know that adeployment has been initiated.

Vinod Chandru, Kloudless

We use NetBeans as IDE and the code base is maintained on aGITHUB repository. All the developers add their code to thiscentralized repository which is reviewed & approved by the lead andpushed to test environment. After UAT, the code is deployed in theproduction environment.

Sarvesh Agrawal, Internshala

We use GitHub for everything that has to do with code. I’m used toPhabricator for code reviews from my time at Facebook, and Iimagine we will start using that once we grow our technical teambeyond us founders. GitHub is good enough for that for now though.

In order to be able to move as fast as we want, we make sure toautomate as much as we can of the pipeline, from checking in codeto deployment.

We use a combination of Jenkins and XCode Server for continuosintegration. All our tests get run on each commit, so we instantlyknow if one of us accidentally broke something.

We have built an amazing tool for cloud provisioning anddeployment. It lets us do everything we need with one click insteadof having to spend lots of time setting up keys etc. We hope to makethis tool available to the public at some point.

Torbjørn Morland, Memkite

Page 15: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 15 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Managing code is hard business; fortunately, the tools alreadyavailable allow us to spend more time on the funny part of the tradeinstead of dealing with conflicts, unexpected bugs or pure noise.

At Wazza, our stack is happily composed of a lot of differenttechnologies ranging from the normal stuff to more exoticlanguages, frameworks and architectures. Our codebase is huge butfortunately, git comes to the rescue and Github is used to hosteverything.

Every issue, feature or improvement is tracked on Trello whichautomatically notifies the team in Slack. After being carefully tested,all the code is committed to the upstream branches using PullRequests. A lot of this work is also validated using ContinuousIntegration techniques with Jenkins.

Duarte Barbosa, Wazza

Our codebase is in PHP and Javascript (For frontend and someservices in nodejs). As for code/directory structure:

- PHP: We follow Laravel’s folder structure.- Javascript/Frontend: It’s RequireJS, so everything is a module, andthere’s a page specific “”controller””.- Javascript/Node: CommonJS, the services are isolated and havetheir own components.

We use GIT + Gitlab to store source code. We do merge requests andcode reviews in Gitlab. We also use it to store code snippets.

We follow this philosophy of GIT branching (http://nvie.com/posts/a-successful-git-branching-model/), but the develop branch is less usedsince we prefer small incremental changes because it makes it easierfor code reviews.

We keep everything related to the website in 1 repo. It makes iteasier for deploying, especially with the services.

Our tests are still small so each developers runs the test locally/onstaging before the merge requests with master. We’ll probablyintegrate some sort of CI system one day.

Ansible controls our deploy, provision and configuration. The deployplaybook first builds the release, then SSH into all our servers tofetch it and replace. It also detects changes in services code (via asimple md5 difference), and reloads/restart if needed.

Logs are centralized using Kibana + Elasticsearch.

Makara Sok, Player.me

Page 16: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 16 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

TransferGo are typical of many forward-thinking technologycompanies, we use Git as our core source control system and we usefeature/topic branches to develop new features, as well as changerequests and bug fixes.

We also apply key test-driven principles to our software developmentcycle using tools and frameworks such as PHPSpec.

We also have strict code review processes in place. After ensuringthat each unit of work is discussed upfront and understood by allinvolved, we encourage developers to first stub and flesh out theiridea’s surrounding implementation ready for several team membersto comment and review before any serious implementation is done.

At the end of their work we also use the tried and tested pull requestworkflow to catch any post-implementation issues.

As we have a small team, we need to free them from maintainingcomplex systems and keep them focused on delivering product. Toenable this we utilise cloud based ancillary services likeGitHub/Bitbucket to host our Git repositories; Scrutinizer CI to powerour code hygiene, code standards, and validation of our platformthrough executing unit/integration tests; and, JIRA Agile & Confluenceto drive and manage our communication and workflow.

All of the above is also tightly integrated into the developers IDE’s toreduce cognitive load on the standards and procedures they need toprocess and remember. This allows our developers to focus on thetask in hand.

Jon Webb, TransferGo

We use Github for source code management. We use Jenkins for ourcontinuous integration build and deployment processes. We useagile sprints to build out software. At the end of the sprint code isbranched and pushed to production. Fairly standard agilemethodology.

Franz Garsombke, Rachio

The Wedgies code base (I love saying that) is predominantly NodeJS.Here are the tools and tech we use to manage our code and assets:

GIT/Github – Centralized repository for our Decentralized VersionControl. Just using GIT isn’t enough though. You really need aprocess/philosophy around how you manage code that is underdevelopment and code that is ready to release.

What you don’t want is to end up in a stage where you can’t push a

Page 17: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 17 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

bug fix because there is code in the same branch that isn’t ready tobe released. To help with that we use…

GitFlow – GitFlow is a toolset that sits on top of GIT and implementsa model of feature/hotfix/release branches that make it easy for ateam to continue working and releasing without waiting on eachother.

Trello – this is where we keep track of what we are working on. Themost intresting thing we do here is the last column in our devworkflow is called “”Shipped Week X”” where X is the current week ofthe year (right now is week 40).

At the end of the week, this entire column gets moved to a newboard called “”Shipped”” and a new column called Shipped Week X+1gets added to the dev Trello board. This allows us to look over whathas been shipped a week at a time for the entire year.

Wedgies – Shameless plug, but we use Wedgies.com to let our usersvote on what features they are excited about seeing next and usethat to influence our roadmap.

Slack – Slack ties everything together. We have a developmentchannel for conversation and for webhook notifications from Github,Trello, New Relic, Papertrail, etc.

Jimmy Jacobson, Wedgies

Cloud hosted git via aws instance. Cloudforge/Asana for teammanagement tasks

Siddharth Gupta, InviteReferrals

Back in the old days I remember calling out across the room toanother co-worker “”Are you editing style.css””? They were dark days.Two people writing over one file in a project was a total cataclysm.

These days? It’s a whole new world. With private GitHub repositories,we have an automatic deployment mechanism with AWS. ScottSanders, our Digital Director, wrote this elegant staging systemwhich spins up remote staging repositories with LAMP environmentsin one click.

Murray Bunton, AGENCY

Page 18: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 18 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

We love using git to manage the different features we try to pushout. Along with Github Issues, we are able to track down bugs andimmediately release fixes to specific branches of code.

Michael Scaria, Fortheon

We’re so fortunate that only one person touches our code (the sameguy who designs it, too). But, we do pay for GitHub, which washelpful when we were working on Pushpin for iPhone(http://pushp.in).

Zach (co-founder) would write the code, Jeff (iOS expert) wouldreview it and send it back, Zach would clarify, and then Jeff would fixor merge it. This process was a bit painful as both of our engineerswere trained in wildly different environments (DIY Hacker vs.Stanford CS Master degree), but it led to a much better customerexperience. We’ve had only a handful of crashes nearly a year afterlaunch and 20% monthly actives.

Jordan Crawford, Cursive

GoogleDocs. We have three sheets, “Do Now”, “Do Tomorrow”, “Do atSome Point”. When something is done, we toss it into a pile ofcompleted stuff and keep moving. We usually end up adding somuch stuff to “Do Now” that every few weeks we shift everythingback. “Do Now” becomes “Do Tomorrow”, “Do Tomorrow” becomes“Do at Some Point” and “Do at Some Point”…. well you can guesswhat happens to that guy.

Ashwin Muthiah, Easely

Spacious primarily uses Github to manage its code repository. Wehave multiple developers working on our codebase at any one pointso managing code conflicts is very important for us.

We have a clearly defined process which involves a developer takinga current copy of the codebase and creating a “”branch””. When thedeveloper has finished making his/her changes, they initiate a “”pullrequest”” which puts the code changes into a holding area for reviewby another developer in the team.

Once the “”code review”” has been completed, we “”merge”” the codeback into the master codebase by essentially inserting the new codeinto the master codebase and resolving code conflicts manually.

This final step is largely automated but human involvement is

Page 19: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 19 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

required when a code change conflicts with another change made tothat same section of the code after the date of the original code copy(branch creation date).

Asif Ghafoor, Spacious

Github keeps me sane. For writing, I use Rubymine or Textmate.Rubymine is a bit overkill but I’m accustomed to it. No other toolsnecessary. Just push to Heroku and done.

Tristan Kromer, GrasshopperHerder

“CleanClub.co is a NodeJS and AngularJS app.

We use grunt to automate a lot of our processes, such as sasscompiling, jslinting, template preprocessing and minification.

We use npm and bower to manage various packages.

Our server code (nodeJS API) and client code (angular app), whileliving in the same github repository are kept in separate directorieswith their own package.json files, gruntfile.js, and readme.md. It’sreally good to have a clear separation of code, even if it meanshaving to run processes in 2 or more terminal windows.

We have 3 sites: Preview, Staging and ProductionPreview is used to demo specific branches to non-devs.All 3 sites run Monit to keep NodeJS running.

Our deployment process is as follows:1. We commit/merge to master2. Our Staging server runs Dokku. So it automatically pulls frommaster branch.3. Staging runs all the necessary processes (e.g. grunt tasks)4. We test to see if staging is ok5. If all is good, we rsync the files from Staging to Production”

Don Masakayan, CleanClub

Cost is big things for small startup like us, mostly I use open sourcetools that involves quite a bit of setup and a little ongoingmaintenance but you’ll own your own infrastructure and not be tooreliant on any third party.

Heru susanto, Bootstrapmade

Page 20: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 20 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

I’ve got Coda 2, Sublime Text 2, and Tower loaded on my Mac. I useBeanstalk to host the code I push to Heroku.

Drawk Kwast, Analytics Connect

At Bornevia, we manage our codebase within a bitbucket repositoryshared with the whole engineering team. We setup our in-houseinternal backend service-oriented system with REST-API structure tohelp organize separate modules used uniformly throughout multi-platform applications that we have or will plan to develop.

This way it makes our software development processlanguage/framework-proof (since everything translates to aparticular data format) therefore easier to scale and organize ourteam in the future.

Benny Tjia, Bornevia

At Harmonia, we develop using git and github as our source control,and we rely very heavily on rebasing (particularly interactiverebasing) to keep each commit clean and easy to understand.

We do use feature branches when working on larger changes,because this makes it easier to switch back to the deployed branchfor bug fixing, and it also makes it easier to prototype ideas and thenthrow them away when we are done.

For deploying code, we use a great library we worked on with GoFree Range called “”recap””, which is a set of capistrano recipes fordeploying code that uses various features of git to make deployssuper-fast.

For example, it avoids running migration tasks if the migration codehasn’t been touched, and avoids rebuilding assets if those fileshaven’t changed since the last deploy.

James Adam, Harmonia

We use git for versioning needs, and use gitlab/github for repositoryalso use some tools such ah sublime text, capistrano, Heroku, AWS,etc to support our development needs.

Selim, 41studio

Page 21: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 21 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Git + Github + Waffle (for issue prio)

Paul H. Müller, adjust

We rely on git for source code management using GitHub asrepository service.

Paolo Perrucci, Snapback

Sublime Text. We do our best to comment out all code, keepinglinebreaks where they should be to make the code legibleb foranother coder.

Our systems are purchased custom from Chillblast PC’s. We are all in8gb ram running with powerful quad core processors.

We use programs for video editing (Vegas). PuTTy, Filezilla forfiletransfer, various Virtual Private Servers with the guys at DigitalOcean to provide our clients with super fast hosting!

Indesign for document creation, Photoshop/Illustrator for graphicworks, amonst a few other programs this is usually what we spendmost of our day with!”

Joshua Harrison, TRANSFORMIS

Use Git, branch accordingly. Write tests on complex logic, and applycontinuous integration.

Test manually before each release, write release notes. Test otherstuff as well, such as performance (using Yslow and NewRelic), andsecurity (against XSS and SQL injection), and cross browsercompatibility.

If high load is expected, use a stress testing tool, and make sure bothyour app and infrastructure can scale. Multiple scenario of seed datais helpful.

If a code best practice tool available for your chosen framework, useit. Some investors now do technical due diligence and they wontwant to see spaghetti code

Ikin Wirawan, Walden Global Services

Page 22: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 22 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

As being leader Python Django job recruitment service, Coreprinciple of Djangojobs.Net is “”Keep it simple””

OS – Hosting:We run Ubuntu Linux 12.04 (LTS) on Amazon EC2.

We Store the original versions of our static objects in one AmazonSimple Storage Service (Amazon S3) bucket.We use AmazonCloudFront to distribute them to several locations to serve to visitorsfrom all around the world.

Application Server:We run Python Django 1.6 Web Application Framework.We use Gunicorn as our WSGI server on NGNIX.

Data storage:We store data in our SQLite database which run in Amazon EBS.We use pngquant is a command-line utility and a library for lossycompression of PNG images to show our company logo imagesfaster on our main page.

Monitoring:We use PingoScope to monitor availablity of our servers externally.For Python error reporting we use Email reports of Django ErrorReporting.

Testing:We use separate VPS server to test our new feature developments.

Code Management:We use GIT source code version control system.

Sertaç Camcı, Djangojobs.Net

We’re primarily doing iOS development publicly (with Android andbackend projects in the works).

Systems-wise, practically everything we do it built on Mac. OS XServer with Jenkins (hosted in-house) for CI, GitHub for code andissues, Trello/gdocs for keeping track of progress. Slack for keepingin touch. Crowdin for dealing with translations.

Like everyone else in the startup-universe it seems, we’re Scrum-ish.Product owner, dev team, weekly cycles, etc. Sometimes more formalthan others.

Code doesn’t get merged in until someone performs a code review.

We automate as much as possible though, since humans are terribleat repeating processes. The code-base has been through quite a fewhands, so the test coverage isn’t/wasn’t where we’d like it to be, butthat’s improving as we revisit/refactor. But for things like App Storescreenshots, especially as we grow into new localisations,

Page 23: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 23 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

automation saves us (literally) hours.

On iOS specifically, we make use of open source as much as possible.We’re using CocoaPods to pull in dependencies. Shenzhen helps usbuild/distribute (via HockeyApp – also used for crash reports).

The production website is a static S3 instance, built using Mixture.

Joshua May, Clue

We are using SVN online in the cloud to manage our code, so ourdevelopers can work anywhere.

Handy, IndoTrading.com

Lime&Tonic is developed on the LAMP stack and employs Subversionfor source control. Netbeans as the preferred IDE (Our CTO was oneof the first team members at Netbeans prior to it being sold to SunMicrosystems in 1999).

Our development methodology is loosely Agile based, we haveweekly meetings where technical tasks are discussed andreprioritised according to the rapidly changing requirements of ourmarket place. Jira is used to track these development tasks as well asbug reports.

We have periodic code freezes where larger functional andarchitectural changes are worked on. In terms of handling supportwe have a team of first level support staff using Zendesk who passtechnical requests back to the developers.

The core development team are further supported by a UX expertand server administration personnel.

David O’Sullivan, Lime&Tonic

At Evercontact, we use use SVN hosted by assembla with a nightlybuild.

Philippe Laval, Evercontact

Shortly after I first started Vizually, I realized if this was going to workit was important to have systems in place, so everything ranefficiently for clients. I mapped out the whole process several timesover to figure out what made the most sense.

Page 24: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 24 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

We are WordPress based, so we only use and have to manage twomain themes for clients. That keeps things simplified on our end andallows us to work quickly and keep support issues to a minimum. Wekeep a log of code snippets, that saves time from having to figure outthe same issues over and over again.

We use Wordfence Security to immediately notify us of new updatesfor each site, which we promptly notify clients about and beginupdating the sites that we manage. The tools are extremely helpful,but having a process or system in place for everything is what keepsit all manageable and working smoothly.

Steph Russell, Vizually

Our platform is built primarily using Ruby on Rails. However, we’vegot tons of other technologies hooked in to make Jr.DevJobs moreuser friendly, scalable and of course run a lot faster. We’ve adaptedthese tools throughout time by responding to growing pains, talkingwith a our users, monitoring server logs and learning from othercompanies.

When we’ve found an area in need of improvement we investigatethe competitive products to determine which solution works best forus and then schedule it on our development Kanban.

Our developers test and code it by using ‘feature branches’ onGitHub. We then have a review of the code and resulting impact tothe application in our Sandbox environment. If we’re satisfied wedeploy it to Production on Heroku.

Some examples of what we’re using at Jr.DevJobs include:

Asynchronous JavaScript for our user profiles to avoid thoseannoying page refreshes when adding/updating information;ElasticSearch for our lightening fast, full-text job search; Redis andDelayedJob to run processes like submitting 1-Click applications andsending messages in the background so that our users neverexperience even the slightest flinch.

As we continue to grow we’re constantly evaluating ways to improvethe security, stability and flexibility of the platform as well as theoverall value we deliver to our users.

Hunter Meyer, JrDevJobs

We’ve built a content management into our platform to keep ourcode up-to-date. We update themes every month and keep work onUI updates locally with MAMP Pro and push up UI tweaks

Page 25: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 25 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

periodically. Our code is stored with Bitbucket and we manage ourrepository with Tower.

We’re working toward systematically analyzing how our usersinteract with our platform using Google Analytics, CrazyEgg,MailChimp, Olark Chat and Optimizely (A/B testing). The key is tointegrate all of these tools using one piece of code with Segment.io.

Cabell Maddux, GiveAndSee

Like this post? Why not share it with your network?

TweetTweet 139

← 68 Entrepreneurs Share Their Biggest Challenges Growing a Startup

10 E-Commerce Entrepreneurs Worth Following on Twitter →

Leave a Reply

Your email address will not be published. Required fields are marked *

Name *

Email *

Website

Comment

Post Comment

Sign me up for the newsletter!

338LikeLike

Page 26: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 26 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Home About Join Advertise Contact

Page 27: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 27 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 28: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 28 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 29: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 29 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 30: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 30 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 31: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 31 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 32: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 32 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 33: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 33 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 34: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 34 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 35: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 35 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 36: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 36 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 37: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 37 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 38: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 38 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 39: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 39 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 40: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 40 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 41: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 41 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 42: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 42 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 43: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 43 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 44: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 44 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 45: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 45 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 46: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 46 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 47: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 47 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 48: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 48 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer

Page 49: How 50 startups manage their code

1/2/15, 7:33 PMHow 50+ Startups Manage Their Code

Page 49 of 49http://foundersgrid.com/code-management?utm_content=buffer55…tm_medium=social&utm_source=facebook.com&utm_campaign=buffer