The Self-Taught Developer’s Survival Guide: How to Kick Ass at Learning Web Development

Man breaking board with a flying kick
Welcome to the latest installment of the Self-Taught Developer’s Survival Guide! It can be easy to get overwhelmed by the sheer volume and complexity of what you’ll need (or think you need…) to know to get hired as a web developer or to begin freelancing, but I’ve got you covered! Today I’ll be talking about the guiding principals to take advantage of to ensure that you stay on target and kick ass at the process of learning development!

Picture of books

Know Your Personal Learning Style and Take Full Advantage Of It

This is one of those things that always bears repeating: The best learning resources in the world won’t be of much help unless they fit in with your personal learning style. So don’t try to force this! If you learn best from written sources, don’t commit to a diet of video tutorials. If you’re not sure what your ideal style is, take a test. Then, seek out recommended resources in that vein, and have at it!

Person withing on notepad

Take Hand-Written Notes

Unless you happen to have eidetic memory, this is a must. Research has proven that the physical act of writing (NOT typing!) aids in retention, so doing this will enable you to spend less time with the material. also, trust me when I say that you WILL need to refer to explanations of tricky concepts. As much as it adds to your initial study time, you will learn faster, saving time in the long run.

Woman at Chalkboard

Begin Learning New Technologies by First Mastering High-Level Concepts and New Terminology

I believe that one of the most difficult parts of learning a new language or framework isn’t necessarily the technique involved with using that technology, but getting acquainted with how it does what it does. Certain technologies are more jargon-heavy than others (looking at you, Angular. Decorators? Directives? Services?), and that warrants some time to understand those before getting your hands dirty. What I recommend is applying a slight variation on the 5 ‘W’s, and being able to answer these questions before  getting in too deep:

  • ‘Who’ is this technology?
  • What does it do?
  • How does it do what it does? What is it’s distinguishing features in performing that work? Is there anything particularly unique or novel in any of its parts?
  • Where would this be used?
  • Why would you use it? What problems or sort of work does this excel at?

Another tactic that I recommend is to figure out what key concepts power that technology and get familiar with those quick. I’ll use HTML and CSS as an example here: Though it’s been improved by the advent of Flexbox and Grid, layout is infamously the most difficult aspect of CSS to master. I think that new students would benefit from learning about the CSS different types of display types (inline vs block) BEFORE learning most of HTML, so they have that context handy when getting acquainted with the default display types in HTML as they learn. Every technology has key concepts that power it, and when you have a deep understanding of those concepts, it will open up that learning.

PIcture of code on screen

Stay Engaged by Building Projects to Show Your Work

You should do everything I suggest in this blog post, but this point is the most vital, particularly for finding a job. One of the biggest mistakes I made for the vast majority of my time learning web development was focusing on courses and tutorials to the exclusion of personal projects and experimentation. This cost me dearly in two specific ways:

  • Showing your work and what you can do is vital in this field, especially when you don’t have a college degree.
  • Tutorials are great, but when you’ve progressed enough with a technology to the basics plus know what you don’t know about it, you’ll progress much quicker if you throw yourself in the deep end, and have to figure out how to do things with no fixed point of reference. You need to be able to move independently, and sticking to tutorials will stunt your ability to do so.

Picture from Legend of Zelda Video Game

It’s Dangerous To Go It Alone!

Hmm, maybe better not take that wooden sword? You could be tempted to use it on your laptop the next time you run into a particularly hairy bug. But the old man is right in that doing the lone wolf things isn’t the best idea in the world. That hard work that goes into learning development means that you’ll do better when you’re in touch with people who can offer advice, encouragement, and just generally keep you from getting too isolated on the journey. Also, you’re generally going to be developing as part of a team in the real world, and it will pay dividends to keep your people skills honed. Finally, networking is one of the most effective ways to make yourself known to potential employers, so make sure you’re putting yourself out there at meetups, hackathons, and other events!

In Conclusion

Learning development requires a lot of hard work, but you don’t want to put in needless work. I hope these tips accelerate your learning, and I’ll see you in two weeks for tips on effective debugging!

Self-Taught Developer’s Survival Guide: Essential Reference Sources for Web Developers

Picture of Encyclopedias

Welcome to the Self-Taught Developer’s Survival Guide! As I discussed in a previous installment, there is far too much information in web development for any one person to hold in their head at once, so we need to be smart and make good use of reference sources while learning or developing. Today, I’m going to discuss the most vital of those reference sources!

Google

Picture of Google Search Page

Google was helpful to me before I was a developer, but it’s usefulness took on a whole new dimension when I started coding. There’s not much I have to say that you don’t already know or can’t figure out, but Google is an essential tool, especially when you’re banging your head against the wall trying to squash a bug or get to the bottom of puzzling behavior. Google is not as specifically useful as any of the following resources, but it is what points you to the exact location of the best possible answer!

MDN

Picture of Mozilla Developer's Network

The Mozilla Developer’s Network is arguably the most integral web development reference site on the internet. While not the official W3 web documentation, this wiki site is the closest thing to Word of God on all things web, as it is much more reader-friendly than the official specification. The entries may seem overwhelming to beginners with all that’s on display, but you will quickly adjust to the style, and find yourself coming here time and again for help with syntax, particularly with JavaScript built-in methods.

CSS Tricks

Picture of CSS Tricks Page

CSS is surprisingly tricky, despite its simple mechanics. Throw in multiple browsers, display formats, and it will quickly become clear that you need all of the help you can get. Chris Coyier started CSS Tricks in 2008, and it has since grown into one of the best places on the web to find out just how to deal with that edge case you’re currently fighting to get your application styled properly. I would recommend CSS Tricks just on the strength of it’s outstanding guides to Flexbox and Grid, but there is so much more on this site for you to take advantage of.

Individual technology Github pages

Picture of Github Issues Page

Let’s be clear: when something goes wrong with your code, YOU are what went wrong the vast majority of the time. But sometimes errors persist after you made sure there were no syntax errors and everything is as it should be on the page. In this age of wide adoption of open-source libraries, frameworks, and other technologies, the Github page for a specific technology is a great resource. You can read about support, installation, intended use, view source code, or even contribute! The “Issues” section of a technology is a great place to find out if there’s a genuine bug or quirk with a version of something. These discussions are typically quick and to the point, and have helped me personally circumvent some nasty bugs.

Stack Overflow

Picture of Stack Overflow page

Stack Overflow is the largest site on the internet for programming questions and answers. SO has a not-unwarranted reputation for being condescending and harsh to newer-developers, though the site has recently added a Code of Conduct intended to curtail that sort of behavior. That said, it is generally an excellent resource for getting help with programming questions. If you’ve never been to Stack Overflow before, make sure you pay attention to the code of conduct, as it’s expected that questions on the site follow a specific format.

I hope y

Self-Taught Developer’s Survival Guide: The Best Online Learning Resources for Web Developers

Welcome back to the Self-Taught Developer’s Survival Guide! I’m very excited about this week’s entry because it addresses one of the key concerns facing aspiring web developers: Where is the best place for me to learn? There are a lot of options out there on the web, from blogs to full courses to ebooks, and as the biggest problem facing someone learning a new skill for the first time is that they don’t know what they don’t know, I’m going to simplify things for you by presenting an overview of what I think are the best places on the web to learn development! The resources listed here perform particularly well in three areas:

  • Price:  They’re free, or relatively inexpensive.
  • Current Knowledge: Web Development moves faster than more other professions, and these resources have proven that they can keep up at least reasonably well,
  • High-Quality: The material is explained well with the appropriate level of detail on these sites. To cite an example, when I finally got around to reading classic software books like Robert C. Martin’s Clean Code or Steve McConnell’s Code Complete, there were a lot of best practices that I had already internalized because that was the style employed by teachers on Treehouse.

Before we get started: I’m making a distinction here between sources that actively teach development, and resources to utilize as a reference to while you are learning and actively working as a developer, which I’ll be discussing in a later post.

freeCodeCampfreeCodeCamp Logo

What’s their deal?: Founded in 2014 by Quincy Larson freeCodeCamp is exactly what it says on the tin: a free online coding boot-camp.

Strengths: There is an embarrassment of riches in terms of learning material after a recent upgrade of the site, hundreds of coding challenges, and certifications to show when you’ve passed certain milestones in your coding journey. freeCodeCamp also has a fantastic, highly supportive community on its official forum and on Twitter. If you’re new and don’t know where to start, freeCodeCamp has the most organized path of progression out of all the resources sources listed here.

Weaknesses: Because of the crowd-sourced nature of the site, there is some variance in the quality of individual challenges. Challenges are sometimes presented in a way that doesn’t clearly convey what a technique is useful for, or specifically how it works. The backend challenges, in particular, offer little to no explanation for some techniques, literally sending students to the official docs. Also, there currently is no feedback on code problems apart from anything that renders on the screen, so you’ll have to debug JavaScript elsewhere, which is pretty obnoxious. However, there is an active community on contributors, so don’t count on any major problems staying that way for long.

How much does it cost?: Um, it’s free. If you’re so inclined, you can set up a monthly donation to help keep the lights on.

How essential is it?: Don’t let the length of the weakness section here fool you: freeCodeCamp is one of the most integral learning resources for new developers and developers who want to expand their knowledge.

Pluralsight

Pluralsight Logo

What’s their deal?: Pluralsight is a subscription site with hundreds of comprehensive video courses on a vast array of tech subjects.

How much does it cost?: At the time of this writing, a Pluralsight membership is $35 dollars a month, or $299 for an annual membership.

Strengths?: Pluralsight has an impressively broad curriculum available, from design to development to many other IT topics. There quite a few topics that aren’t discussed on any other resource on this entry except for Pluralsight. There are lots of courses by high-profile teachers such as Douglas Crockford, Deborah Kurata, and John Papa. There are quizzes to test your knowledge of a particular technology or retention of a certain course section’s material.

Weaknesses?: Pluralsight currently lags behind the other resources I talk about here to keep up to date, particularly on it’s learning paths. The “Skill IQ” feature that tests your knowledge of a technology can be quite arbitrary since it’s just a multiple-choice test that you can get extremely lucky or unlucky on.

How essential is it?: This is very situational. If there’s something that you need a deep dive on that isn’t covered in depth somewhere else, Pluralsight has you covered. But Pluralsight, as good as it is, has some limitations that force me to recommend it with caveats.

Wes Bos

Picture of 30 Days of JavaScript Landing Page

What’s their deal?: Wes Bos is a Canadian developer best known for his 30 Days of Javascript video course, who has put out extremely high-quality courses on React, Node, and other subjects. Wes is an essential follow on Twitter for developers because of his numerous insights and hot tips. He is also part of the team behind the excellent Syntax.fm podcast.

How much does it cost?: Wes’s Flexbox, Grid, Redux, Markdown, Command Line Power User and #30 Days of JavaScript courses are all free. His other courses are not, and prices vary depending on where in the world you live, and whether or not you have a promotional code. Prices are around $60-80 per course, promotions are run frequently.

Strengths?: Wes is an excellent teacher and a deeply experienced self-taught developer. His courses are comprehensive projects that will give you a solid grounding in the technologies they teach if you take notes and really pay attention to what he’s teaching. Wes explains concepts on a very accessible level.

Weaknesses?: Only that there’s only so much material, but c’mon, he’s one guy! Some of the courses (Sublime and Command Line) are pretty dated, but that’s not the norm; Wes is very good about keeping material current.

How essential is it?: My position is that every person learning web development should go through Wes’s 30 Days of JavaScript course. I have personally taken his Node, React, Redux, and ES6 courses, and they are all money very well spent.

Treehouse

Treehouse Logo

What’s their deal?: Founded by Ryan Carson in 2011, Treehouse is an online learning platform with a mission to make learning affordable and accessible. They have a wide array of courses comprised of video lectures, quizzes, and coding exercises. The curriculum covers topics related to web development but also dips into business, design, and other related topics.

How much does it cost?: $25 a month.

Strengths?: Very high production values, and a warm, inviting site. Treehouse has a LOT of material on languages including JavaScript, C#, Go, Ruby, PHP, Java, and more. Of the resources listed here, Treehouse has the most consistent high quality. There is also a premium Techdegree program which functions as an online boot-camp, for $199 a month. Along with freeCodeCamp, Treehouse has the most organized and clear path to learn of all the resources discussed here today.

Weaknesses?: As of the time of this writing, there is next to nothing on algorithms that will help newer developers prepare for the dreaded white-board interview. This is a minor point, but it makes Treehouse less effective than other sources on this list for interview preparedness. Treehouse is also expensive than most other sources, particularly for the Techdegree.

How essential is it?: Treehouse can be extremely useful, especially if you’re very new to tech and will benefit from the deep, detailed explanation of the web development ecosystem that exists on Treehouse.

Udemy

Udemy Logo
What’s their deal?: Udemy is a site with video courses on various subjects. It’s not limited to tech or development, but their range of development courses is impressive.

How much does it cost?: Prices vary, but sales are frequent, so you should never pay more than $9.99 per course.

Strengths?: You have quite a bit to choose from here, in terms of material and instructors. Curriculum on Udemy is generally updated more quickly than on the other resources, and that is key with rapidly changing technologies like React or Angular. There are some very strong instructors on Udemy with project-based courses that will boost your development abilities, such as Maximillian Schwarzmuller, Stephen Grider, Mosh Hamedani, and Andrew Mead. If you choose the right courses, you can’t get a better return on your tech education investment than Udemy.

Weaknesses?: You have quite a bit to choose from here, and not all of it is created equal. Fortunately, poor quality courses can be pretty easy to avoid. I would recommend only choosing from courses rated 4.5 stars or higher, if at all possible. Tags like “Best Selling” and “Highest Rated” also help you to make informed decisions about what courses to invest in. I believe that you can get more out of Udemy than any other source, but you HAVE to go in with a pretty good idea of what you need to learn and be ready to curate the experience. Having said that, there will be a future entry in the blog coming soon that lays out a path of the best web development courses on Udemy.

How essential is it?: Udemy is my current favorite learning resource, and I believe a new developer with the right roadmap can get up to speed skill-wise quicker with Udemy courses than any other resource.

In Conclusion

I hope this list simplifies things for you and points you towards a learning experience that rocks! Next time on the Self-Taught Developer’s Survival Guide: The best online reference source for developers!

Like a Song: What Music Taught Me About Programming, Part Two

Welcome back! Today, we’re going to talk about the elephant in the room. The under-performing, 17-years-in-the-waiting, 71-minute-long elephant. And, we’re going to talk about one particular programming mistake that this elephant demonstrates better than literally anything else I can think of.
Chinese Democracy Record Cover

The Reader’s Digest Version

For those unfamiliar with Guns N Roses and the saga of the exceedingly long wait for Chinese Democracy, here’s a quick recap: Guns N Roses stormed onto the music scene in 1987 with Appetite for Destruction, which became one of the best-selling records of all time, as well as one of the most acclaimed rock records ever. Appetite was followed by the EP GNR Lies in 1988, and the simultaneous release of Use Your Illusion I & II in 1991. The band is doing great; both of the Illusion records will top 18 million records sold apiece. Now things start to go south…..

One by one, the classic line-up that made Appetite dropped off, leaving singer Axl Rose the sole original member of the band shortly after the recording of  1993’s all-covers The Spaghetti Incident. Rose was notoriously capricious, a perfectionist, and had reached the level of fame and prestige where one can’t be put in check by anybody. Chinese Democracy was first mentioned by name in 1999 during an interview with MTV, but the record wouldn’t surface until 2008, becoming a running joke along the way for something that would never happen.

The big question after a wait that long is naturally “Was it worth it?”, and the answer is “…not really?”. Chinese Democracy is better than a lot of people would give it credit for, but it ultimately fails to live up to the lightning-in-a-bottle volatility that characterized Appetite for Destruction, and “overproduced” is not an unfair criticism of the record. You can’t rush art as author Neil Gaiman eloquently put it in a 2009 blog post regarding the long wait between George RR Martin’s Game of Thrones novels, but there is such a thing as taking too much time to complete a task, and that’s definitely what happened with Chinese Democracy. At the time of this writing, CD has sold approximately 2.8 million copies worldwide; far less than the next worst-selling GNR record (The Spaghetti Incident, 6.1 million copies), and well short of their greatest success (Appetite for Destruction, 30 million copies). It is true that the record industry and music sales changed a lot in those 17 years, but how much of those poor sales were caused by the world moving on from a musical act that refused to keep up in a medium that demands participants stay current?

The Takeaway

When you first start learning programming, it’s easy to be overwhelmed by everything that you need to learn, and also the skill you need to acquire to put together truly impressive projects. I want to remind you that you cannot be rattled or intimidated by that difficulty, and not to fear building programs or applications that are of poor quality at first. This is hard work, and I understand being cautious about what you put out there for viewing by employers and your peers. But you cannot afford to make the Chinese Democracy mistake of taking far too long to create something to get it “perfect”. You have to move quickly, and perfectionism or other tendencies that slow productivity (beyond reasonable caution taken for testing, security, etc) will be a huge impediment to you showing what you can do. You will be bad at first, and that will be frustrating. But you will get better, and that will be fantastic. See you next week!

Self-Taught Developer’s Survival Guide Interlude: When Will I be Job Ready?

Question Block from Super Mario Bros
Welcome to a brief interlude from main Self-Taught Developer’s Survival Guide content to address an important question about job readiness. We need to clear this up as soon and as unambiguously as possible, because not having a firm understanding of what job readiness actually looks like can slow you down quite a bit.

There’s a lot to learn about even the simplest of web technologies, and half of the battle is separating the signal from the noise in terms of tech stack knowledge. So to answer the question, you will be job ready in a particular technology when you have mastered two aspects of that technology:

  • The fundamental concepts of that technology: Let’s use CSS as an example here. You MUST be proficient in the basics of writing CSS rules, how the cascade and inheritance work, how the CSS box-model works, and how positioning and layout work. This could be thought of as a form of the Pareto Principle: 20% of the basic knowledge about something is all that’s needed to accomplish 80% of the work.
  • How to get answers to what you don’t immediately know: In any web dev tech,  there is a lot of knowledge that’s potentially useful, but isn’t something that comes up so much that it needs to be memorized. Let’s use the cubic-bezier in CSS as an example: This is a technique that isn’t going to come up on every project that you do. If you happen to do a lot of these, THEN you’ll memorize the details of it. But until you reach that point, time spent memorizing relatively esoteric technique just slows you from obtaining a deep understanding of the concepts you really need to know. Additionally, this doesn’t just apply to compartmentalizing technique to be efficient: you’ll have bugs, problems with integration, and will need to learn new methods and techniques. The ability to learn quickly and find needed information is one of the most important skills a developer can have.

Now, obviously, this isn’t all there is to it. If you don’t know a thing about, say, JavaScript, you have a lot of learning to do before you can have the fundamentals down. But I wanted to frame them in this possible way because Imposter Syndrome can be pretty insidious, and you want to aim for the minimum effective dose of requisite knowledge. For the most part? Unless you suffer from the Dunning-Kruger effect, you’re going to be job ready well before you feel job-ready.

I hope this helps, and please feel free to ask further questions related to this. I’ll be outlining the fundamentals you need to know for web development in future deep dives in HTML, CSS, etc, so stay tuned for those!

Self-Taught Developer’s Survival Guide: The Tools of the Trade

Welcome back! Today, I’ll be talking about all the tools you’ll want prepared that will enable you to hit the ground running on your first day, and beyond. You’ll definitely need the first three items on this list squared away ASAP, and you don’t need to worry about Node/npm until you start serving pages for development and learning more about JavaScript and frameworks, or compiling Sass. So without further ado, let’s dive in!

Picture of a Laptop

A Good Laptop

For a smooth development experience, you’ll want a decent laptop. You don’t need to drop $2000+ on a machine, but I urge you to get a laptop with a solid-state hard-drive(SSD). The speed difference between a machine with an SSD and one without one is dramatic as far as boot time, processing and compiling speed. Whether or not you pick an Apple or Windows machine (or install some kind of Linux distribution) isn’t terribly vital (I myself use Windows), but there are some caveats that can come with Windows development. Certain frameworks (most notably Ruby on Rails) are prohibitively difficult to install on Windows, so if you happen to know for certain that you’re going to be working with Rails, think carefully before you go with Windows. You can get around that by installing a virtual machine, but even that is a bit of a hassle. So don’t feel compelled to break the bank, but make sure you have an SSD, and a healthy amount of both storage space and processing speed.

Picture of Visual Studio Code application

A Text Editor

A text editor is a software program that is optimized for writing, editing, and organizing code. There are several good choices including Atom, Sublime, Notepad++,  though I personally recommend Microsoft’s Visual Studio Code. There are many features that text editors make use of that would easily fill another blog entry (or two), but you’ll want to start using one as soon as possible for two main benefits:

  • Color-Coding: Code is colored in editors according to what it dies, and that color-coding will help you find mistakes a lot faster when certain elements don’t look the way you would expect them to.
  • Syntax highlighting: When you make mistakes, which you will do quite often, the editor will point out many of the worst of these mistakes.

For almost the first year I was learning to code, I used an editor that did NOT have a robust syntax-highlighting, and it cost me a lot of debugging time that I really shouldn’t have had to spend in the first place. A text-editor that fits you comfortably and enhances your workflow is arguably the most important tool in your developer’s toolbox.

Picture of Chrome Dev Tools

Chrome Dev Tools

Chrome Dev Tools is a suite of tools built into the Google Chrome Browser. You access them with the Ctrl + Shift + I (replace Ctrl with Command on Mac). Dev Tools lets you inspect certain elements, displays messages logged to the console,  is capable of monitoring performance and loading times for sites, etc. This is another tool that warrants a longer discussion than I have space here for, but you’ll find it a big help early on for error messages and the ability to confirm how the browser applies CSS to pages.

npm logo

Node/npm or Yarn

Node.js is a JavaScript runtime built to run in the command line, primarily designed for back-end work. There’s a lot to learn about Node, but we are only concerned about it here for its role as a dependency for npm. npm is a package manager used to install dependencies from frameworks, libraries, and other add-ons for projects. An alternative to npm is Yarn, which is a package manager developed as Facebook. Yarn is supposedly faster, though I’ve used both and didn’t notice any significant speed difference. Either one is fine; check them both out and use whichever one suits you best.

I hope this installment was helpful, and don’t hesitate to reach out to me with any questions or comments. Next time on Self-Taught Developer’s Guide: an overview of online learning resources for self-taught devs!

Like A Song: What Music Taught Me About Programming, Part One

I’ve played guitar for a long time, and it has definitely informed how I approach other disciplines, much like martial arts. Today I’m going to examine the guitar technique of three famous guitarists, and discuss how levels of musical proficiency have a lot in common with programming technique.

Bob Dylan

Picture of Bob Dylan singing and playing guitar

Bob Dylan needs no introduction from me here: one of the more revered popular musicians of the 20th century, he burst onto the New York folk scene in the early 60’s with songs that delivered unprecedented lyrical power and vivid imagery. He has many acclaimed albums under his belt and the scope of his influence is practically incalculable. This early version of “It’s All Over Now, Baby Blue” exemplifies Bob Dylan’s style.

So how about his guitar playing? If we’re being honest, his guitar playing (see also  his singing) is pretty unremarkable. Some chords and fingerpicking, the barest possible skill that could deliver a song. While his live arrangements and backing bands are often much more elaborate than what is initially recorded, the musical arrangments at the core of his songs are quite simple.

Bob Dylan’s minimal guitar skills are much like extremely basic programming techniques: they aren’t going to stand out unless they’re delivering something truly remarkable. This is also illustrated in the music of artists with simple backing music that mostly serves as a backdrop for lyric-focused songs, like Patrick Wolf or the Clash.

J. Mascis

J.Mascis playing guitar

J. Mascis is the singer, guitarist, and principal songwriter for Massachusetts-based indie rock outfit Dinosaur Jr. Dinosaur Jr’s fuzzy 70’s-influenced rock is not unlike what Neil Young would have sounded like if Crazy Horse had been a hardcore-punk band. I felt chills the first time that I heard the opening to “Out There”, and still get them every time that I hear it.

Mascis is much like Dylan in that he’ll never be lauded for his singing voice. Unlike Dylan, Mascis is a guitarist of clear proficiency, capable of delivering fuzzy noise, delicate acoustic playing, and lyrical solo work all in equal measure. It says a lot for Mascis that he’s influential even to acclaimed indie rock guitarists such as Marissa Paternoster of Screaming Females, and Doug Martsch of Built to Spill. Though acclaim and proficiency aside, Mascis’s playing always serves the song, not the other way around.

J. Mascis’s highly proficient guitar skills are much like programming technique that is obviously adept: their fluency makes a clear contribution to the experience they deliver. This is also illustrated in the music of Kate Bush and Guns N Roses, where strong technique is at play, but more or less equal importance is placed on lyrics and accompaniment.

Ritchie Blackmore

Ritchie Blackmore playing guitar

Ritchie Blackmore is an English guitarist and founding member of legendary hard-rock bands Deep Purple and Rainbow. As the first guitarist to take classical training and mix it with rock and blues techniques, Blackmore stands as one of the original guitar heroes in a genre with no shortage of them. His solo from the song “Burn”  epitomizes the attitude, precision, and blinding speed that made Blackmore a legend.

In the above section on J. Mascis, I allude to Mascis’s playing as always serving the song and that is a big part of why I included Blackmore specifically. “Technique versus feel” is an age-old debate that is mostly subjective, but there may be some truth to the rumors that some musicians with high levels of technique can lack heart in their music. This is one of those things that should go without saying, yet always bears repeating: the best technique imaginable is worthless without a strong message or content that it serves. While Blackmore’s inventive playing makes somewhat boring songs like “Into the Fire” (from In Rock) or “Woman from Tokyo” (from Who Do We Think We Are) more palatable, it elevates great songs like “Lazy” to heights they wouldn’t have been able to reach without it.

Ritchie Blackmore’s virtuoso guitar skills are like the most advanced programming techniques: wielded properly, they can often salvage otherwise unremarkable experiences, and make already-great experiences even better. This is also illustrated in the music of other artists with virtuoso musicians, such as Ben Folds or Van Halen.

In summation, instrumental skills are much like programming skills in that:

  • Good technique is the minimum recommended that a practitioner should aim for, and will be helpful in most use cases.
  • Great technique can make a lot of experiences better, but it can’t completely compensate for a poor experience.
  • Basic technique often isn’t enough to stand out, but it can work in instances where the message is especially powerful.

And in both cases, the overall experience is the most important part of any song, program, or application. I hope this meditation on technique gave you something to think about, and I’ll see you next time!