Skip to content

Instantly share code, notes, and snippets.

@cooncesean
Created March 14, 2014 18:59
Show Gist options
  • Save cooncesean/9554424 to your computer and use it in GitHub Desktop.
Save cooncesean/9554424 to your computer and use it in GitHub Desktop.
JMU Tech Talk from Guidebook: 3/14/2014

Intro

My Background

I'm a software developer at Guidebook and I've had about ten years of experience writing code for a number of different organizations.

  1. Larger companies -- started my career at CNET.
  2. Smaller companies -- started my own company with five guys called WhiskeyMedia and we grew it to about 30 people before a successful exit.
  3. Currently at Guidebook, I feel like we're right on the precipice of transitioning from a small start up of 30x people to much larger organization within the next few years -- its something that I am very excited about.

Tee Up

Since you're in the entrepenuership program at JMU, I thought I'd focus on a few technical challenges facing young startups and talk about how we have addressed these challenges here at Guidebook.

That said, I'm more into having an interactive conversation (feels more natural to me) -- so if you have any specific questions you want to ask, feel free to speak up and I'd be more than happy to answer them.

Nothing, ok - lets get into it - I want to talk two quick bullet points and how we address them at GB.

  1. Growing an Engineering Team
  2. How to Select The Appropriate Technology Stack For Your Business

Growing an Engineering Team

  • Hiring
    • What do we look for when we hire:
      • The ability to solve problems
      • The ability to communicate
      • Experience with our stack -> secondary
      • Culture fit
    • Crucial to strike the right balance between young, hungry devs + seasoned vets.
    • Healthy to have your experienced devs guiding the younger talent; likewise healthy to have your younger devs challenging the status quo with new design patterns, technology, etc.
  • Team Communication
    • Our challenges: Very distributed team; 2 remote offices; Many remote developers.
    • Tools and Processes we use to streamlinme communication:
      • HipChat: Glorified IM/IRC, but much more powerful.
        • Instant communication;
        • Private rooms to quickly debug problems with multiple developers;
        • Slick mobile app that allows constant contact with people on the go.
      • GitHub: A platform that provides a social workflow around version control of code.
        • Explain our workflow: master -> branch for feature/bug -> commit -> test -> Pull Request -> code review -> merge
      • Weekly Meetings: Get everyone on the same page --> discuss what we did last week/what we're planning to work on this week and discuss any potential blockers. I only bring this up as its important to do as the team grows.
  • Individual Growth (quick note)
    • Its important to grow your team not only in numbers, but as individuals as well - both personally and professionally.
    • Constantly challenge individuals with more resonpsibility.
    • In my mind, individual growth comes from:
      • Automony: Freedom and responsibility to make the appropriate decisions to get the job done.
      • Trust: Slowly earned by individuals as they deliver on time and under budget.
      • These two concepts build a self fulfilling cycle that makes for a happy and successful team environment.
    • On the software side, this is done by involving engineers in the product design process all the way through development and deployment. We use things like documentation, testing and code reviews to help build this trust between team members.

Selecting A Technology Stack

Startups face a number of large challenges and selecting the appropriate technology stack can play a large role in the success of any venture.

My hope is you have a technical lead on your team who can help with this process -- if not, I strongly suggest finding one. It's extremely difficult to start a company (in any industry) without any technical dna built into the fabric of the company.

When picking a stack or set of frameworks to solve the specific needs of your company I would look at two things: momentum and in house experience.

Momentum

Refers to the trajectory that the framework/language/hardware/etc is on.

  1. You want something that is mature enough to be stable and supported and has a large community around it.
  2. You always want something that is on an upward arc. ... Engineers always want to work on the hot, new shit; you will have a much easier time attracting good talent if you are building on some mix of newer technology.

In House Experience

This probably goes without saying, but you obviously want to select a set of frameworks that your team has some familiarity with; it wouldn't make sense to start using Node if nobody on your team had any javascript experience.

What We Use Here

  • Backend: Python and Django -> for our CMS. Tastypie -> for our API, which is a rich and fully supported 3rd party lib.
  • FrontEnd:
    • Android: Java -> I don't have much insight into the 3rd party libraries that team uses.
    • iOS: Objective C -> ditto.
  • Hardware: We use Amazon Web Services for everything and it has been a godsend. Very well supported and cheap. I would whole-heartedly recommend leaning on their infrastructure.

Hopefully that gives you some insight into how we handle some of these specific challenges at Gudiebook. I'll throw these notes up on my GitHub account if you want to take another look at 'em.

Questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment