My parents are biologists, so I somehow ruled out that option early on in life. However, that didn’t give me clarity on which field to go into. In high school, I was good at math, but I also liked history, debate and soccer. I believe the buzzword at the time was - “well-rounded”.
So, as one does when in doubt, I went into management; Industrial Management at the Krannert School of Management at Purdue University (fun fact: Drew Brees went through the same program). About a semester into my freshman year, I went to my first job fair to try for an internship and realized that employers are looking for engineers. So, I went to my school counselor and said that I'd like to add a second major of computer science. They were a bit hesitant to let me in because, you know, those business students can’t handle the intensity of CS curriculum, but it ended up working out.
Upon graduation, I followed my brother's footsteps to Microsoft as an SDET (Microsoft was still cool at the time. It’s now cool again, but it used to be cool too). And after 5 years working in Windows fundamentals (and playing a lot of soccer - Microsoft has a great internal soccer league!), I joined Google where I went through the Google Java readability process, which is a sort of rite of passage that involves sending 300+ substantial lines of code to a language expert and they proceed to destroy it for the next couple of weeks. And that's when I feel like I finally became a developer. :phew:
Pretty standard San Francisco/Silicon Valley stuff. Open-space, noise-cancelling headphones, desk, 4K monitor, MacBook with a very loud fan.
I mentored an intern last year and she wrote me a sweet letter upon departure; it’s sitting there on the left of my desk next to the succulents and the led-lit fidget spinner. I try not to get attached to the desk setup because of frequent moves within our building. I am, however, attached to my notebook where I write down TODOs for the day and then doodle random stuff on top of them.
A few years ago, I switched to a single monitor setup to help with focus (doing 1 thing at a time and all that) and I’m still using that. My laptop desktop is full of screenshots, which is a shame because it’s covering a nice background photo taken last year near Pienza in Italy.
I write code in a few different languages, so, at one point, I had this situation on my dock:
What can I say, I like my JetBrains IDEs.
My phone home screen is fairly clean. I try (and fail) not to be on the phone too much.
I’m a generalist and try to be pragmatic about using the right tool for the job. In the past 6 months, I’ve worked with groovy, python, java, kotlin and php. But if I had to pick one in terms of pure pleasure of coding, it’d go with python.
It’s a love-hate relationship. I hate the lack of type safety and the mess that is the python-dev env setup (xkcd.com/1987), but it's so darn nice otherwise. I love how concise it is, how powerful the standard libs are (especially around string manipulation), great 3rd-party libraries, fast iterations for running the code (i.e. no compilation).
I wouldn’t however, recommend it for a complex project that involves a larger team. I’d go with Kotlin for that, which has a lot of the same benefits but also provides type safety.
github.com/kelseyhightower/nocode by a long shot. I love deleting code!
Google monorepo was amazing in many ways.
github.com/android/android-test not because it’s necessarily great these days, but it’s where Espresso currently resides. Some day, when I’m able to build espresso with bazel on my MacBook, I will contribute to this repo.
Private repos I work on at slack.
Obviously - reactive crypto machine learning flutter.
Serverless. It’s kind of a buzzword these days, but I like the aligned incentives that come with it - compute cycle providers have the incentive to reduce overhead while providing a very simple way for you to solve problems that require those resources. The pay as you go pricing model is nice too.
Kotlin - I tweeted about how intuitive it is recently and I still stand by that statement.
Bazel - every xoogler misses it and wants to bring it to their company. It may very well not make it outside of Google, but I want to believe.
Fast feedback loops (that’s probably the main reason I couldn’t be a scientist) that comes from a great local test/experimentation/dev environment.
Fast/non-flaky CI checks that provide confidence to merge code to master.
Automatic promotion to production
Continuous monitoring & alerting
Great observability/visibility tooling that allows you to diagnose production issues quickly
Mindfulness & focus. How to be less judgmental, more accepting and content with what I have. The basics: sitting properly at my desk, getting enough sleep, breathing. Owning my own path instead of waiting for things to be handed to me. Kotlin.
That would still have to be developer.android.com/training/testing/espresso. I was at the right place at the right time and working alongside an amazing tech lead (Thomas Knych) and it all came together to become the de facto UI test framework for one of the largest platforms out there. Plus, I dare you to find a better looking logo for a test framework.
(shoutout to twitter.com/romannurik for its creation)
I think a common answer is soft skills, right? Certainly important, but thinking back to myself when I first started my career, it’s really hard to figure out how anything except tech skills are important until you have a few years of experience under your belt.
So, I’m going to go with: focus on learning how to learn, find great mentors and an environment that allows you to go out of your comfort zone. Whenever you find yourself waiting for certain good things to happen to you, take a step back and think - can I do anything myself to change the situation? A lot of times, the answer may be yes and you find a good path forward.
Scaling iOS development, testing & CI. Apple is, unfortunately not, yet, a developer-friendly company.
How to instrument & measure the areas we are trying to improve
How to reduce reliance on manual regression testing
My team at Slack is hiring in SF & NYC: slack.com/intl/en-ph/careers/dept/1562643. It’s a huge area of focus for Slack. Join us on our fun little adventure!