So this past week, I was talking to a few new hires at our office. People who this is really their first step out into not only development but their first step into a professional career. And it's always refreshing to see how much optimism these people have. Showing up every day grinning like idiots. They haven't been beaten down by deadlines and unreasonable clients. But are just filled to the brim with optimism and sunshine.
Those poor bastards... just kidding.
While I was talking to one of them, he asked me what I like about my job. And I told him. "I solve puzzles all day." And that's true and I like what I do but as our conversation went on, he began to ask me how do you keep up with it all.
And it occurred to me, we all know that guy. The guy who has been in the same job forever and is just pissed off every day. His career is DOA cause he hasn't kept up with anything and he hates his job but doesn't have the option to leave it.
It's only a matter of time before there is a rewrite of his project and he's extinct.
So what can we do in this ever changing landscape to stay current. Here are some ideas based on my experience. And I don't claim that these are the only options, but this is what I would tell anyone new to the industry to keep in mind, or anyone who is looking to get out a rut.
#1.) There Is No One Right Way to do Things
Albert Einstein once said "We can't solve our problems with the same level of thinking that created them." So it stands to reason that if you are working on an application, and are presented with a bug, you can't solve it by thinking the same as every other developer. You need to think outside the box. This is a pet peeve of mine, and you will find programmers out there who say that "this is the way it's always be done," or "I've been doing this for so many years and that's just not possible".
Another great quote comes from Steve Jobs.
"Your time is limited, don’t waste it living someone else’s life. Don’t be trapped by dogma, which is living the result of other people’s thinking. Don’t let the noise of other opinions drown your own inner voice. And most important, have the courage to follow your heart and intuition, they somehow already know what you truly want to become. Everything else is secondary."
The really great solutions are the ones that come from thinking outside the box, and always searching for a better answer. Just because something has been done one way for eternity, doesn't mean that it's the only way. The only way to find out if your ideas are worth anything is to suggest them. Now, I'm not saying throw out half-baked ideas, but you should fully form and research your ideas and present them in the best way possible.
#2.) Always Be Looking for a Better Way to Do Things.
With software development, not unlike many other industries, we deal in ideas, in solutions to problems and ways of thinking. It's easy to get stuck in a rut of thinking about half baked solutions. The most important thing is to always be looking for a new technology or tool. I'm not going to lie to you but this takes a lot of effort. There are lots of technologies out there, that serve a variety of purposes, and the only way you will know that something exists is if you keep looking.
There are so many technologies out there, things like Node.js, jquery, Knockout.js, Angular.js, Web API.
There's a perfect example, for the longest time we utilized web services, specifically WCF services as a way to make our application extendable. And WCF is powerful and useful, to this day it continues to be used and is a great technologies.
But, if you're utilizing services in jquery, or in other web technologies, WCF has a lot of overhead involved, that can be kind of a pain. But a group of developers got together and said, "I know SOAP is this great XML protocol for sharing data, but can't HTTP do that already, with less overhead?" And they were right, enter Web API, a new technology using Restful Services that makes it easier to share data with a wide variety of platforms.
#3.) There are Lots of Ways to Stay Current
Now that being said, there are lots of ways to stay current. The internet is a wealth of resources that can help to keep you up on new technologies. There are sites out there that can help you stay up to date, sites like CodeProject, 4GuysFromRolla, Channel9, and others. These kinds of sites have articles submitted by developers discussing what they are working on, and there is no better way to keep up on the latest trends.
Another great way is to go to events, there are lots of user groups out there that can help you find out about new technologies and techniques that you never knew existed. And many of them sponsor code camps, that are fantastic.
Finally, social media is a great option, I absolutely recommend Twitter and Google+ as great resources.
#4.) Keep Options Open by Knowing Enough to be Dangerous
Nobody has the time to be the best at everything and trying will just make you insane. But what you can do is find out the basics about any new technologies you can. The idea here is a simple one, if I know what something is, and the kind of situation its used for, then when you find yourself presented with that kind of problem, you can always learn more then.
#5.) Don't Punch a Clock
Look this industry is one that is constantly changing, the world is shifting in new and exciting directions everyday. If you take a look online and see the names of some of the most successful people in this industry, they all have one thing in common. They all live for this stuff. If you've decided that you only want to learn about this stuff and research new technologies and techniques between the hours of nine and five, then prepare to be left behind.
So there ya go, there are my top 5 tips to make sure that you don't end up being a dinosaur. The one thing I always tell my students is you can't teach passion, and passion will take you far in this field.