Bad Advice I Have Received13 May 2016
When you are learning to code, you often receive a lot of advice. Some of it you ask for, but there is also some advice given freely without request. Some of the advice you receive will help you structure your path to meet your goals. Some of the advice will not be helpful to you, but it’s up to you to decide what that looks like.
Learn as Many Languages as You Can
I think this person had good intentions when they told me
"Learn as many languages as you can. Learn the whole stack, top to bottom!"
I mean, I'm fairly sure they did. I was studying Ruby on Rails with the goal of becoming a web developer. Web development in Ruby on Rails has a ton of moving parts, which you can see for yourself here or more succinctly in this tweet:
Found a really succinct infographic about how web programming really works pic.twitter.com/fepT3nucLj— Thomas Fuchs (@thomasfuchs) April 28, 2016
It would serve any web developer well to understand how each of these layers work together and which languages are responsible for building each layer. This advice is even echoed in one of my favorite programming books, The Pragmatic Programmer:
You shouldn’t be wedded to any particular technology, but have a broad enough background and experience base to allow you to choose good solutions in particular situations. —Dave Thomas and Andy Hunt, The Pragmatic Programmer, p. xviii
I think this is great advice, but I'm not sure if it's the right advice for the beginner developer--especially if the goal of that beginner developer is to become a programmer. I think the right advice for the beginner developer is this section from one of my other favorite programming books, Apprenticeship Patterns:
Pick a language. Become fluent in it. For the next few years this will be the main language you use to solve problems, as well as the default skill you hone whenever you are practicing. Making this choice is a challenge. It is important that you carefully weigh the options, as this is the foundation upon which your early career will be built. -David H. Hoover and Adewale Oshineye, Apprenticeship Patterns, Ch. 2
If you're interested in finding work as developer, I'd recommend focusing on learning one language and one stack really well. Fortunately for web developers, modern web development is compartmentalized in a way that makes it easier to do this. I would try to figure out what you enjoy more, backend or frontend,and focus on that section of the stack. This allows you to fully learn one language and eventually fully enderstand its features and nuance.
If you can learn one language fully, you can always teach yourself another. Since programming is a daily practice in humility and learning, I think that's the skill employers are looking for that's often hard to describe, not some small knowledge in many different languages or stacks. Once you decide what you prefer, the compartmentalization of modern development will allow you to punt on the other pieces until you have time to really focusing on learning them.
Start a Business
Once, very early in my learning, someone told me that I should start my own company. I didn't have any particular passion or interest for entrepreneurship, but this person posited that if I started my own company, I could be CTO which would look very good on my resume to impress prospective employers. While starting a company is an impressive endeavour, my goal was to become an employed, paid software developer, not an entrepreneur. Because of that, I ultimately decided to eschew this advice and focus on learning how to program. (This mainly seemed like weird advice to give someone who was just starting to learn to code and it's too funny not to share.)
Build Something You Are Passionate About
Another piece of advice I received was:
"Build an app around something you're really passionate about, then you'll always want to work on it!"
This is definitely very good advice for anyone trying to start a business or build a specific app. However, I think maybe better advice for a new developer trying to learn to code is to build something you understand. This took me a long time to come to terms with. I thought I needed to create new and unique applications to impress interviewers, but really, truthfully I needed to practice writing code. Writing code is much easier when you don't have to do the extra mental strain of defining or creating an unfamiliar domain.
Know what's mundane and what the world doesn't need more of? To-do list apps, calculator apps, online drawing apps. But I bet you know exactly how those work. When you're practicing writing code, don't complicate your work by spending a lot of time defining a new domain. Choose a domain you understand and spend your time practicing writing idiomatic code and learning when to use certain design patterns (and when not to use those patterns).
Letters to a Young Developer
This is part of a series of posts where I'm outlining good (or in this case bad) advice I got or wish I'd gotten when I first started writing code. I don't mean for any of the advice in this particular post to be prescriptive, some of it may be opposite for you. When I first started learning I felt overwhelmed by advice and like I'd never have time to do all of the things people recommended I do. I'd hope that anyone reading this post doesn't take away "don't learn a ton of languages!" or "don't start a business!" but instead that when you take advice, take into account your goals.
My advice to you: define your goals (mine was to work as a software developer) and let that guide your path. Find out what it takes to achieve your next goal, such as a portfolio of work you can point to as experience or maybe a really good understanding of a system or language that you can explain in an interview. As you receive advice, apply it when it furthers your current goal in-progress, or maybe just stash it in your notebook for now and revisit it later (or throw it out altogether).comments powered by Disqus