views:

554

answers:

9

After graduating with a degree in Computer Science last December, I just landed my first programming job. I’d like to take advantage of this excellent community to get some career advice.

Right now, I’m working on some pretty dull housekeeping software. As a novice, I’m still learning a good deal at work right now. Consequentially, I’m relatively happy. It’s easy to see, though, that this job won’t keep me satisfied in the long term. I'd really like to work on something much more complicated and challenging. Currently I’m in an area which is low on software jobs, but I’m planning a move to the Bay Area in California in about a year. That will be my big chance to take a step up in the software world.

By working on boringly simple software, am I setting myself on a career track which will just be more of the same? Or, can good performance here still recommend me for positions which are closer to my desires?

A bit of background may be in order: I graduated from a pretty average CS program, and I’ve only been programming for a couple of years. Most of my coding so far has been for school, so I don’t have a lot of personal projects behind me to demonstrate experience/ability. I don’t expect to become a coding rock star, but I do think have the innate ability and drive to do some pretty interesting work.

What can I do in the next year to distinguish myself in preparation for a second job search? Study algorithms? Compete in programming competitions? Complete a significant project on my own? Any advice would be greatly appreciated.

+14  A: 

Join an open source project to help build your resume.

Jared
A: 

All great programmers program because they feel driven to. It sounds from your question as if you are not really all that interested in programming. Perhaps you would be happier (and possibly more succesful) doing something else?

anon
Apparently, only happy talk is allowed!
Stu Thompson
I'm not sure how you got that impression, but it's incorrect. I only discovered programming recently, but I've been coding avidly ever since. I just want to know how to distinguish myself so that I can find work that will at least partly satisfy my coding urges.
Odrade
I got the impression because you said that most of your coding had been done for school. Rally keen programmers wou;ld have lots of personal and other extra-curicular projects by your age.
anon
Assuming that they discovered programming early on. I didn't try it until a couple of years ago, which prompted me to immediately go back to school. I'm very young as a coder.
Odrade
+1 for telling him the hard truth
Johannes Schaub - litb
I like how this is marked offensive. People have some soft skin.
GMan
+1, Neil is entitled to speak his mind. I must say I never needed to ask this question. I automatically was programming in my own time.
JL
Have to disagree with you, Neil, especially on your comment addition. "lots of personal and extra curricular projects"? Sure, if you don't have much of a life outside programming. But I have a family, sports, books, and a whole host of other interests that limits the amount of time I can spend programming that isn't for my work.
Charles Boyung
+3  A: 

The thing you can't change are where you graduated from, and it doesn't necessarily matter.

One thing you can change is experience in a particular technology. There more time you spend on any one technology the more of an expert you are considered on it (many companies measure this in years). Because incoming graduates don't have that experience, and because many developers often switch technology, there is a pyramid of experience. It is therefore better to have 5 years of C++ experience (or Java, or Hibernate, or whatever), than to have 2 in C++ and 3 in Java or the other way around. It does limit more jobs, but it makes you unique.

Also realize that if you are already working and did not just graduate, you will not be evaluated using the standard "new graduate" scale. You will be evaluated based on your CV. Since most companies cannot really evaluate the complexity if code that you wrote, and since people embellish that, what really matters in the end is the experience. Stay with the same company, become really good at specific technologies, and then apply for more interesting jobs with the same technology. If you really hate the technology, switch now and wait a few years before switching jobs.

If you use .NET or Java, make sure to get projects that use the J2EE APIS and other related APIs (Hibernate, Spring) or the .NET equivalents. A lot of jobs will require you to demonstrate familiarity with these rather than just with core Java.

Uri
+1  A: 

Or even better create your own open source project. I would personally offer my services to real customers for small or no money. This way you could start building your porfolio and collect references.

Koistya Navin
+2  A: 

A really good way to distinguish yourself is by contributing on Open Source projects.

Find something simple enough, but that you are really interested into (for instance, software you actually use a lot, or would if it was better), and try to make improvements. Start small, contribute, listen to people, and iterate.

You should very quickly start to learn new things, acquire new contacts, and build a reputation. Especially if you are hard working and dedicated. Then, when you have learned enough, try to contribute that knowledge to other, more complex projects.

Varkhan
+1  A: 

Start your own free/OS project(s). Do them in things that interest you (to keep your self motivated). The projects should not be some 100-liner that is orphaned after four weeks.

This can demonstrate:

  • Your enthusiasm for the field
  • Your own coding habits
  • Your self-starter nature
  • Your ability to own a project long term

That will distinguish you from 80% of the pack.

Stu Thompson
+4  A: 

The fastest way to improve your performance in job interviews is to study algorithms.

The fastest way to become a better programmer is to write challenging code on your own time.

RossFabricant
True, but how shall he demonstrate that? Impressing potential employers is a goal, and talk is cheap.
Stu Thompson
The fastest way to improve your performance in job interviews is to study algorithms. - wrong. The fastest way to become a better programmer is to write challenging code on your own time - perhaps
JL
+1  A: 

One of the most valuable things you can learn is the core language that you're using to build applications. Knowing this inside out is highly valuable as it's unlikely to change from project to project. I don't mean just read a book about the language either, really look at the language in detail. If it's Java then look at the language specification and consider certification to really test your knowledge of the language. Frameworks and libraries will come and go, please don't get me wrong they are valuable too, but the core language is the most important thing to advance your career from a technical perspective. Using this and real world experience (commercial projects, open source projects) will help you progress.

One other thing that is highly valuable, important (and to be honest lacking in a lot of software developers) is client facing experience and communication skills. This is highly desirable in many companies and will help you differentiate yourself from others.

Jon
A: 

It is very good. You have the desire to improve yourself.

First work on yourself. Read this book, The Magic of Thinking Big. http://www.amazon.com/Magic-Thinking-Big-David-Schwartz/dp/0671646788

Many successful people are average but their attitude is far from average.

The Samurai Coder, Hideo.