When I first started working at my current job, I was just barely out of the gates as a programmer. I had about a year’s worth of experience under my belt, and was being thrown into a new workplace as an intermediate level developer. I managed to do well enough in the interview to fool the company into thinking I was an intermediate developer, when I was definitely a junior level.
So, in the hopes to rectify this situation, I took note of what frameworks the company was using for their web application product and set out to learn them.
It wasn’t mandatory for me to learn the framework the way I did, but I knew that the best way to learn something is to throw yourself into it head first.
So my tip for you today is all about learning something new by choosing to learn it in a way that you’ll have to dedicate yourself to learning it. My example of this is something called the Spring framework (it’s created by the same people that made the SpringSource Tool Suite IDE that you may be using). The Spring framework is used to help you when building a web application, its uses are a plenty, but that’s not what I want to talk about in this article.
The point here is that there was a particular piece of technology that I needed to learn, and at the same time there was a project that I wanted to startup with my business partner. This project I wanted to start was a web application that would help people in the ecological land classification industry. So I figured, what better way to kill two birds with one stone than to use this Spring framework for my new project? This would force me to learn the technology while I created this web application on the side, and it would benefit my professional career as well!
The Best Decision I Made
As a result of this decision, I embarked on the journey of learning the Spring framework, and let me tell you, I learned a ridiculous amount! In order to build this web application, I would need to learn and understand the vast majority of this framework. The most important part of this entire process, was that I was being held accountable to produce results (by my business partner), so I didn't have the opportunity to just give up on learning.
Now you may not be in the same situation that I was, you could be trying to learn the Java programming language, a different framework within Java, or perhaps an entirely new language altogether… But in any case, I think it's important to have someone that will hold you accountable for your learning. Now, if you don't have any ideas for any projects that you would like to actually release and start selling, try and think up a project that you will want to complete. For some programmers it's the challenge of creating a game, or a fun website (like a blog). What matters is that it should be something that you will enjoy working on.
Adapt to Changing Times
Another good example of this concept of challenging yourself to learn, was when I decided I wanted to learn a new programming language. I looked at the languages out there that had some momentum behind them, and decided I wanted to learn Objective C. This language is what is used to create iPhone apps on the iPhone/iTouch/iPad. There seemed to be a lot of hype around creating mobile apps, so I figured I'd think up an app I could actually use myself.
I realized that there was a need in the iPhone market for an app that would automatically text message my girlfriend and let her know that I was almost home (or that I had left work). I was tired of sending text messages while trying to drive, so wouldn't it be neat if there was an app that just automatically monitored your location and sent a text message to a person of your choosing between x/y o'clock?
So once again, I was in a win/win situation here. I would be creating an app that I wanted to use, I could then sell the app, and the worst case scenario was that I would learn how to program in Objective C (which is a great skill to have). I had my girlfriend hold me accountable for the creation of the app by monitoring my progress (she was very supportive), and within a few months I had completed the app! It's quite fun to be able to show my friends that I had an app in iTunes!
It was interesting to me how much I actually learned about Java when I was learning about the Objective C language. This was mostly because both languages share roots in Object Oriented programming. Nevertheless I hadn't intended on expanding my knowledge in Java when I set out to learn Objective C, but that's exactly what ended up happening. This fact presented itself in the form of understanding the bigger picture and the foundations of any programming language. When you learn multiple programming languages (or even spoken languages), you can't help but identify similarities between them and in turn understand the foundations on which they're built.
I've turned this concept into overdrive when I started this “How to Program with Java” blog. I'll be the first to say that you learn an incredible amount of things when you try to teach a subject. This is mostly because I want to try and find the best way to explain a particular topic, and in order to do so, I need to understand all the inner workings of my subject. Thankfully, I find this adventure to be very fun and rewarding! Helping people is a business everyone should love :)
So overall, I've found that I've been able to “level-up” my skills over and over again by following this one simple tip. Challenge yourself! But do so in a manner that makes it hard for you to give up. Find someone to hold you accountable. I hope that YOU will be holding ME accountable for the content that I provide to you.
When you are continually learning, you will find yourself surpassing most of your peers at (what I considered) alarming speed!