In dev.life, we chat with developers about their passion for programming: how they got into it, what they like to work on and how.
Today’s guest is Chris Fidao, a Software Engineer at UserScape. Chris is the creator of Servers for Hackers, which is a both a book and video series that provides programmers with all they need to know about server administration.
Location: San Antonio, TX, US
Current Role: Software Engineer at UserScape
How did you get into software development?
My father did graphic design and bought one of those tan, flat Macintoshes, a few years before 14.4k modems became a regular household item. If I remember right, it was a Quadra 610. This started me on building web pages, but I didn’t do any “real” (air quotes emphasized) programming on it! So I grew up working on HTML and CSS early, which I later expanded upon after graduating college and learning to program. I didn’t look for work immediately after graduating, instead I took about 9 months to learn to program and find smaller companies to apply for. I intentionally shied away from large corporations after some boring/terrible internships. Whilst I had a basic programming class in college (C++), I didn’t really learn what programming was then. So I ended up learning to program from lynda.com. At first, I was heavily using Flash with ActionScript 3, which is a really great language! I had a good introduction to typing, events and OOP which interacted with visual elements. It was a really great language to use while learning! I also learned PHP and MySQL basics on lynda.com too. I’d find the pace of learning too slow now, but then each video was a gem.
Tell us a little about your current role
I work at UserScape, developing on HelpSpot, doing technical customer support and working partially in DevOps in support of HelpSpot’s Cloud – our hosted solution for HelpSpot. One of the more interesting things I’ve had to do recently was to use Ansible programmatically to help provision servers. This listened for a queue job to tell it what server to provision, along with some variables that we wouldn’t know ahead of time, since every client has some unique information. This was interesting as I had to dive into Ansible fairly deeply and figure something out that wasn’t popularly being done. It’s usually run on the command line instead of from within code.
But my side projects keep me really busy too! The side projects have all gravitated towards servers and DevOps:
- Vaprobash, a series of bash scripts useful for provisioning (lots of) software on Vagrant virtual machines. The emphasis is ease of use and understanding, which is nice as a teaching tool (and to get pull requests!).
- Servers for Hackers eBook – This is a project I made that includes a 300+ page book, case studies and a few videos
- Servers for Hackers – Lots of videos on what programmers need to know about web servers. This is a little geared towards PHP developers but is has a lot of generally useful videos as well. The topics range from security, deployment, Vagrant, Ansible and a lot more.
- I’m also creating a series of video courses, starting with Deploy!, which will be all about developing a deployment strategy.
When are you at your happiest whilst coding?
Well, nowadays it’s simply when I’m actually coding, instead of doing the things I need to get to the point where I can be programming.
What is your dev environment?
I use a Macintosh since it’s the closest I can get to a web server without sacrificing the productivity tools I need (Office, Mail, Photoshop, code editors). I use Vagrant for developing on local servers and PHPStorm for coding in PHP – the shortcuts, code hinting, debugging and other features are too powerful to go without!
I mostly code sitting, using music to zone-in when I need to concentrate. Even though it doesn’t really prevent me from browsing or losing focus, I do find that I focus much better with good headphones and some music (the fewer lyrics the better).
What are your favorite books or resources about development?
I love Uncle Bob’s books on clean, pragmatic code. Some higher level books such as the Domain Driven Design books are overly heavy and in the end not relevant enough to my day to day work (which is generally in very small teams on projects with indefinite deadlines).
What technologies are you currently trying out or want an excuse to try?
Golang! I don’t think it’s a good language to build a web application on, but it’s great for system tooling or “services” (plumbing of a web application). Because I am mostly working on the “web” part of web applications, I haven’t had much time/need to dig into it. I also really want to find time to dig more into monitoring/logging tools (Nagios/ELK stack + Elastic’s new “Beats”).
When not coding, what do you like to do?
I play some guitar and watch movies, but my side projects keep me so busy that I can’t truly say I do other things.
What advice would you give to a younger version of yourself starting out in development?
If you find yourself telling someone that they “should” do something, consider what would convince you to go another route. Try to word advice as “what you would do” instead of “what someone else should do”. That change in mindset leaves you open to change your mind! The amount you don’t know is astounding – the context that someone else is working in, the technologies in play, if they need something long-term or short-term. If you don’t know the trade-offs between different technologies or decisions made in programming, then you don’t know enough to truly give the best advice. The best you can do is let someone know what you would do on a topic based on your current knowledge and understanding.
Thanks to Chris for taking the time to speak with us. Have someone you’d like to be a guest? Let us know @FogCreek.
Recent dev.life Interviews