Since I’ve been learning Ruby on Rails, et al, I’ve learned what I like and dislike about learning software development. I’ve been taking a lot of courses on Lynda, and I just learned about definition lists in Markdown. I’m going to use definition lists to share my annoyances in learning software development. Edit: definition lists aren’t working so I’m just listing my opinion.


  • when a feature of a programming language or framework was previously difficult to implement but is made easy due to abstraction and obfuscation. “We used to boil spinach and serve on the side, but with this new lasagna recipe, the spinach comes baked right in!” This phrase isn’t helpful to a newbie because we’re not familiar with the spinach on the side.


  • starting a server upon which our code can operate. Usually preceded by the emphasizer, “just”, as in “you just spin up a server and it just works!” Similar to being “baked right in”, newbies don’t come from a place of experience to appreciate how configuring and starting a server works, or even what a server on our local machine is.


  • the syntax for the base programming language, e.g. JavaScript, not to be confused with jQuery, Ajax, or a framework like React.js. “Instead of doing a vanilla bench press, let’s attach a kettlebell to each side with a band so you have to slowly control the descent and ascent,” said nobody ever.


  • when your code throws an error. Instead of using this metaphor, be explicit as to what’s actually happening.


  • when your program crashes due to an error so severe it surpasses “yelling at you”. Try explaining what’s actually happening, such as the code failed to compile.


  • when prior implementations took a good deal of configuration, but in this language/framework, it (the implementation) just works. We’ll take your word for it, but it doesn’t add to our understanding or appreciation.


  • after forking and cloning a repository to your local machine, you gotta do some configuration and finagling so you can start working on the app in your development environment.


  • managing architect; hiring manager; one hundred and forty pounds

In the real world, I try to be as concrete as possible. For example, instead of ordering “scotch on the rocks” I’ll ask for “scotch on ice”. Same idea goes for shorthand commands. When learning, it’s better to be verbose and replete in the beginning before we abstract and obfuscate code for efficiency. I’ll typically request a user to use Rails console by running rails console instead of rails c.