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.
Cheney 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.
ABOUT THE INTERVIEWER
1. What’s your name, when did you first start learning to code, and what technologies are you most familiar with?
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.
MARCUS: 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.
CHENEY: 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.
NICOLE: 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.
2. What was a turning point/lightbulb moment for you when you first started learning?
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.
MARCUS: 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.
CHENEY: 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.
WAYNE: There’s been a ton of lightbulb moments. A couple of memories stand out:
– 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.
NICOLE: 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.
MARCUS: 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.
CHENEY: 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.
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.
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.
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.
CHENEY: 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.
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.
NICOLE: 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.
MARCUS: 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.
CHENEY: 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.
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.
NICOLE: 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.
MARCUS: 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!
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.
NICOLE: 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.