views:

554

answers:

24

Here's the scenario:

You've just quit your last job and you've got another one lined up in one month. You want to improve yourself as a raw coder, not so much to learn <insert latest hot technology here> but you want to do something that will benefit you in your software career. What do you do?

This is exactly the scenario I find myself in. I'm currently working on writing my own compiler but I think that will only last me a week or so. I am looking for something that will help me move from average coder to grand-master. As I currently am not among the 'elite' I would like something that will take me one step closer.

Any suggestions? Let me clarify I'm primarily looking to crank up my coding skills. The business stuff is a good call, as well as the 'have more sex', I'd like to keep this software oriented.

Responses:

Write a game: Good idea, but I've already done that. It was actually disappointing in terms of how much game coding skills actually transferred over to "real world" work. But it was fun nonethe less.

MBA/Business: Great idea. That's on my list.

+3  A: 

Learn marketing and create my company.

mouviciel
Read Eric Sink's blog or book.
Andy Brice
@Andy - I agree. @Mouviciel - The conceptually harder part is the technology. As a general rule, a good developer is way smarter than most any "marketing person". You just have to be willing to get yourself out in front of customers, listen and follow the data. It's easy to learn!
Tall Jeff
I already read Eric Sink blog, together with a few others such as yours, Andy, or Creating Passionate Users. I just want to limit 'learning by error' as much as possible. Anyway, thanks for your advices.
mouviciel
+2  A: 

From the top of my mind, write a game. It could be anything from a simple tetris to a more complex racing game. Its fun and there's bound to be lots of learning.

Nikhil Kashyap
+3  A: 

I would probably work on my suntan to refresh myself before jumping into the next role.

John Nolan
I would say that ;)
Sergio
+6  A: 

I would probably work on catching up on a lot of sleep.

And then maybe I would try to learn more about the actual business side of things so that I wouldn't feel like such a novice when it comes to the freelancing side of things.

TheTXI
+5  A: 

Get the frigging backyard in order and fix my deck.

Really, that's time better spent than getting fat at my desk.

StingyJack
Physical activity has always helped me get my focus back, as I see it also works for a lot of others.
Laura
A: 

Do some code kata. I'm sure you could waste a week, a month, a year or any other length of free time doing them and as long as you are properly trying you will end up as a better programmer :)

workmad3
+13  A: 

I'd use the time to develop my non-technical programming skills - for example, reading from Joel's List or the Personal MBA. While it might not be as sexy as writing some new killer app, I feel like many developers miss the business end of the software they're writing, and would be very well served by understanding what the company is trying to accomplish and how they can help make it happen.

A good developer, armed with an understanding of the business, would be totally unstoppable.

rwmnau
+2  A: 

To 'move from average coder to grand-master' you should probably read lots of code written by grand-masters.

Andy Brice
+1  A: 

I'd work on implementing Neural Networks or Support Vector Machines. Do more work on swarm intelligence and on data mining. After enough work has been done on the first three, I'd focus on data mining as that seems to be have the most direct impact in the 'real world' right now.

That and learn Haskell ;)

Nicholas Mancuso
+6  A: 

Lots of sex

brian
Aha..programmers lack sex :(
Tanmoy
+4  A: 

The thing that separates "elite" programmers from the rest of us, I think, is the ability to take a complex thing and make it simple. What I'm trying to master in order to do this is:

  • Test-Driven Development (including Mocking)
  • Refactoring
  • Communication skills

The first two are directly driven by the need to simplify and clarify my code. The latter to understand, simplify, and clarify the actual requirements of the code to be developed.

Lastly, I'm continually refining what it means for me to develop code, in terms of process. I want to get better at managing the process of creating code so there is less waste and more efficiency in getting high-quality, useful features out the door.

tvanfosson
you are absolutely right
Barbaros Alp
+1  A: 

Write two or three iPhone apps. I'm doing this on the weekends now, but it would be nice to have long uninterrupted blocks of time to work on them.

Kristopher Johnson
+1  A: 

I'd write a Facebook app.

+2  A: 

Contribute to an open source project. Reading other people's code is always a learning experience; whether it makes you a better coder or a better code reader.

brian
+1  A: 

Get my goddamn website up and running. Then sleep.

annakata
+1  A: 

Pick an open source library of your choice, contribute some significant things and boast about them on your webpage. :-)

hstoerr
+6  A: 

If I have 1 month completely free (including free from family =) ) I wish to paid my code\tech debts (write some tools I planned but never completed, set up some tech infrastructure for my own ( bundle router+hdd+torrents+isp-monitoring(alerting) + etc).

But if you have family - spend this time with them - this is most bothering point in all my life-work, and this is sadly less popular one.

Stop programming, get some life ;)

Alexey Shcherbak
A: 

Get to prestige 10 on CoD World at War :) Then I could think about doing some android apps.

Ubersoldat
+1  A: 

[Humor ON, and wiki answer]

If I had one month to work on anything I wanted, I would...
work on an idea that would allow me to work on anything I want for many months to come :)

Examples includes:


(I mean, this question looks like:
- "If you were to be exiled on a deserted island, with only one object to bring along with you, what would you take ?"
- "a boat...")


More seriously, I would learn Git and brush up my presentation skills.

VonC
A: 

In this order ---

(1) Clean out my home office and start building a proper workspace. (2) Clean out the basement, build some shelves, and rebox everything in plastic storage boxes. (3) Clean out the garage/shedbuild some shelves, and rebox everything in plastic storage boxes.

--- I/we collect a lot of junk, you see.

A: 

Learn some more theory. I have a stack of SICP videos to watch, for example.

But do something less techy for a month; go into the Big Room for a while.

jamesh
A: 

I would:

  • Master my development environment. In particular, learn as many keyboard shortcuts as possible.
  • Improve my typing skills.
  • Contribute to an open source project.
  • Exercise regularly and get good sleep.

Because:

  • The faster I type and the less I have to think about the environment I'm using, the more I get done. The less time you spend reaching for the mouse, the better.
  • Faster, more accurate typing translates to more time to think and higher productivity
  • Reading other people's code is one of the best ways to learn.
John Naegle
+1  A: 

I am actually on a sabbatical for what I call "reclaiming my mind". Interestingly, I am on the other end of the spectrum. I used to be a developer and after having been a manager at a fairly intense job for a few years, I found I had forgotten a lot of very basic programming concepts getting was tunnel-visioned into losing touch with new developments. After having done my share about snickering about managers who are stuck/lost in the past, I did not want to end up in the same quagmire.

My goal is to catch up on interesting reading (not necessarily technology related) that will help expand my general perspective, listen to at least two to three podcasts a day (tech and science/phil related), write a lot more, catch up on what is new and exciting in the industry, and learn a new programming language (targeting Ruby). I don't think managers can always be crackerjack programmers (mainly a time issue) but it terribly irresponsible and unfair (to your team) to not understand modern programming concepts and technical developments.

Sliceoftime
A: 

I normally work on web based account management and billing systems.

For a break, I'd work on something completely different. I'd probably spend a bunch of time hacking things based on Arduinos. It's embedded programming in C++. One month isn't long enough for really large scale programming, but I'd imagine that working on something really tiny that didn't involve a database would be a nice change and involve a lot of learning.

Games and iPhone apps are other things that come to mind.

edebill