Imagine there is a great conference you want to go to in 2013. It’s an international conference with a lot of global brands sponsoring it so you know it will be well attended.
This three-day conference is an excellent opportunity to network with peers and thought leaders and even gain new skills.
But here’s the hitch: it’s in Germany and you don’t speak a lick of German.
Two Ways to Solve the Foreign Language Problem
Of course there are several approaches to solving that problem:
One, you could simply pack a German-to-English dictionary in your language (most Germans know how to speak English so you won’t be at that much of a disadvantage). Two, you could take a course in speaking German. The first option is a stop-gap. It’s not the best way to do it, but it’s the cheapest and most efficient. Besides, you are only going to Germany once. Why invest anymore effort into than that?
However, let’s imagine that your company was going to relocate you in Germany. For like four years. Which method do you think would be preferred?
I’d go with the second option.
The second option is more thorough and takes more time and energy, but it actually is intended to improve your skills dramatically. And you won’t look like such a dope asking for directions.
What This Means to You and Web Development
I use the above analogy to introduce the theme of this article: what are the best ways to become a better and smarter web developer? I’m assuming you want to become better and smarter. I mean reading the Treehouse blog is probably a good indicator that you are serious about your career. That you not only live in Germany—but you also want to master the language, too. And if you are serious about your career then you want to get better and smarter. Am I right?
Well then, let me share with you some ideas on how to go about doing just that (ideas that will not cost you an arm and a leg).
Warning: Do not try these ideas when you are working with deadlines or client-related work. These ideas, in general, should be reserved for your spare time and personal projects.
Memorize More Code
No, I’m not suggesting that you sit down with a book like Learn Ruby and recite the code concepts until you know them by heart. That will come later. No, the goal of this exercise is to code without the help from your editor.
If you’ve been coding for a decade or more then you probably know where I’m going. I spoke to one developer who has been in the game since the late 80s and he said that his time spent writing both front and back end code allowed him to develop a strong, working memory of code, which in turn allowed him to debug quickly without the help of tools.
There are a couple ways to go about this.
Turn off any auto-complete functionality in your editor.
Use a Notepad.
Granted, this is not the most efficient way to code—so I only recommend this approach if you have the time. Find a special project that you can work on the side.
Don’t Use Developer Tools
There are a lot of great developer tools out there to help you with your scripting problems like Firebug or Chrome Developer Tools. The thing you have to keep in mind that a lot of these tools are relatively new and developers in the early 2000s and earlier didn’t rely on developer tools. They understood their craft inside out because they would have to do the painstaking debugging work themselves.
Now this is not the most efficient way to solve problems if you have a deadline hanging over your head. Developer tools are meant to help you do this work quickly.
But the nice thing about having a hands-on knowledge about CSS or jQuery is that when you understand the why behind a code, and what leads to errors and why, then you will learn how to avoid that problem in the future. You’ll naturally become a more versatile coder.
Don’t Test Until You Are Done
Typically when you are coding you will jump back and forth between the editor and the browser to check your work. This approach helps you save time as it minimizes and isolates the scope of a problem before it gets out of hand.
You probably know where this is going, but here is what you should try: code without ever checking your progress in the browser. Once you are finished, then you can check in the browser.
But before you even check your work to see if it works, make sure you spend enough time making sure every line is correct.
Be patient, meticulous and systematic. And when you spend more time trying to make sure every line is correct you understand the code behind the layout, and it also help s you to visualize the outcome of your code—before looking at it in a browser.
There are plenty of useful tools out there to help you to write code faster—important when you have deadlines looming.
However, if you never take the time to pick apart style sheet concepts and always rely on a tool to create code for you, then you’ll be limited in your understanding of the related values in that code and your skill set will also suffer.
Again, carve out some time on your calendar to spend an afternoon typing out CSS code. Once you are done, verify what you wrote against the CSS3 W3C specification draft.
Working manually like this will force you to concentrate on the task at hand, understand every little detail of the code and push you to a greater understanding code in general.
Again, this won’t make you a faster coder (not at first, at least)—but a smarter one.
Try to Code Book Examples by Hand
There are a lot of great books out there to help you become a better coder. But if all you do with these books is read them, and reference them on occasion to help you through a sticky problem, then you are limiting your growth as a coder.
Take an afternoon to go through one of your favorite books, typing in all of the examples the author gives you. Then test each example to see if you coded them right.
How can this help you become a smarter coder? In a couple ways:
You may get error messages due to incorrectly typing in an example. Learn from that error message by working through the example until you get it right. That problem solving process will help build your skill set for future problems down the road.
You will learn some of the most important coding lessons while you are debugging.
You may spot errors in the book, which can lead to an even firmer and a more satisfying understanding of the ideas behind the book (and a connection with the authors when you report the mistake).
Of course you don’t have to limit the habit of hand coding examples to only books. If you come across examples in an online tutorial, take the time to type those in, too.
Start from Scratch
“Let’s not re-invent the wheel” is a classic statement about being efficient through the use of already existing material. In the world of developers this is code. And it’s a great way to knock out more in less time.
Almost every project you will work on will require some kind of code that has already been developed—light box, tab switcher, photo gallery or image slider.
You’d be insane not to borrow the code on a project. But since we are on the theme of growing smarter as a developer, let’s explore the idea of starting from scratch for the sake of becoming better.
What you want to avoid is becoming a developer who basically copies and pastes code from other developers. Nobody will hire you except for the most basic projects.
True, if you coded your own image slider script it will probably not be the most elegant image slider out there. But that really doesn’t matter. What matters is what you learn along the way.
Then again, maybe re-inventing the wheel leads to an entirely new development. Think about it: We wouldn’t have Cake PHP or jQuery library if not for developers who decide to re-invent the wheel.
Re-inventing the wheel might lead you to your own successful projects, which would not only make you a smarter developer, but gain you some attention.
And who knows: maybe this could become a long-term project that develops into something big. And here’s my suggestion to you when trying to decide a project to tackle: choose something that will fix a current problem you have. Or it could be a problem you see a client or the development community has.
Teach a Workshop
If you are like me, then you like to learn new things—but then you also like to teach people about those things you learn. In fact, this is a Stephen Covey technique of truly learning a concept. Studies say you are more likely to retain material you teach than if you didn’t teach it.
There are plenty of places in your local community who would love to give you space to teach a class on web development: your library, chamber of commerce or community colleges.
You may also want to check into high schools and see if they have computer programs. If they do, then offer to teach a class on coding. You will probably have to go basic, but this will force you to re-learn what you already know—but also dig deeper into the why behind each concept.
Write a Book
The other excellent way to teach and share you knowledge is to write a book. There are plenty of books on the market for just about everything related to coding, so you probably aren’t going to break new ground.
What’s important is that you beef up your understanding of coding, and writing a book about C++, for example, will help you do just that. It will help you organize your ideas and challenge your knowledge.
Keep in mind this is less about public consumption and more about become a better coder. However, maybe you can get creative about your book and share your journey of learning. Andrew Koeing’s Ruminations about C++ is a great example. It’s not about learning code—but ideas and techniques behind that code.
You can keep it simple by committing to writing one article or journal entry a week. And once you have that book you can also use it as a point of reference to prove your authority in a particular coding category.
Listen: the coding landscape changes so rapidly that you would be a fool not to try to become a better and smarter coder. Slack off even for a year and you could find yourself at the bottom of the career ladder.
Now, the techniques I mentioned above aren’t necessarily going to keep you on the cutting edge of technology. That’s what Treehouse is for.
The techniques above are meant to deepen your skill set. To master it. They are intended to take the knowledge you already have—and make it even richer.
Combine the two—widen and deepen your skill set—and you are on your way to becoming the world’s smartest developer.
Now, share the techniques you use to help you become a better and smarter coder. Have you tried any of the exercises above? Are there any reasons why developers shouldn’t?
I look forward to your thoughts.