Twilio's first support hire joins engineering
twilio.com
twilio.com
My first task was to add a dismiss button on a Javascript popup. I thought the task would be easy, but each page actually has dozens of files of code fitting together to make a page work– style sheets, controllers, distributed all around the code base. (…) Instead of being off-put by how long it took, or being overly sympathetic, he just said, “Yup. That’s what development is. It’s very frustrating until it works.”
I'm currently in a similar situation, working on a project with a guy who uses libraries and frameworks I know very little about and it honestly frustrates me. I've had other things to do on the project so far, so I've postponed digging into it.
But it makes me wonder if that's how things should be. Often you're fine once you're beyond the breaking waves of setting up your environment and getting a grasp on the codebase, but before that, it can be very frustrating… especially, when you want to implement something, that you theoretically know exactly what you want and what you need, and you get slowed down by some problem with library incompatibilities or what not.
I've recently had the pleasure to drill down (from C) to single machine instructions in my quest to understand why a conditional branch was seemingly having no effect, on an architecture that I couldn't debug on. As it turns out, the compiler would sometimes use a memory addressing scheme that wasn't supported on this particular architecture. I had to work around this bug by writing assembly that correctly accesses the memory.
It's incredibly frustrating when you end up at a point where the only abstraction (and seemingly faulty) layer below you is nanometer-sized transistors. And all the more rewarding when you reveal the actual problem and get to extend your knowledge.
(Of course, this doesn't really apply to all the ridiculous pain points that annoy us by design. Things like browser compatibility come to mind.)
A recent example would be when I was trying to set up my local environment with virtualenv, whose whole purpose is to make that easy. Everything seems fine but pip (Python package manager) was throwing errors. The culprit was that virtualenv creates Python scripts in the local directory with a hashbang for a local version of Python. The thing, it turned out, is that hashbangs don't work when there's a space in the path. And there was a space in my path because I wanted to use Box's sync folder which (stupidly I must say) is called "Box Documents". Now I know.
Long story short, the point is that I wasn't trying to debug virtualenv but had to dig deeper than I wanted into it just to get started on the problems I created. :)
Though you're right: just recalling this, I have a feeling of victory over the problem.
I'm really not sure how the two facts we see here -- of people working exceptionally hard to better themselves, and of a company going out of its way to help people do that -- have to do with a bubble. It's hardly a new idea that companies do better financially when they help their employees learn to do work that they couldn't do before, or to do it better.
As the technology community, it's in all our interest to help people learn things they couldn't do before. Twilio's story is one example. Other great ones include RailsBridge, PyLadies, the Boston Python Workshop, and PyStar. Let's do more of this!
It was only after the company was purchased by a company with a very different mindset did I realize that this wasn't universal. This makes me just love Twilio a little bit more.
I write code for a living, and even though no one has ever told me they weren't happy with my performance, the constant influx of new techniques, languages, algorithms, and systems in the programming world have always made me feel like an inferior developer. I constantly feel like there's so much to learn, that I can't possibly be good, as if the only worthy developers in the world are the top 500 geniuses that work for Google and Facebook and are somehow capable of magically knowing everything.
Knowing that this isn't the case, and that companies like Twilio are finding value in employees with skill sets much narrower than mine, is a good feeling. It's also really nice to know that they're open minded to the point that they respect this guy's talents as a developer just as much as they did as a customer service rep. #thehighroad
The more advanced you get in your field, the more you understand how little you really know. I feel like this every day. It's easy to forget that to a ton of people you're still a guy/gal who works magical wonders with computers.
Keep up the great work!
It says great things about twilio that they are willing to train and grow their employees. Other companies should take note.
For years I hired developers and told myself I was incapable of doing what they did, never tried to learn. After the job market got hot and I was having to pay good devs $100+/hour I decided I had to finally learn myself. Less than six months later I can now do 80% of what I used to pay people to do for me and 100% understand what they were doing from a high level and why. In another year I think I'll probably be a better developer than most of the people I've hired in the past (mostly because I sucked at hiring good devs because I had no idea how to evaluate their skills).
There's nothing I've had to learn that was especially difficult or that requires someone a lot smarter than me or a lot better at math etc. It just requires persistence and a willingness to put up with frustration until you finally solve problems.
My only regret is that I didn't start learning 5+ years ago.