Email

Hi Devon! I’ve been very impressed with everything you’ve put out on the web to help folks learning to become developers. It feels a little early to send you this, but I’ve learned to follow my intuition when it says, “Hey. You should say hello to that person.”Hello!I am teaching myself programming in the hopes of finding a better career. I first found your site because I am a huge Scott Young fan, and as I tackle this project, I’ve been trying to follow the principles in his book, Ultralearning. He’s a big advocate of learning by doing, and your article on “Stop Doing Tutorials” was the top result when I googled, “programming learn by doing”.I have an unusual backstory. I actually got a CS degree from a small liberal arts college back in ‘07, and didn’t learn a hell of a lot about coding during it. So I went to law school instead. The law was not a good fit for me, and so now after some more wandering I’m looking at teaching myself programming.I’ve got the Michael Hartl books, because I remember the massive frustrations I went through with IDEs and other peripheries back in the day. I’ve worked through the Learn Enough Command Line, Text Editor, and Git and I had just started HTML when I found your site.I love the “5 Whys” technique. Mine looked like this:

  • Why do I want to learn programming?
    • So I can get a job programming.
  • Why do I want to get a job programming?
    • So I can make money and do something I like and have more freedom/flexibility.
  • Why do I want to make money and do something I like and have more freedom/flexibility?
    • So I can have the life I want.
  • Why do I want to have the life I want?
    • Because I will be happy.
  • Why will that life make me happy?
    • Because I will have freedom, and autonomy, and security.
  • Why do I want freedom, autonomy, and security?
    • So that I can spend my time meditating and helping people.
      • A year at Tassajara
      • A year helping Pine Ridge
      • A year helping prisoners
      • Living in community

So that’s my big goal: to have enough financial freedom and/or schedule flexibility to be able to do things like spend a year as a Zen monk or go help prisoners or go help First Nations people while living in community.It looks like you’ve set yourself up as a career transition consultant for people making this switch. Do you have any slots free for a new client? If so, what is your pricing structure?If you’re full up, I completely understand. Thanks for taking the time to read this and for such great free resources. Have a great day!Best,Chris Scott

Hi Devon,This is perfect. I’m excited!I’ve signed up for the Marathon cohort. I’m off the next three days and it would be great to have a call during that time; if not, I’ve got a lot of flexibility going forward.I’d like to talk about things on a 35K-ft level for our first call. I actually may not have a ton of time this month to do good work; I have a couple big personal commitments the first week of April that are gonna require a ton of work between now and then. Which feels great, actually; I’d really like to get everything planned out well before I start putting in 20-hour weeks on this.For this call, I’m hoping for three main things:

  • help with concrete details planning my learn-programming project: I have some good ideas in theory and I need some help putting them into practice
  • feedback on assumptions I’ve made about the tech stack
  • help finding project(s) to work on

Like I told you, I’m working with the principles in Ultralearning. The author, Scott Young, got to the front page of Reddit a few years back for finishing a self-taught online MIT CS degree in a year. His stuff is great, and he partners regularly with Cal Newport, whom I may like even more (Deep Work is phenomenal). Here’s what Young recommends for learning:

  • Metalearning: research and make a plan
  • Focus: remove distractions and have a clear goal each session
  • Directness: learn by doing
  • Drill: break things down into granular skills and drill them
  • Retrieval: make yourself actively pull things from memory. Test recall
  • Feedback: (I’m super psyched to have you available for this)
  • Retention: use mnemonics and other memory techniques to make learning more permanent
  • Intuition: develop intuition through play and exploration. Push edges and leave the sandbox

I’m still very much on the metalearning part, designing the whole project. Here’s what I’ve got so far (influenced by your own articles):

  • Goal: become a full-stack web developer so that I can go be a Zen monk who lives in community and spends his time helping people
    • Here’s the first place I’d like your help: I’d like to make this goal specific, measurable, attainable, relevant, and time-bound (I like the SMART goals setup). I’m hoping for some feedback on four out of five of those.
      • Specific: I need to pick a tech stack to learn and projects to build.
        • Tech stack: It seems to me that one of the biggest advantages of your freelance-first approach is that I get to pick my tech stack. I love the idea of focusing on shipping, and I think the fastest way for me to get there is through Ruby on Rails, using the Learn Enough tutorial. I’m also down with doing another stack if you have strong feelings in this area. 1. What do you think about just focusing on Ruby on Rails?
        • Projects: the two main things I want are both phone apps: I want a list of lists (this really would be fine on PC, probably). It makes me crazy that to-do lists don’t allow nested lists—I’ve found one that allows for a single nested list (it does a list of lists, but the nested list can’t hold lists). I’d like a program that allows at least three levels of nesting lists, and since I’m running a machine with 32GB of memory, it seems reasonable to aim for more than that. For my phone I want an alarm I can schedule for a specific date and time without having to repeat it. I use tons of phone alarms, and the alarm on my phone only works for not-today days if I schedule it to repeat on a specific day of the week. I want a phone alarm I could set for, say, April 15 at 10 AM to make sure I’ve done my taxes. To keep this as a web app for now it would be fine to do a call or even a text. In fact, the combination of a call and a text would be better than an alarm as long as my phone isn’t in airplane mode. The lack of a list of lists and the lack of a schedule-able phone alarm are definitely the two tech problems that come up the most for me, and they both seem pretty solvable.
          • I’ve been thinking, though: shouldn’t I also start looking at projects that I just feel OK about? It seems like most of the reality of this work will be doing projects that don’t necessarily light my hair on fire. Is it valuable to get a taste of that early? 2. What do you think about my two projects, and about working on stuff that doesn’t make me super geek-horny?
      • Measurable: I feel like the best way to make this measurable is just to have shipping benchmarks: a static site, then an interactive site, then a site with a backend. Then just keep adding more projects to the portfolio, and at some point get out there and start finding clients. 3. Does that sound like a reasonable way to make my progress measurable while focusing on shipping?
      • Attainable: this and the time-bound are where I’ll need the most help. The list-of-lists and phone alarm both seem very attainable. Do you agree?
      • Time-bound: I’ll probably punt on this until our call in April. By then I should have a clearer idea of how much time each week I can devote to this going forward, and how fast I’m moving along.

One more big question: how much HTML and CSS should I teach myself right now? I’d like to get to the meat and potatoes, and it seems reasonable to just learn as much HTML/CSS as I need while I go along. Using this approach, I would just jump right to the Ruby on Rails tutorial, which has a little of each.So it seems like tentatively, my first goal would be to work through the Ruby on Rails tutorial, keeping an eye out for stuff that could be used for the list-of-lists project and the phone-alarm project. It has to be my third priority during March, but starting ten days or so into April it can move up to #1. It would be great to set up a call to discuss all this in the next few days or weeks, and then another for April 14 or so. Would that work for you? Hope all is well in Seattle.Best,Chris

Hi Devon! I’d like to put in a new #1 priority for our call: **how in the name of all that is good and holy can I get better at installation and dependency nightmares? I swear to God I can’t set up a dev environment to save my mother’s mortgage.**Last night I dove into the Rails tutorial. I started around 11. At 11:45, I was closing in on finishing the first section, just needed to install Ruby, run a couple scripts, install Heroku, push everything to Heroku, and I’d be done for the night, ready to start the real stuff today. Felt like I was about 10 minutes away.At 3 am, I reluctantly shut it down after 3 hours of struggling with version numbers and nearly-unique-to-Google error messages referring to phantom files that I swear to God don’t exist and never did—after about an hour of struggling with getting the right (slightly older to match the tutorial) version of Ruby up and running, the next two hours were spent trying to figure out why Heroku kept insisting I had two Gemfiles, and that they were fighting each other, while every available method I know for searching files and directories was telling me I just had one.This was the main thing that got me out of programming back in the day. I was the only kid in my classes who didn’t grow up in front of a monitor, and the combination of being the only one who was bad at all this bullshit along with the frustration of being bad at this but good at the hard stuff made me absolutely insane.**I chose Hartl’s courses in large part because of their focus on these fundamentals—he has an entire goddamn course on “Learn Enough Dev Environment to Be Dangerous”—and I still can’t get past the first section of his flagship course.**So. For my sanity’s sake, if I want to do this for a living I will need to do the thing athletes and musicians talk about where they practice their weaknesses relentlessly until they become their strengths. I have the drive and the energy: I was genuinely pissed at having to go to bed at 3 am last night with the problem still unsolved (see attached pic). So what I need is a program of deliberate practice to fix this. For our call, I’m hoping to check as many of these boxes as I can:

  • Learn best practices in this area
  • Learn which technology stack is best for avoiding these problems—I had thought Ruby would be an advantage in this area, since it’s a closed ecosystem (am I using that phrase correctly?), but now I’m not so sure. Which stack would you choose to minimize this nonsense—what is known in the industry for “just working?”
  • Isolate my root weaknesses in this area, both mental and emotional if necessary (it seems to me that staying up till 3 am may be a sign of taking things personally. I’ve been in recovery for 8 years so I have a big toolbox when it comes to stuff like that)
    • Related note: is there a good book on the emotional side of programming? There’s lots of great stuff out there for sports, they call it the “mental game” but really it’s the “emotional game,” and there’s tons of stuff out there for artists and writers. The only thing I’ve ever seen for programmers was a tweet where someone said, “I’m a programmer, which means I get frustrated for a living.” Like I said, I have a lot of resources here, but the only place where I can think of an extended treatment of this is Zen and the Art of Motorcycle Maintenance.
  • Identify strategies for improving/eliminating my weaknesses
  • Identify ways to drill these weaknesses, with built-in feedback as part of the process, until they become strengths

The rest of the stuff I outlined in our previous emails can definitely wait. I’m more than happy to spend all 60 minutes on this.Thanks again for all your time and I’m looking forward to our call.Best,Chris