I often get asked how I manage to stay up to date with so many technologies.
I'm a C# developer and Microsoft is really pushing out stuff in an awesome pace.
But it means that you need to be awesome to, to be able to keep up.
Here is a couple of things that I find important if you want to become an awesome developer.
Be proud, but not stubborn
Listen to co-workers, ask their opinion.
I have had a couple of discussions ending up with the both of us switching sides and now we are argumenting for the others cause.
If you don't agree with something try to find out why the other part thinks as he/she does, perhaps there is a good reason.
Take every opportunity to learn
Do you have a long commute to work?
Read blogs and/or listen to podcasts, these are some of my favorites:
Windows Developer Show
Less sugar coating and don't take it personal
If you find something you don't like, confront the developer.
Figure out who is wrong… sometimes it's just a matter of taste, sometimes it's just plain wrong.
It is much faster and efficient to solve the problem as soon as possible.
I wrote my best code when I knew I would hear about it if it was bad.
Once I came into the office and my college had printed and hanged a really long regular expression I had written (covering almost the whole room), just because he thought it was bad (and it was, but didn't tell him that).
Attend user group meetings as often as you can.
If you don't know what the subject is or perhaps you don't think it is interesting, let them try to convince you.
The people you meet are those who invest their spare time, these are the developers that really burns for what they do.
If you don't have a strong community where you live, start one!
I have learned a lot from running the user group Coding After Work, and helping out with SWENUG here in Sweden.
There are often loads of companies willing to sponsor user groups.
Attend conferences if you have the chance, it is not the sessions that are important, it is what is happening in between the sessions that are awesome.
All the fantastic people you can meet, and learn from.
It's not a job it's a lifestyle
There are rarely enough time to learn as much as you might need during work hours, you might need to use your spare time to read up on the latest technologies.
It can be done, but it is hard for a 9-5 developer to achieve awesomeness-status.
Don't know everything
You don't have to know everything, but at least know what technologies that are around so you know what to try, so you are able to take an informed decision when it is time to choose.
Know how to search and what forums that are best.
Pick a couple of technologies and be best at those.
Don't do everything yourself
I like control as much as the next guy, but sometimes you just have to let go, trust other people.
Use frameworks or control libraries, but do so with caution.
You should know why you use something, so you don't end up with a "overkill deluxe with bacon"-solution for a simple problem.
Use a Visual Studio plugin
I have refused to use a refactoring plugin in visual studio for years, I want to be able to use the tools without help.
I have evaluated the alternatives and I personally use Coderush.
Why? Because it’s the one that are less intrusive, very few popups, all the refactoring happens inside the Visual Studio editor.
Fair enough Resharper seems to (without actually counting the features) have more features.
Just code from Telerik seems like a great product as well, I have to admit I haven't used it that much.
These plugins are not only to help you rename a method, they can also hint about improvements or alternative ways of implementing code.
They will make you a "worse" Visual Studio vanilla user (since they add a lot of functionality) but they will also improve your coding skills and make you more productive.
This goes a bit hand in hand with community leader, help people.
Be a mentor to beginners, speak about what you love.
After doing a presentation and the attendees approach you with questions and you are able to help them that is one of the best feelings in the world.
I often answer "I don't know" to questions I am not entirely sure about, I also assume that they already have used their favorite search engine before asking.
But often if you get questions from new developers, chances are that you know more than they do about the subject.
You might be better at figuring out the best search terms, do a quick search that might be just what they need.
Jump on the beta train, always run the latest and greatest.
You will never win anything if you don't buy a ticket.
Pick one stick with it, there is no right or wrong.
For C# I would recommend using the code standards Microsoft are using, it will make the .Net framework and your code seem as one.
Check what is standard for the language you are using and use that, it's almost always the best solution.
Don't be afraid to refactor
Often developers leaves bad written code or architecture because "it's too much work". Sure sometimes the time constraints are the problem bit try to figure out a way to include the refactoring in the next release.
Don't be afraid to get your hands dirty.
I do not make any claim of being awesome, these are just the tricks I use to (hopefully) one day reach awesomeness.
Please let me know if I forgot something or if you don’t agree with me.