tags:

views:

226

answers:

10

After you've read the blog posts and done your tiny test apps, where do you go from there learning a new technology?

  • Personal side projects?
  • Internal Tools?
  • Production Code?

Personally, I don't usually have time to do a significant personal project with each new technology. What ends up happening is I look for the next small project that comes along and I start using my new ideas and technologies. Hopefully it's a small internal tool, but sometimes it ends up as production code sent to customers. There are a few projects in production that have pieces of TDD, IoC, Repository Pattern, etc (usually done incorrectly or incompletely because it was my first attempt).

How do you go about getting good at all this new stuff coming out in a real world setting? Is it just lots of refactoring?

Any tips or tricks or good advice?

+4  A: 

Although time is hard to come by i think personal projects help the most. They give you the freedom to do whatever it is you want without affecting your work.

John Boker
+1  A: 

I don't have enough time for substantial personal side projects either so I like to either try to incorporate what i'm learning into an existing project, a little at a time as, as you said, it can get messy, or I just practice a little at a time.

I have numerous apps just called "Testxxx" with xxx being what i'm trying to learn.

Take 1 part, learn it and just expand and expand.

Watching videos and reading as much as possible but i'm a firm believer that you don't really learn it until you try it out.

Fermin
+3  A: 

Don't just read about writing code, Write code. I cannot stress this enough. Even if it's not good at first, you can only learn so much until you start doing.

Pick a Codeplex project that interests you, learn the relevant technology for the project, and contribute!

Chris Ballance
+3  A: 

I am planning on buying a sailboat with a friend and we plan to take long cruises. During the cruises when there is nothing else left to do we will have plenty of time to learn new technologies and write code.

We are worried about piracy though.

Tim
Wow. I am _so_ jealous of this. :)
Greg D
A: 

I think it's more a question of when - for any new technology you have to make time beyond a coffee break and browsing stack overflow. If you can formulate a plan to implement your experiments into production, congratulations, you just got paid to learn. This happens a lot at web companies. Otherwise you'll have to shift your focus to personal and freelance projects. Either way, it's about committing a large chunk of time to something that will possibly result in ineffective, bug-ridden, or just bad code.

You can also make a career out of it by contracting at different companies.

Mike Robinson
A: 

Code Plex has recently been my friend.

Reading the code of an actual project is proving to be tons more useful than trying to implement something based off a few lines from a blog or sample code.

Alan Jackson
A: 

Besides personal pet projects, i try to look for people/projects [withing my company] working on the newer technologies and contribute to their projects. It helps me gain better insight on new technologies besides gaining me some personal rapport with different teams around.

Vikram
A: 

Depends on the technology, if it is programming, find book or a tutorial, build some toy apps to get the feel, and if I like it, trying to find a small project at work to use it in.

Other technology, read about it, normally before bed or when over lunch.

A: 

I prefer learn on the fly, doing some personal small projects and then come back to read other's code or guilds. At that time I will find many stupid codes in the small projects and I will update it them.

e.g I made it as

private int _Something ;
public int Something 
{
  get{ return _Something ; }
  set{ Something = value; }
}

and then

public int Something { get; set; }
Jason
A: 

Everyone learns differently. I learn best by reading first and then coding. I consume whole books and then create code to scratch some itch. My wife learns best by just going for it and writing code and then refactoring as she learns the "right" way to do things.

I think, though, that if you're going to make software engineering into a career that you need to devote a lot of time to it. Our career is built on the foundation of continuous learning. I work full time. I have a family and a social life. I still manage to study (including writing new code) at least an hour or two every single day.

I think the example of looking at mature projects in CodePlex is an excellent idea.

Terry Donaghe