Full Stack Journey Episode #004: Brent Salisbury

This month’s guest on Episode #4 of the Full Stack Journey Podcast is none other than Brent Salisbury, aka @networkstatic on Twitter. Brent is a long-time blogger, and is active on GitHub as well. Of course, his activity on GitHub should not be surprising, since Brent works for Docker, Inc., on the networking side of the open source Docker project (libnetwork). As someone who made the transition from full-time network administrator/network engineer to software developer, Brent is ideally suited to share some knowledge with listeners of the podcast.

You can download the MP3 recording of the podcast, or simply subscribe via iTunes. If your browser supports HTML5 audio, you can also listen the podcast here:

Show Notes

  • Brent is a long-time network professional who feels he’s “on the journey” toward becoming a full stack engineer.
  • Brent went from networking, to coding at Red Hat, then helped start Socketplane, and is now at Docker.
  • Brent feels that networking skills are incredibly important, and networking professionals may be in a great position as IT evolves.
  • The journey to being a full stack engineer isn’t a replacement for existing skills people have learned; it’s a supplement as part of ongoing growth
  • The trigger for Brent to evolve from networking professional to where he is now was hearing Martin Casado talk on some networking podcasts about software-defined networking (SDN)
  • Brent believes that “giving everything away” is a powerful tool; sharing information just encourages others to share, which benefits everyone.
  • Take the risk; admit you don’t know everything, and look to learn from everyone around you. Everyone has something to teach you.
  • Docker takes complexity and makes it easier; it’s one reason Brent is excited about Docker. Complexity is the killer, the barrier to adoption, and now that barriers are lower it’s easier to become a full stack engineer.
  • Simplicity is the “X-factor.”
  • Anyone who is worth their weight in salt in this field is curious—you need to broaden your horizons enough to know what to be curious about. Otherwise, how will you know what’s happening, or what to do?
  • Take a “macro-level” look at technology and how things are evolving.
  • There are lots of components, many of them open source, that you can use to build solutions that will change the world (or just your career).
  • Brent believes it’s possible to self-teach yourself just about anything
  • Go (the programming language) is one that Brent really likes—it’s readable, but compiles down into machine language.
  • For people just getting started, start with your organization’s pain points. The technology decision comes later.
  • Some places you can start:
    • Automate configuration changes
    • Understanding how networking works in a server (the session at DevOps Networking Forum on Linux networking was helpful)
    • Gaining some experience as a systems administrator
  • Networking (and storage to some extent) trails a bit behind some of the other technology areas, and you can learn from other areas (pay attention to the lessons of DevOps, for example).
  • MACVLAN and IPVLAN are really going to re-shape networking.
  • What would Brent have done differently in his journey?
    • Discovering (and using) community sooner/earlier in his career
    • Don’t second-guess your gut; your experience is valuable! Use your experience and knowledge as a basis for learning from others and adapting their approach.
    • Don’t let your ego get in the way. Your experience is valuable, but be open to learning from others.
  • Use the “Ivan Pepelnjak” test—if Ivan asks, “What are you thinking?”, there’s probably a good reason he’s asking that. Question the approach, iterate on it, but stay rational.
  • The barrier to entry for new technologies is lower now—get into the lab, try out some of these technologies. There’s nothing stopping you.
  • Brent’s learning style is one of “diving right in”: jump in, find code snippets, break it, fix it (repeatedly). Brent calls it “test-driven learning,” though he admits he’s not good at writing tests.
  • Snippets were a huge tool for Brent, and GitHub is a great source for finding code snippets.
  • When working with a modular language, code snippets enable Brent to take smaller chunks of code and assemble them into something larger and more complex.
  • Reading code snippets also helps you determine common coding patterns, syntax, code structure, etc. The first programming language is the hardest.
  • Python is also a good language for starting out. When you start needing performance, Brent prefers Go.
  • Brent’s keen on “cherry picking” the best parts of SDN—automation, integration with orchestration, provisioning—and applying those parts in a safe manner, at massive scale, in a way lots of people can benefit.
  • IPVLAN drivers are available (if you’d like to test them) in the experimental builds for Docker Engine.

Additional Resources

DevOps Networking Forum 2016