Hello World: Want to be a developer? Learn how to learn
Over the past five years, I’ve had the opportunity to teach coding to veterans who have varying degrees of education and experience. As such, newbies from all walks of life trying to get their eureka moment would always ask me, “How do I learn how to code?” The first hurdle to learning how to code is learning how to learn.
Learning how to learn is a subject where a lot of time and research has been devoted to. People spend thousands of dollars a year trying to figure out the optimum way to quickly learn, retain and apply knowledge to make them smarter or more employeable.
Learning itself is a habit like cooking, running, or budgeting, it will get rusty and it will be harder when you try to use it again. With our veterans, I tend to use our Fundamentals block of instruction to build this core habit that will help them beyond the cohort into the next job. These are the tactics and tips I use to grow in the subjects that matter to me.
Make time
You know the difference between those who go to the gym on January 1st and actually reach their fitness goals versus the rest of us who quit in the first two weeks? They dedicate a block of time to their goal regularly, and it’s usually the same time everyday. We all make excuses, and I’ve heard every reason in the book.
I have what I call the Round Rule: I have a boxing timer on my phone. I know that I can do anything for three minutes, so the same time everyday, I start it and focus on doing something personal growth related for one round, wait until the timer goes off, and if I have time, I let it start again. For beginners, I recommend going three rounds and adding a round every two weeks, with the goal of getting to twelve. That’s starting out with twelve minutes of time dedicated to your goal and ending up with forty-eight minutes dedicated to learning how to code everyday. Try to make it during the time that you have the least amount of commitments. When I was younger, it was in the morning when the kids were asleep. Now that they are older and love Fortnite, my evenings are peaceful so long as I keep the V-Bucks flowing, so that is my time to learn. Try it out and remember, twelve minutes of learning is better than none.
Make a plan
It’s easier to get where you’re going if you have a plan to get there and this is a perfect way to practice of the Round Rule. During each session the first week, take that time to make a list of small tasks for you to complete. Since I deal with newbies, I center your initial plan around learning keyboard shortcuts, command line, git, text editor and Markdown. I usually set this up on Trello where I have three lanes: Ready To Start, Doing, and Done. This format helps them practice Kanban as well.
Ready To Start are all my tasks that I need to do but I haven’t started yet. When is this lane I ensure that I am doing discovery on all the possible needs and resources to start the task. I then move it to Doing, which is the execution phase of the project.Once completed move it to DONE and add after action documentations and notes.
When I say small tasks, I mean small. Tiny wins lead to sweeping victories and making the tasks digestible will help you not get discouraged and stay on the path towards your goal. Don’t say you will learn keyboard shortcuts, say you will learn how to open the apps from the keyboard via shortcuts, then how to switch between apps via shortcuts, etc.That way you don’t get overwhelmed.
Make a commitment to finish any resource you start
Many times, I encounter people who are what I like to call “Resource Jumpers.” They have a million Udemy courses because there was a sale, all of Wes Bos’s courses due to another sale, or have twenty O’Reilly books but haven’t finished any of them. Don’t be that person.
Bouncing from resource to resource is going to make you feel busy, but in reality, you’re just wasting your time. People are horrible multitaskers. Even if you think you are one of the few who are good at it, chances are if you would focus on one thing and complete it, you would be more efficient and have a deeper learning experience. You will also feel a sense of pride for completing something. Being one of the few people in your network to have completed Eloquent Javascript will definitely boost your confidence and motivate you to complete more courses.
Document your learning: Write it down
If there are concepts that are tough for you, going old school and whipping out a pad and pencil will assist you in breaking it down as well as retaining what you are trying to learn. I feel like this is the secret sauce of any educational journey.
I’ve recently had to do this over the course of 2019 as I was deep diving into our projects’ accessibility issues. Not only did I need to learn accessibility well enough to do my job, I needed to become good enough to make sure I wasn’t making the same mistake in the knowledge transfer to the veterans we teach. So I went to the store and bought a composition book and wrote Accessibility on it. From then on, every ticket I fixed and every course I did, I wrote what I learned in that notebook so that I had a quick reference if it came up again but also to retain this information better.
Create an accountability network
Learning new things can be difficult, but doing it alone can be even worse. Motivation and discipline can only take you so far and if you’re like me, you sometimes need an extra push to get there. Build an accountability network that will regularly check in and ask you about your progress. They don’t have to understand what you’re doing or even be on the same journey as you, but knowing that you have people who are going to check in on you can be that mental kick in the rear to get you going on days you just don’t feel like learning anything. You can even use social media like Twitter for virtual accountability partners. The #100DaysOfCode hashtag is a great way to document small wins everyday and to receive positive reinforcement to keep going and make it a habit.
An easy way to handle accountability is to treat it like a stand up, much like the Health And Wellness Checks we had to do in the military. Make it short and make it focused on what your goals and what’s blocking you. Your network should be asking you what are you working on, how is the task going, are there any blockers, and do you need help.
If you’re a negative reinforcement person like me, I’ve found that what works for me is giving away money. Telling my kids that I will give them $100 each if I don’t finish something by a certain date is super motivating for me. They’re already expensive, and I don’t want to lose anymore money to them, especially if it’s because I failed in my goal to grow.
Find a mentor
You don’t know what you don’t know, so it’s best to find someone who does. A mentor in the discipline that interests you can literally halve the amount of time it takes for you to reach your goal and is much easier to acquire than you think. Most people who are good mentor material are literally looking for someone to do a knowledge transfer with as a way to give back. They are just looking for people that they feel that the time they will pour into that person will be a good investment.
This is where having a plan, knowing your goals, and doing your research goes really far in convincing someone to mentor you. I remember when I approached Billy Hollis to be my mentor last year. It started with a DM on Twitter to ask for lunch to discuss mentorship opportunities. I knew that Billy was passionate about speaking, teaching, UX, and business, which were all the things I wanted to perfect and focus on myself. Over lunch, I presented my goals, plan of attack, data, and what I had accomplished over the past four years. Afterwards, we agreed on a plan to to meet and keep me growing in those places, which has really made me a better leader. Now, you don’t have to go as far as I did, but just putting thought into your ask goes a long way with a lot of people.
Wrapping up
With everything I have shared, the most important thing to do if you’re new to programming is to execute. After reading this post immediately download the boxing timer app, set it to three rounds and start planning out what you’re going to do and how you’re going to do it. I always stress to our veterans that the American Dream of Life, Liberty, and the Pursuit of Happiness means that there are numerous people over the course of history who have sacrificed their lives. They didn’t do that so you could not be the greatest version of you, but it comes at a price, so stop streaming The Mandalorian and get to work.
19 Comments
I just looked at preexisting code to get started. At first I looked at HTML and messed around with it a bit and then I started writing some of my own. After that got boring I started reading and writing shell scripts based on my knowledge of the terminal. From there I went into a preexisting Ruby package manager where the work was more shell than Ruby. I ended up learning C from that based on screwing around with a few C codebases to try to get them to compile. I think at that point I got books and started using Stack Overflow, which allowed me to increase my knowledge of the language. Now I’m starting to learn C++ both from (minimal) previous experience and a book.
(“That’s starting out with twelve minutes” – 3×3=9, or the boxing timer goes for 4 minutes, I do not know boxing)
One minute rest in between each round.
Great. The best article I have read so in terms of keeping a good track of learning as a developer.
I have just received some help from this. I have been learning for over a year and I have not made any serious progress on Javascript.
I guess following the above principles, I should make 2020 a better year.
News Year’s Resolution
Thank you for your post. I am a high school teacher embarking on fourth year, second semester Intro to Computer Science class, currently in year one of our curriculum’s second rewrite. I am the author of our high school’s curriculum supported by one other teacher, a businessman, linguist, and hobby coder.
I feel validated by your remark:
> Since I deal with newbies, I center your initial plan around learning keyboard shortcuts, command line, git, text editor and Markdown.
We are now finishing our first unit on file systems, computer storage, bits and bytes, and keyboard shortcuts. I would like to revise our second unit to focus on teaching command line (file and folder crud operations), version control with git and github, and html/css.
Are you focusing on Markdown because of StackOverflow QA and comments formatting? Would you still teach it to 9th graders before HTML necessarily? I thought it a novel idea, but then I didn’t know where I would begin having students render Markdown. Github Pages comes to mind…
Hi,
Since github is the premier tool for showcasing projects for most budding engineers, we use that. I view a good readme as important is the project itself. It gets them into the habit of making clear good docs.
What kind of projects are you doing? For example, are you building tools for yourself? If, so which ones?
Hi,
One tool we are working on internally is called FNG (( F*cking New Guy) Tracker. Its a play on what drill sergeants used to call us when we first come to basic. Its already expanded to be our troop tracker for long term growth.
IMHO, the really successful people don’t wait for January 1st to start things.
“it’s usually the same time everyday.” – I can’t believe that. Is there a study on that?
Hi Thomas,
There are numerous studies and books on the how consistency, planning and making the time leads to the success of goals. Two great books that I recommend on this subject are the ” Power Of Habit” and “Atomic Habits”.
I think, good advice, but to learn to write code, it would be nice to share some resources.
Motivational post, I like it.
Maybe I wont use it for learn how to code, but maybe for other goals in my life.
Thank you.
20 years ago when I was only a couple of years into my career I was talking with a neighbor who was unable to get his foot in the door. As we talked he mentioned knowing about knowing about the modulo operator, which as least convinced me he probably had what it takes.
Not everybody however is cut out to code, but the current mentality seems to be the opposite. We used to have weed-out courses in college, now we seem to hand out participation ribbons to everybody who goes through a bootcamp.
Sorry about my tangent, but there’s a point: for those who really don’t have the ability, all your advice is useless in my opinion, sorry.
Your domain expired.
While the abundance of free blogs, videos, drag-and-drop IDEs, and Stack Overflow often makes programming easier, it also makes learning too easy. Not enough programmers read official documentation anymore before diving in (if they ever read it at all), because it’s just too long and boring given the range of options.
Making a plan is so valuable.
I believe it helps you really bring it to life by accomplishing plans step by step.
LogicalException: Can’t learn “how to learn” without knowing “how to learn”.
What a lovely way of creating the building blocks of learning a new skill set. I can definitely relate to this as I am a 38 year old female that has been struggling to learn not because I do not have the aptitude to learn but because I never was given the time to learn. I am determined to go through the rigorous process of arming myself with the skills that I would be needing to survive the age of AI and human collaboration.
I will utilize this article as a guideline to ensure I don’t lose site on my goal. Cheers!