I recently had the pleasure of connecting with five talented people who had wisdom to share about their journeys into tech. I’ll let their words speak for themselves.

INTERVIEWEE PROFILES
Stephanie Chang (@stchangg) taught herself web development and hacked her way to a full-stack software engineering job at Khan Academy. She studies behavior change, occasionally pens nerdy raps, and blogs at stchangg.com.
Screen Shot 2014-09-22 at 12.38.27 AMMarcus Willock (@crazcalm) is a self-taught technologist who recently landed a QA engineering job at Adcade. When it comes to development, he is a hackathon enthusiast who tries to always have a side project in the works.

Screen Shot 2014-09-22 at 12.38.39 AMCheney Tsai (@cheneytsai) is currently a mobile solutions consultant at Google. When it comes to development, he’s a full-stack engineer with a deep interest in UX design.

Screen Shot 2014-09-22 at 12.38.54 AMWayne Warner (@wawjr3d) is a senior front-end developer at Bloomberg LP who’s been programming for 15 years. He blogs at wawjr3d.tumblr.com.
Screen Shot 2014-09-22 at 12.39.08 AMNicole Bieber (@nicolethenerd) is a senior software engineer at Amplify and an instructor at the New York Code + Design Academy. She earned an SB and MEng in Computer Science from MIT.

ABOUT THE INTERVIEWER
LindaLinda Peng (@lpnotes) is a front-end web developer at ActionKit. She recently became convinced that studying full-stack web development with strangers via self-organized Google Hangouts at CodeBuddies.org (pair programming partners!) is incredibly fun. She enjoys Harry Potter, playing violin, and collaborating with people on meaningful projects.
THE QUESTIONS

1. What’s your name, when did you first start learning to code, and what technologies are you most familiar with?

STEPHANIE: I’m Stephanie H. Chang. Because my name is so dang generic, I go by @stchangg on the internet.

I first started trying to learn how to code the summer after I graduated high school. I bought an intro to Java textbook and tried to teach myself, but got stuck after trying to get Eclipse set up on my Windows computer. When I started college a few months later, I took an introductory MATLAB programming course for engineers. I signed up for and dropped the core intro to CS course TWICE before I completed it for real, because I was so intimidated by the first week’s course load and didn’t think I could keep up. Even after successfully completing the intro to CS course and TA-ing for it, I tried to get into web development on my own and struggled to make progress, so much that I ruled out the possibility of becoming an engineer after college.

It was only after I graduated from college and worked for a while that I got a second wind learning web development and landed my current programming job. So for me, learning to program has been a long journey, filled with many false starts and many dark moments of insecurity. I’m most familiar with Python, Google App Engine, JavaScript, jQuery, Backbone.js, React, and git.

Screen Shot 2014-09-22 at 12.38.27 AMMARCUS: My name is Marcus. I first learned to code in school. I was a math major and Java 101 was a mandatory course. At the time, I hated it. Till this day, I still do not code in Java. However, towards the end of my math degree, I started to gain interest in coding, but I never had time to pursue it. A few years later, when I was in my master’s program for teaching Chinese, I suddenly had the free time to learn something new. I chose Python. I had heard good things about the language and there were no curly braces to deal with.

Screen Shot 2014-09-22 at 12.38.39 AMCHENEY: Hey! I’m Cheney and I’m currently a Mobile Solutions Consultant at Google. My first exposure to code was actually rather early when my dad made a digital card for my 4th birthday. He used BASIC in a MS-DOS environment to draw a cake and output MIDI for the birthday tune. From that moment on, I was hooked on the power that comes from teaching a computer to do things.

I was notorious in 5th grade for lugging around gigantic books that were far beyond me at the time (Visual Basic 6, Game Programming in C++, and so forth). While I never did build what I had imagined in my head (my own Pokemon RPG), it was great to start understanding how systems worked as well as to decompose gaming ROMs to modify my favorite games.

Though I dabbled in a lot of technologies, I didn’t start focusing on Computer Science and Engineering until my senior year in high school. From that point on, I found myself working in Web Development, Electronics, and now Mobile Development. I consider myself a Front-End leaning full-stack engineer given my interest in Design and User Experience, so I spend alot of time in JS as well as HTML/CSS. My scripting language of choice is probably Python though I’ve been experimenting more with Node and Go recently. Outside of web dev, I use Java for Android development and have been looking into Swift for iOS.

Screen Shot 2014-09-22 at 12.38.54 AMWAYNE: My name is Wayne Warner. I learned to code when I was about 15. I’m most familiar with javascript, CSS, and HTML. But I’ve used pretty much everything that exists: at some point PHP, C++, Ruby, VB.net, ASP.net, etc. Whatever you can think about! I work as a front-end developer now, but I’m transitioning into management.

The first thing I learned was HTML and Javascript and CSS when I was 15. Then I had an internship with a gas company, where I gained experience with VB.net. I didn’t really learn any of this in school. When I got to college, I learned computer science is a mathematical theory. I did some Java, C++, and C–, which was a language that my school created. But I didn’t learn that in a professional way. I couldn’t have taken that knowledge and transferred that into what I know now. Officially, I majored in cognitive science with a concentration in computer science.

Screen Shot 2014-09-22 at 12.39.08 AMNICOLE: Hi, I’m Nicole! I was lucky enough to be introduced to programming at the young age of 8, when a volunteer at my elementary school taught us to program in Logo. I wish I could say I caught the coding bug then, but I don’t think I quite understood at that point that I could recombine individual commands to draw whatever I wanted – I was mostly copying whole programs off a worksheet and changing a few variables to move them around or change the colors. I lucked out again when a different volunteer introduced me to programming on a TI-81 the next year, and I haven’t stopped programming since.

Today, I program almost exclusively in JavaScript, using AngularJS – but I don’t consider it my “native” programming language – that would have to be Java, which I used for most of my formative coding years. I’ve also spent a decent amount of time programming in Python. I consider myself a front-end developer these days, but that’s a fairly recent development.

2. What was a turning point/lightbulb moment for you when you first started learning?

STEPHANIE: One big “aha” moment happened when I was working on a little project to scratch an itch I had. I like making visual art and wanted 1) to learn JavaScript, 2) to learn how to work with an API, and 3) to showcase my art on my personal website. I was disappointed with many popular Flickr plugins, which to me felt too slow and over-stylized. I wanted to make a plugin that would load batches of images from Flickr in the background as the user browsed my photos.

As I worked on this project, I ventured to ask an incredibly newbie question on StackOverflow revealing my total lack of understanding of how AJAX (asynchronous HTTP requests) worked. Since all the coding background I’d had before was in Java (before Java 8), I didn’t know about callbacks and functional programming paradigms. But once I grasped the basic concepts, APIs for JavaScript libraries like jQuery and Backbone.js started making a lot more sense.

The interesting thing is that, while you might be intimidated by all of the jargon at first, if you give it some time, and just patiently and persistently explore the giant maze that is modern web programming, one concept at a time, it’ll start making more sense. It’s overwhelming at first, but it really does get better with more exposure, and to be honest, you don’t even need to know everything or even a majority of it to make significant progress.

Screen Shot 2014-09-22 at 12.38.27 AMMARCUS: The turning point in my learning of programming was when I decided to try to make a career out of it. At the time of this decision, I was not good at programming, but having a career minded mindset helped me focus on learning how to code properly. I started caring about code quality, code design, clean code, and coding practices. Completing a project was no longer good enough. I now had to complete the project and have code that I could be proud of.

I started learning python by completing the course in Codecademy and doing Project Euler questions on the side. I got so obsessed with solving those problems that I would sit in the back and code during my grad classes. After studying by myself for a long while, I felt the need to branch out and search for other people who like to code.

Being a student at the time, I began my search by looking through the student organizations on campus. The student CS organization hung out in a place called the “Cave.” That place was, and is still filled, with CS majors who have fully embraced the hacking culture. Through that group, I learned about hackathons, tech meetups, hacker schools, and a bunch of outlandish tech trivia.

In terms of languages, I am most familiar with Python. It was my first language and, because I felt a need to learn the fundamentals of Computer Science, I used python as a tool to learn everything I missed out on by not studying CS in school. I bought python books for data structures and algorithms, GUI programming, web development, object oriented design, coding cookbooks, and plenty others just so I could beef up my CS knowledge.

Screen Shot 2014-09-22 at 12.38.39 AMCHENEY: I’ve had ups and downs with learning as my interests changed over the years, but what always seems to bring me back is the satisfaction when an idea is actualized. This ranges from seeing a fellow classmate’s design project, watching one of my students successfully program their Lego robot, and even the releases of new technologies and the possibilities they bring.

Screen Shot 2014-09-22 at 12.38.54 AMWAYNE: There’s been a ton of lightbulb moments. A couple of memories stand out:
– Back in the day, when I figured out who to use javascript to do something I wanted to do that seemed really hard at the time. This was before position:fixed was possible in CSS.
– Another moment was when I made a project to learn how to code. When I was 15, I had an internship at a help desk. One of my co-workers asked: “Does anyone know how to make websites?” And I raised my hand. This was in 2001.

Screen Shot 2014-09-22 at 12.39.08 AMNICOLE: I really got into programming around the time when I was in fifth grade, at roughly the same time that I started spending a lot of time playing video games (that interest has since waned – fortunately, my interest in programming is still going strong!) It was at that point that I decided that I wanted to be a programmer when I grew up – particularly, a game programmer at Nintendo. So when the monthly Scholastic catalog came out featuring a Learn to Program Basic computer game, I had to have it – because I was going to be a programmer! Fortunately, my parents were kind enough to oblige.

One of the big questions I’d had about programming up until that point was how game programmers moved their characters around on the screen. No programming language I had seen so far had commands for “up”, “down”, “left” or “right” – and I often wondered where these missing commands were. What was the secret that I was missing? When my Learn to Program Basic software finally arrived, I found out – the coordinate system! It was so brilliant, I wished I had thought of it myself.

3. What tutorials or resources did you use when you were learning X, Y, or Z?

STEPHANIE: I worked through Michael Hartl’s Rails Tutorial (http://www.railstutorial.org/) and watched Ryan Bates’s RailsCasts (http://railscasts.com/) to learn how to build a website from the ground up, but as someone with zero knowledge of how the web worked (e.g., HTTP requests, servers, AJAX), I got overwhelmed pretty quickly.

The thing that eventually worked the most for me was to start working on small, fun projects and Google for help (StackOverflow, coding blogs) when I got stuck. However, this type of learning doesn’t work best for everyone, so it’s important to reflect on your own learning style and find what works for you.

Fortunately, there are tons of resources and tutorials for beginners these days. Give them a whirl and read Mindset by Carol Dweck while you’re doing so to ensure you celebrate and learn from failures instead of beating yourself up about them. The most important part of the process is to keep it fun and to help yourself internalize the belief that you can do it.

Screen Shot 2014-09-22 at 12.38.27 AMMARCUS: I am a big book person. If I want to learn something, I’ll buy the book, read it, and write out the examples. I love second hand knowledge, reading tech books speeds up my growth process by introducing me to tested solutions for problem X, Y, or Z.

Screen Shot 2014-09-22 at 12.38.39 AMCHENEY: Oddly enough, I don’t have a go-to place for tutorials, but I approach it in more of an ad-hoc way. Google search is always my home base, and I try to follow relevant field leaders on social media for tips I wouldn’t know to search for. I’ve spent time on various blogs for focused tutorials (rather than full-fledged courses that I find overwhelming like Lynda’s offerings) as well as sites like bento.io.

I caution people looking to learn to avoid thinking you have to know everything before you can build anything. With so many new frameworks, trends, and options to choose from now, it’s unreasonable to think that you should have everything in your head. Instead, you should train yourself to be relentlessly resourceful. I don’t strive to be the go-to expert for Python or JS nor am I anywhere close. Rather, I strive to have the confidence that I can pick-up what I need to learn and solve any problems in front of me.

Screen Shot 2014-09-22 at 12.38.54 AMWAYNE: I can’t even remember the first web resources I used!

These days, I just use the internet at large. I often just go to people’s websites and look at the source code. To learn javascript, I went to dynamicdrive.com.

A couple years ago, I read through the source code for jQuery.

Now, I won’t sit and read an entire repo, but I’ll look at snippets here and there.

The trick is in knowing how to do a skilled Google search, and how to find the answer you’re looking for the first time.

Screen Shot 2014-09-22 at 12.39.08 AMNICOLE: Ooh, that’s a tough question – there are so many great tutorials out there. I’m a big fan of the Mozilla JavaScript Guide, and Codrops has a lot of really beautiful front-end tutorials and examples. For another comprehensive JavaScript overview, Eloquent JavaScript is pretty good, and for learning Rails, the Learn Rails By Example tutorial really impressed me with how well it balanced teaching advanced material with keeping things beginner accessible.

If you’re looking for something a bit more beginner-friendly, I highly recommend Codecademy and Khan Academy – I’ve had good results using both of these with my students.

4. What’s been the most frustrating thing about learning to code or being a developer (if you work as one professionally)?

STEPHANIE: As a developer, I’d say that there’s always a healthy tension between writing good code and shipping. You don’t want to over-engineer a solution, but you also don’t want to write horrible code that, while functional, will make it harder to iterate and improve on the feature. It’s frustrating at times because without more experience, it’s really hard to know the answer. But at the same time, it’s one of the cool non-deterministic challenges that can make programming a really creative pursuit.

Screen Shot 2014-09-22 at 12.38.27 AMMARCUS: The most frustrating thing about learning to code is learning all the associated knowledge that no one warns you about.

I started programming as a windows user. In terms of coding, everything seemed to be going fine. I had recently struggled through building a blog from scratch, and I was hoping to put it online. That was about the time where I found out that the typical server is a Linux box and, if you want to make your website live, you need to learn how to navigate Linux. I then spent the next month trying to install Ubuntu on my Windows 8 box so that I could learn Linux.

Once I had a (very) basic understanding of Linux, I tried to put my blog online again. That was about the time realized the difference between serving your code on localhost and serving your code on a Linux box that you happened to be ssh into. I also ran into a file permission issue that had me stumped for 2 months.

In the end, I did get a site running (a website that I made for my girlfriend as a gift), but the entire process scarred me for life. I just wish someone could have told me about this associated knowledge beforehand so that I could have been better prepared.

Screen Shot 2014-09-22 at 12.38.39 AMCHENEY: Imposter Syndrome. Some of the most seemingly confident people I know are developers, and these same people can also be the most insecure. In recent years, this concept is now well-written about, but it remains a common issue that it’s so easy to think that we’re just faking it.

In a way, it’s an empowering thing, because it keeps you striving to be better. On the other hand, it can be debilitating, because you’re giving time estimates you know you can’t keep and end up unbalancing other aspect of your life as you try to make up for it.

One unique aspect of writing code is the multiplier of effectiveness. Perhaps in other occupations and hobbies, an expert is someone who is only generating 3x more output than an amateur, but our industry has been enamored with the idea of a 10x engineer. With that wider range of output, it’s easy to perceive gigantic gaps between ourselves and those that we admire, and perhaps we’re a little bit too hard on ourselves on this one.

Screen Shot 2014-09-22 at 12.38.54 AMWAYNE: When you’re in a workforce, you may be blocked by non-technical issues that have nothing to do with the technology that you want to solve.

Technically speaking, there’s only one thing that I’ve found impossible: and that’s when it’s not in the API. In my role as a front-end developer, I deal with browser support issues, but that actually never bothers me. That makes me very comfortable.

The only thing that bothers me as a front-end developer is that the industry can sometimes be so back-end oriented that it’s difficult to get the respect you get.

Screen Shot 2014-09-22 at 12.39.08 AMNICOLE: One of the things that you often don’t get a great feel for while you’re still learning is dealing with other people’s code. In the real world, the APIs aren’t always going to be clean and readable, and sometimes you’ll have to support legacy code that’s messy or so old that nobody even remembers who wrote it. And of course, there’s always that other team that you’ll have critical dependencies on who can just never quite get it together. I say this a bit tongue-in-cheek, but just like being able to work with someone else’s code is a critical skill, so is being able to work with other people. Being a developer isn’t just about coding – interpersonal skills are important too – and it’s good to be able to roll with the punches, and to be able to offer constructive critique and ask for what you or your team needs without blaming or finger-pointing.

5. What advice would you give to someone just starting out?

STEPHANIE: Internalize growth mindset. Talk to yourself everyday to internalize it, if that’s what it takes. Do it wherever – on your lunch break, on your commute to work. (Nothing to be ashamed of! I did it and still do it.)

If you’re not a person who struggles to maintain a growth mindset, the most important thing you can do is to create a safe space for you to learn. That might mean avoiding events where you have to perform under pressure (e.g., newbie-unfriendly hackathons).

Spend time upfront trying to find out how you can make the process fun for you, such as by working on tiny, inconsequential scratch-your-itch projects. Try to scope projects so that you can feel yourself making progress quickly, to create a positive feedback loop, and to keep them simple so that you don’t get overwhelmed trying to learn a thousand different things at once.

Screen Shot 2014-09-22 at 12.38.27 AMMARCUS: Join a tech group, find a group of people who like to code and make them your friends, go to hackathons, listen to podcasts, watch conference videos, and read tech books. All the information and help needed to learn how to program is out there. You just need to find it.

Screen Shot 2014-09-22 at 12.38.39 AMCHENEY: Writing code is a bit different from some other disciplines. You’ll find that progress tends to be like a step function. If you find yourself in a flat part of a project, keep at it! Don’t be afraid to ask for help or look up resources.

Don’t worry about getting everything completely right when you’re learning. Set up small tangible goals for yourself. And above all else. Close some tabs. Information paralysis when you’re learning is a real problem.

Screen Shot 2014-09-22 at 12.38.54 AMWAYNE: I think everyone gets to coding and perceive it as a much harder thing as it actually is, saying “my brain doesn’t work that way.”

To me, CSS is very simple: here’re rules, and you follow them. That’s easy compared to navigating personalities as a politician or a teacher. With computers, everything is simple, so I would tell people it’s easier than you think it is.

Screen Shot 2014-09-22 at 12.39.08 AMNICOLE: Find a mentor or coding buddy, or a bunch of them! You can learn a lot nowadays from the internet, but it’s always nice to get a fresh perspective on things and get another set of eyes on your code. If you live in a city, you can probably find plenty of local meetups for new coders, and if not, there are sites like Codermatch.me (interviewer: or online learning communities like Code Buddies) to help you find a buddy.

And go to hackathons! I’ve found that’s a great place to try out a new tech stack and get introduced to lots of new ideas (and people); I know a lot of beginners can be a bit wary of going to their first hackathon, but they tend to be very welcoming places – we don’t bite, I promise!

6. Why do you keep doing it?

STEPHANIE: Creating products through programming is an awesome way to reach a lot of people super quickly. It’s incredibly motivating to build a feature and have thousands or millions of users start using it and, better yet, telling you how it’s helping them achieve their goals.

Screen Shot 2014-09-22 at 12.38.27 AMMARCUS: I love learning, and I love solving problems! Also, I love the fact that I can reuse code! One of the promises that academia makes to a math major is that once you prove something, you never have to prove it again. In the world of mathematicians that might be true, but in the world of college students, that is a lie! Programming, on the other hand, has kept that promise. The ability to reuse code is something that I cherish!

Screen Shot 2014-09-22 at 12.38.39 AMCHENEY: I love to learn and I love to make things happen. The tools don’t actually matter to me, but engineering + design has been amazing at helping me communicate the ideas I have in my head.


Screen Shot 2014-09-22 at 12.38.54 AMWAYNE: I keep it doing it for the same reason I started: to be honest, it pays a lot.

Coming out of high school, I used to draw, and I was good at math. Computing jobs were lucrative, so I thought I’d do that. As Kanye West said, you can’t have the same job for 10 years.

Being a developer is a really cushy job. You’re pretty much in control of what you can do. People don’t have a view into your code, so you hold a piece of knowledge someone else doesn’t have. Like a plumber.

(When I was at The Ladders, I built an open-source javascript framework. BloombergView.com now uses it. It’s something I’ve been building for three years, and hopefully will be out this month or the next.)

Screen Shot 2014-09-22 at 12.39.08 AMNICOLE: Because I love it! I love making things and then being able to actually use and play with what I’ve made. And as a creator of educational software, knowing that kids all over the country are learning from software I worked on is incredibly fulfilling.


Click here to read Part I of this interview series.

blog comments powered by Disqus
  • Hi, I'm Linda! I enjoy going to tech meetups, learning web development, and blogging about the learning path. Follow me @LPnotes

Subscribe to The Coding Diaries