This is an interview that I did with Sam Jarman, originally posted on his blog.
Hey Sam, thanks for this interview! I’ve been reading your other developer interviews and am humbled to be in the same company as them.
I’m Joe Fabisevich, an iOS developer in New York City, with no specific ties to a company right now. I spent the first 5 or 6 years of my career working startups like Timehop, Betaworks, and Bitly. Last year I decided to take the things I'd learned and help other companies grow via consulting work.
My job is to help companies get through whatever challenges they're currently face. I enjoy working most with early stage startups, so a lot of my work focuses around getting startups to their 1.0. Often times they're starting with nothing more than sketches and wireframes. Other times I help businesses figure out their mobile strategy, or work with iOS teams to grow their skills. This is especially interesting as iOS has recently moved to Swift, and there are few experts in the field so far. I wanted to add flexibility in my life, and now I'm able to tackle all different kinds of challenges. Not all of my work is even engineering related, which makes it fun to grow in many directions.
It's a bit cliché, but I got into programming somewhat by accident. In high school my grades were pretty poor, and I had to choose a major for my junior and senior years. My mom was a mainframe programmer and told me that if I took the computer science course, she would help me out. (Please don’t tell my 11th grade AP Java teacher Mr. Turner). After about two weeks, she declared that she was completely out of her element, and that I was on my own.
I was never a great rote learner, but I was always good with understanding patterns and systems. Programming lends itself to hands on learning, which made me finally feel good about learning. After some initial success, I was pretty hooked. As I got better, I was able to start helping others, which was also something I'd never been able to do.
In college I majored in computer science, but rather aimlessly. When the iPhone came out, I really wanted to make an app for it with a friend, and so I mustered up my strength and did. The code was awful, and the UI was hideous by today's standards, but there were probably only 10,000 or so people building apps, so it was felt like quite an accomplishment. Since there was so little iOS talent out there, I was able to parlay that app into an internship. As I left school (after spending most of it building apps in class), I was able to turn that internship and subsequent apps into my first startup job.
The tech scene in New York City is quite a mixed bag, but I feel that way about most things in New York. Tech is not the top dog in this city, which has it's pros and cons.
The biggest pro is that as an industry, we stay mostly grounded. We use our technology to lift up other industries, as well as tech for tech's sake. This helps us avoid a monoculture like you see in Silicon Valley.
The biggest con is that as an industry, we stay mostly grounded. This means that we don't attract as much talent (though there's still plenty), or work on as many moonshot ideas as you'd see in Silicon Valley. Those moonshot ideas are the one's that grow to be Facebook or Airbnb, and affect our lives in an outsized manner.
As a person, it's hard to say whether I would trade one for the other, but it's always a fun thought experiment.
You’ve worked both for companies and for yourself – do you have a preference? What are the advantages and disadvantages?
Like everything in life, there's pros and cons to everything. I don't have a preference, and don't think I'll always be a consultant, but don't think I'll always work full time either.
Being a consultant gives me work-life balance that's hard to beat. It's quite an opportunity to use the extra time I have to invest in my own learning. I can spend more time reading about product, design, management, or even things like metacognition, which help me grow in my career.
On the other hand there are some skills you can learn at a company over the long term. I still work at and with companies, but being with a company for a while helps you develop different skills.
I tend to think of it as growing in a breadth-first manner vs. a depth-first manner. Both will likely get you to the place you want to be, but the path will look different. Ultimately what works best for you is in your hands.
I’d say the career matters. Developers often don’t want to think about their career, and instead think about programming. It makes sense because it takes a while to become comfortable enough to feel confident in what you’re doing, but as a result other people’s other skills suffer.
I’ve always been interested in product, design, and programming, so choosing a linear path was difficult for me. Nowadays I'm able to leverage those skills as a consultant and former startup founder. On the other hand, I hadn’t spent much time thinking about management or a career track until recently, and realized that I’ve got little experience with that and now am playing catch up. Ultimately it may not matter because you can’t predict your future, but it is very important to be in touch with your goals to move forward as much as possible, without parallel diversions.
Everyone starts at the beginning and there’s no way around it. Luckily, that's ok. Over the first few years of my software career I read anything programming related in sight that sounded interesting. Even if it didn’t pertain to what I was currently working on, I would still read it. That ended up paying dividends as I started to expand my horizons. Even though I didn't understand it all, I had all this knowledge tucked away in the back of my brain for a later day.
When it was time for me to try my hand at Python, I didn't need to start from scratch. When I wanted to build a website, it was as easy as recalling that tutorial I read a month ago. Better yet, I took the lessons I learned in other languages and frameworks, and applied them to what I was working on as I saw fit. This allowed me to grow in ways that my peers weren't, and made a more confident programmer.
While this technique worked for me, I can’t promise it will work for everyone. Everyone learns differently, and you have to find your path. What I will suggest though is trying it out and seeing if it works for you! Maybe it won't be the only way you grow, but it can be another tool in your toolbelt.
There are two personality traits which go hand in hand. Empathy and modesty can take you from being a good programmer to being a good teammate. Being a good teammate can transform you into a great asset. If you apply these traits, you'll more easily accept your flaws, and that will empower you to your co-workers and fellow community members.
One underrated aspect of empathy and modesty is that over time you become more confident and humble. Confidence and humility allow you to turn anything into a learning opportunity. The more you can say “I don’t know, but I want to learn about it” either to yourself or to a peer, the more you’ll open yourself up to an opportunity to grow. Over time it will become an innate part of how you approach solving problems.
I’m going to be a little self-serving here, but I maintain a Pinboard tag where I post articles. The articles are ones that I’ve come across in my career that taught me something, with information I wish I knew when I was just starting out as a programmer. Sometimes I go back and re-read the articles, and I'll still pick up new things. As I've grown, the advice and stories take on new life and new meaning.
I recommend going through the posts in reverse order. The first posts are more foundational and encourage bigger thinking. I’m really big on RSS, so I recommend subscribing to the feed, so that way you can always get a new article right after it’s posted.
I think right now it’s important to not forget about others in need. There are people dealing with natural disasters that have entirely uprooted people’s lives. A cause that's near and dear to my heart is the Hispanic Federation, where every dollar will go to aid on the ground in Puerto Rico. You can choose your own cause, but the important thing is to do something.
Personally you can find me on Twitter where I am busy saying anything that comes into my head, so my apologies in advance.
Joe Fabisevich is an indie developer creating software at Red Panda Club Inc. while writing about design, development, and building a company. Formerly an iOS developer working on societal issues @Twitter.
Like my writing? You can keep up with it in your favorite RSS reader, or get posts emailed in newsletter form. I promise to never spam you or send you anything other than my posts, it's just a way for you to read my writing wherever's most comfortable for you.
If you'd like to know more, wanna talk, or need some advice, feel free to sign up for office hours, I'm very friendly. 🙂