Two Wonderful Investments In Your Programming Career


We invest a lot of our time learning programming languages and frameworks, but I think it's just as important to learn the "foundational" skills of our industry, including:

  • Patterns and Principles
  • Architectural Styles
  • Object-oriented as well as Functional
  • Your editor
  • SQL

I think most people absorb the first two as their career progresses, and some might dabble in the third. But how many of us take the time to learn SQL or an editing skill like Vim?

SQL: The Gift That Keeps Giving

Whenever I suggest people learn SQL, the pushback I get is that "SQL sucks", it's old, and not good for many tasks. This tells me that I should do a better job positioning my suggestion.

I've long held that your application exists to do one thing: produce happy customers which, in turn, produces wonderful data. Your company relies on this data to know if you and your application actually work as intended. Often, it's up to you to collect this data.

When you learn SQL, you learn how a database works internally (if you're using a relational system). How data is stored, protected, and what guarantees are in place to make sure you're not generating crap.

I learned SQL back in 1993 and it was, and still is, the best investment I've ever made in my career. I use SQL on a weekly basis to do all kinds of things, like figure out what kind of video production I want to make next (I'm thinking something about GitHub).

You can learn SQL in a weekend, it's so simple, and so powerful!

Vim, My Old Friend

I dedicated 2 weeks to training my fingers to use Vim, back in 2008. I was building a Rails application and I took the time to watch a PeepCode video (Smash Into Vim, which is now at Pluralsight) and practice on the job. I went slowly at first, but then...

I'll never forget a friend watching me code one day, muttering to himself "I should learn Vim someday". I didn't think I was moving all that quickly, but after switching screens and watching him code... it was like watching grass grow.

Vim has come and gone for me over the years as I moved to various IDEs, like WebStorm, RubyMine, TextMate, and eventually VS Code. I had reasons for moving to each one, but every now and again I pop into Vim just to remind myself how good it is.

And then I found the NeoVim bindings for VS Code. Full disclosure: I work with the VS Code team at Microsoft, making videos and extensions. Last week we were talking about the NeoVim extension which embeds a full version of NeoVim directly! It basically turns the VS Code editing experience into a Vim experience.

I like VS Code, a lot. I like the extensions, the shortcuts, and the overall look and feel. I've been using it for the last 9 years and loving it. I tried to plug in the Vim bindings previously, but always felt frustration.

The NeoVim extension changed all that. I goofed around with it for a few hours, and within minutes my fingers were falling into the old patterns - but I was using VS Code! It was a very happy moment - so much so that I made a video for it!

It's pretty wild how, after all these years, I can fall back into Vim and be so, so productive once again. It's also weird how I haven't aged a bit!

What are your favorite investments? Let me know!

P.S. Would you be interested in a video production like "The GitHub Pro"? My idea is to show how to use GitHub for personal (building your profile, a good issue and PR), professional (creating a project, locking things down, issue and discussion templates), organizational (GitHub Flow, Trunk-based, branch policy) and devops (actions, build, etc).

Thanks again for reading!

Rob

🥷🏽 Notes From an Imposter Programmer

I taught myself to code in 1998 and within 7 years had a client list that included Google, Microsoft, Starbucks, Ameritech, KLA-Tencor, PayPal, and Visa. In 2014 I decided that I really needed to understand core Computer Science concepts, so I dove in, using the free resources from MIT and Stanford. In 2016 I shared what I learned with The Imposter's Handbook.

Read more from 🥷🏽 Notes From an Imposter Programmer

I was talking with a coworker the other day about one of the new AI offerings and how well it simulated human interaction. I was asking it to summarize some notes I had taken on a book, and it did a fantastic job - but I then mentioned something I truly believe: AI is mediocre, at best It has to be, by definition. It's just repeating back to us the most common and probable things that we have said to it. Or, as Scott Hanselman describes it: "AI is a sock puppet on your own hand":...

I was at a local clothing store with my youngest, looking at clothes over the summer. She was trying to find a good pair of jeans, so we ended up at the Levis store, which isn't cheap. She found a very nice pair that were $95, which seemed a bit high but she's in college now and I suppose that's when you start thinking about buying nicer things. She's extremely thrifty, unlike me, so she suggested: Dad we should drive up to Nordstrom and look there. They have a great selection and it's...

In my last note I mentioned that I put my precious Bullet Journal on the shelf (which really does make me sad) and switched to Obsidian as my full time journal. I wrote about this process in The Imposter's Roadmap as well. I did this for these reasons: I like to review what I've done for a given month, and often need to find a specific reference. That's difficult with a paper-based book. I like saving code snippets. I like using tags so I can roll up my notes and entries based on who or what....