Emacs, coaching, and unknowns: Figuring out what I want to learn

I’ve been playing around with the idea of hiring an Emacs coach, since Steve Purcell, Christopher Wellons, and Bastien Guerry all offer this service. It helps to go in with a clear idea of what I want to learn, though, so let me figure this stuff out.

Here are some general topics, sketching out an order for learning the subtopics:

  • Thinking syntactically, so that I can work faster and more reliably
    1. Expand-region: Faster selection.
    2. Smartparens: Logical manipulation. This is probably the biggest chunk.
    3. Erefactor, redshank: Other tools for working with Lisp.
    4. Magit: Thinking of changes in terms of commits; low priority because I rarely need to coordinate with others, although I can bump this up if working on community code
    5. In general, working with larger chunks – so also projectile and other cool tools
  • Web development workflow, so I can work more professionally and handle more complexity. Focusing on Rails, NodeJS, and AngularJS
    • Rails workflow
      1. Testing
      2. Constant testing with guard, better interaction with browsers, etc.
      3. Navigating between files in a project with Rinari or Projectile
      4. Code navigation and documentation lookup with Robe
      5. Working with things like HAML, Sass/Less, CoffeeScript
      6. Refactoring Ruby code
    • Javascript workflow
      1. Testing frameworks, running tests
      2. Getting autocomplete sorted out
      3. Integrating Skewer into the way I work
      4. Working with things like HAML, Sass/Less, CoffeeScript
      5. Rapid prototyping: Grunt, Yeoman, etc.
    • General-purpose tools
      1. Folding/overview, imenu?
      2. Jumping to specific points quickly – ace-window, ace-jump, helm-swoop
  • Integration, so that I can take advantage of Emacs in more parts of my life
    1. Organizing my journal
    2. Trying out Elnode so that I can expose Emacs information to Javascript
    3. Getting back to doing mail in Gnus
    4. Using MobileOrg to review Org on the go?
  • Internals, debugging, and contributing to the community so that I can help out, and so that I can customize and debug more extensively
    • Emacs core, Org internals, syntax, font-locking, indentation, macros, Helm, …

Coaches are also good for pointing out what you don’t even know you don’t know, which is a lot when it comes to Emacs. That’s another nice benefit of having someone look over your shoulder – they can catch you doing something in a round-about way even if you don’t even know that a more efficient way exists. But even with the stuff I know I don’t know (and that I have a reasonable plan for learning), there’s plenty to keep me occupied for the next few years. =) Besides, helping out on IRC and in mailing lists/newsgroups will expose me to stuff I don’t know too.

So instead of turning up on one of these people’s (virtual) doorstops and asking, “Can you teach me all the stuff I don’t know?”, maybe this is what I can do instead:

  • Lay the groundwork by writing about and demonstrating the things I do know, so that I explore my limits, help other people learn, possibly get suggestions from random passers-by, and help potential mentors/coaches quickly get a sense of what I might be missing
  • Double-check my plans for learning different things with more experienced people who can give me feedback on sequence, exercises, and things I should include
  • Develop plans for deliberate practice of different components; slow down and notice opportunities to try things out
  • Share what I’m learning and my plans for what to learn next
  • Touch base once in a while

So much to learn! =)

  • Gordon Tillman

    Great post Sacha. Be interested in reading of your experiences in working with a coach. I am fortunate enough to work with a couple of people who have many years of Emacs experience and they have been extremely helpful.

    • That’s one of the benefits of working with a team. =)

  • Fuco

    I’m finally getting the stupid microphone reduction (I couldn’t find it anywhere online ever since I got the new computer)… if you want we might theoretically do some smartparens “conversation” (for a lack of better term) and put it somewhere online… BUT…

    *you* have to think of the things we’d cover because I’m terrible with screencasts!

    • Fuco, this would be great!

      I think the cheat sheet would be a good place to start: review the basic commands, and have you show off the more advanced commands. I realize the cheat sheet does this already, of course, but I think a guided tour could be really helpful.