Posted at 08 Jan 2013 by Scott James
"If you are still wondering if you can do it, put down your programming book and start making something." -- Jeffrey Carl Faden
Today we hear from Jeffrey Carl Faden, a software engineer at Lab Zero, a product development and design firm where they dispense with the buzzwords.
Faden's story of learning to code is an inspirational tale of growing up surrounded by computers, but finding that studying computer science in a university setting didn't work for him. What did? Teaching himself using the "View Source" browser feature. He now does front end development full time.
Even more instructively, Faden teaches a front end development class. He traces the symbiotic link between teaching and learning in his own coding journey and how he constantly deepens his learning as he teaches.
Who are you? Tell us about yourself.
I'm Jeffrey Carl Faden, a Bay Area native. I've been writing HTML since 1994, when I was nine. I started my professional career working on the website of Diabetes Health in Woodacre, then moved to San Francisco in 2009 and joined Linden Lab. The next year I started working as a software engineer at Lab Zero, and still am to this day.
What were you doing before and what made you decide to code?
I was at UW Seattle in the Computational Linguistics graduate program. I was taking it essentially because I blew my chance to get a degree in Computer Science as an undergrad, and was trying to make something of my bachelor's degree in Linguistics. When family issues called me back to the Bay Area in 2008, I decided I'd get a job performing my longtime hobby of making web pages, and the rest is... well, see previous answer.
How did you learn? What were the resources that were most valuable? What surprised you about learning?
I'm self-taught in HTML. The "View Source" feature in web browsers is what taught me what I know now. I had taken a few intro programming classes in college which gave me a formal understanding of traditional programming paradigms, but I specialize in making precise HTML and CSS out of mockups, which is something I attribute to a natural attention to detail.
I've basically felt my way into my profession by way of well-worded Google queries and keeping up with steady advances in the field of web developer tools. I do keep up with many blogs that report on the cutting edge, such as A List Apart and HTML5 Doctor, but the best way to learn is by doing, and having done a bunch of personal and professional projects is what's really challenged me to grow as a developer.
What has surprised me recently is how valuable it is to actually convey the knowledge I have to others.
This past year as a teacher, I've lost count of how many times I talked through something that I thought I knew everything about, then realized, as the words left my mouth, that I had never really thought about it that way until I had to explain it to a room full of students. It's helped me strengthen my skills faster than any other project I've undertaken.
What have you been doing with it?
Learning on my own has also affected the way I teach. I know what I need to spend extra time focusing on. I sometimes spend entire 2-hour sessions on a topic that others might attempt to explain in a sentence or two, either because I found the topic especially difficult to grasp, or I realized that deeply understanding it gave me a significant leg up at work.
What were some of the biggest mistakes you made?
My professional career has been pretty smooth despite occasional small stumbles in the professionalism department, but what I wish I'd done differently was realize my passion in the web much earlier. I must have been in a funk throughout high school and college that prevented me from focusing on the skill that I both excelled at and from which I would be making the most money. If I had done that, then I could have spent more time in recent years being an efficient, learned developer instead of fumbling through the dark, learning as I go.
What were some of the biggest obstacles you found outside the actual learning?
Working as a consultant means I am dealing with organizations of varying size. Often times, the smaller companies don't have enough direction to convey what they want done, while the larger ones are so weighed down by bureaucracy that it's hard to get anything done. I sometimes feel like I'm being held back by problems that are out of my control.
In other words, working as a team can have its downsides, and I'm still learning to balance my desire for speed and efficiency with the need to take others along for the ride.
How do you find your life different emotionally speaking?
I wake up and can't wait to get to work. It varies from project to project, but most of what I do can become very addictive when I realize how much progress I'm making, so I'm often raring to jump on my bike, zoom down to the office and pick up where I left off.
Having excellent coworkers who complement my skills makes me happy as well. It's true when they say that you don't want to be the smartest person in the room.
A crazy awesome work space (my office is in a pier, the bay is a few feet away) helps a lot, too.
One downside of my current situation is that a lot of my work never reaches the public eye, and some work is so speculative that it never even sees the light of day. So I can't really gloat about most of my accomplishments because there's often an NDA preventing me from doing so. But I've learned to let that feeling go and be fulfilled by the experience of putting things together - the journey, not the destination.
Teaching is also a major source of good vibes. I'm doing well for myself as a software engineer in San Francisco, but I would feel guilty if I didn't give back.
There are a lot of smart people in the Bay Area who could be making a very good living but have never had the opportunity to learn, due to the high cost of education or the pressure to succeed in traditional classrooms.
I'm overjoyed that I can share my knowledge and change people's lives. I've never grown tired of teaching the class or preparing the material, which means I must be doing something right.
Where are you headed?
Honestly, if I could continue doing this indefinitely, I'd be happy! I don't aim to run a business or retire early. Working as a web developer is fulfilling, and I love working at a place where I'm always being challenged with new ideas.
I make it a point to travel at least once a year, but when I do, I realize that San Francisco is the best place where I can surround myself with the sort of work and culture I seek.
Any closing thoughts for people thinking about learning to program?
Programming isn't a perfect fit for everyone! I'm very privileged that I grew up with computers and had a long time to teach myself to do what I need to do. But while software engineering is an important field, we also need content strategists, user experience folks, designers, system administrators, project managers... the list goes on. Programming requires that you have a very logical approach to problems, and that you aim for efficiency in everything you do. Not everyone is wired like that.
But if you're set on learning to program, I cannot stress enough how important actual experience is. I teach a lecture on what I know, but I also hold a lab, which is arguably even more important - it's there that people are able to work on projects and learn by doing: by making mistakes, by seeing their code come to life, by rethinking and optimizing. If you are still wondering if you can do it, put down your programming book and start making something.
Through this Pathways to Programming interview series, we talk to formerly non-technical people about how they learned to program in a non-traditional way and what they’re doing now. If you’ve taken your own unconventional path to becoming a programmer, we’d love to hear about it. Send a short email to [email protected] and let’s talk.