views:

386

answers:

9

Lately, I have been noticing two distinct programmer types at my work, the just-give-me-my-paycheck guys who only learned what they needed to get by and are trying to coast to retirement, and the subject matter experts that are extremely insightful and seem to always have the right answer. I want to become the latter.

Now that I have a couple of years under my belt as a developer I can feel myself starting to plateau. I definitely do not want to trend towards the slacker-type that just wants a paycheck, but I find that even keeping up to speed on technical material sometimes is not quite enough. I think sometimes we can end up learning enough to get by and if we aren't careful can end up becoming complacent in our skills.

Am I the only one struggling with this right now?

I'm looking for tips on how to take my skill-set to the next level, to become a full blown software professional, not just a coder anymore. I've started subscribing to podcasts and RSS feeds that talk more about how to be a better programmer, and not just how to be better at programming. Do you guys know of anything else I can do to address this issue?

Edit: I've seen a few recommendations on contributing to an Open Source project. Are there any favorites among you? Which projects are you currently involved with and what do you like about it?

+7  A: 

Try some of these things:

  • Contribute to an open source project
  • Learn a new programming language
  • Pick an application or software tool you like and try to write it yourself from scratch
  • Read, read, read (books, websites, and other people's code)
  • Find a mentor - ask a developer you admire for advice and counsel
  • Write code in your spare time
  • Learn to develop software on a different OS (e.g. if you know Windows development, try writing software on Linux or OS X)
  • Learn how to use a different development toolchain (e.g. if you know Visual Studio, try Eclipse or if you know Vi, try Emacs)
Andrew Hare
Use Emacs!! Never! :)
Lucas Jones
+6  A: 

I think the most important thing here is the desire to improve. Along with that typically comes an interest in learning new technologies, improving technology-agnostic skills such as problem analysis, etc, and general pride in your craft.

Paul Morie
+4  A: 

Do you want to be a developer or are you open to other careers as a software pro? There are many opportunities beyond "dev". Build/Release manager, test manager, architect, security threat modeler, project management.

Software project management is a domain that will expand greatly. You need very good developer fu in order to be accepted as a proj manager.

If you'd rather double-down on developing code, pick a focus area and go deep. Super competent specialists are always in demand. Examine the need in your company, in your desired geographical area. What do companies really need? If it is banking, then get smart on software in financial transactions. If it is oil and gas development, work hard to expand your expertise on geologic data analysis. If it is telco that makes your propeller spin, then invest your time into learning more about telco. If you like hand-held and mobile development, focus on that. Be aware of many technologies, and be a super specialist in a few.

Do you have a formal degree? Consider going back to school and getting a masters in CS. You will learn formal theory that you lack now. There are also Software Engineering degree programs out there, though I feel they may be a bit too academic to be practically useful.

Better than a degree, but not mutually exclusive, is real experience. Take new roles or positions to expand your expertise in areas of testing, quality management, performance evaluation and optimization, parallelization, queuing, thread modelling and management. If your current job doesn't allow you to stretch into those areas, find a company that will allow it. Don't be satisfied with your ability to produce a nice UI, or whatever your area of expertise is. Expand to new areas that are valuable to companies that depend on software. Focus on a niche and develop yourself. Think of yourself as a company - you are the president. What investments do you need to make in yourself in order to get those new customers, or to justify higher billing rates or salary?

Never take a job without planning the next move. Like a good billiards player, you want to think ahead. Inquire about career development with a potential hiring manager, before accepting the job. Be savvy about it though, or s/he will think you are a job hopper. If you explain that you are thoughtful about your own career development, that only reflects well on you as a professional.

and finally: Get a mentor. Establish a semi-formal professional relationship with someone you look up to, someone who can provide guidance to you on your career.

Cheeso
I think i'd still like to be a developer. I have a formal degree and and working towards my masters in CS but I don't feel like it's making me any more valuable as a member of a development team. I like your idea about expanding outside of just coding. Thank you.
Robert Greiner
This is a great, complete answer. One of the best developers I've ever worked with transitioned to being a test engineer, and working with him changed every aspect of how I approach real-world design problems. QA just doesn't get enough respect from developers.
overslacked
+2  A: 

If you are "Doing What You Love" then you are on the right course, otherwise you must master the "Loving What You Do". Ultimately you can try to find other "Doing What You Love" job.

And work hard as you can of curse :)

Aleksandar
+5  A: 

What makes a good lover?

What makes for a good tango?

What is a good name for a streetcar?

What do I need to separate myself from pay-check coders?

In a word: Desire

Rob Allen
Great, now I'll have U2 in my head all day!
overslacked
+2  A: 

Here are my 3 personal rules (Still in evolution though... Still looking for a 4th). Enjoy!

Rule #1 - Know your stuff.

If it means doing a lot of extra non-paid hours learning tons of stuff (including going back to school for a Master). Do It!

Rule #2 - Never get caught unprepared.

If you are to build credibility with your employer, knowing your stuff is not enough, you've got to look as if you got all the answers. You can't stutter or hesitate, you got to inspire confidence.

Rule #3 - Take calculated risks.

Sometimes inspiring confidence and knowing your stuff is not enough... You got to take a shot for the team by taking a calculated risk and showing to everybody (includings the guys that just told the big bad boss that it was impossible) that it is possible and that you've just done it.

Shadow_x99
+2  A: 

I can recommend to read the book The Pragmatic Programmer. There are good tips on further development and not loosing the contact to the material in this book.

The book and many other interesting books can be found in the Pragmatic Bookshelf

Janusz
+2  A: 

I've started subscribing to podcasts and RSS feeds that talk more about how to be a better programmer, and not just how to be better at programming.

That reminds me of an adage (I hope it doesn't loose the sence in translation)

Going to a college makes you clever in the same way that going to a bank makes you rich

(Sorry, had to say that)

My advice:

  • Enjoy your work
  • always try to improve your code
  • read (and understand) code from others (as mentioned contributing to a open source project helps a lot)
  • learn a programming language that is totally different from what your doing right now. (e.g. even a java or c# programmer can benefit from knowing something about sps programming)
SchlaWiener
A: 

Seeing the world in shades of gray may help you more than any particular technology or training. Lumping your co-workers into two very specific and stratifying molds is probably not a good start.

How do you know those workers are just in it for a paycheck? Do you know they don't keep up on other technologies or methodologies and if so how? You simply can't know how a person learns or keeps current, they could be reading journals every night for all you know? How else can you tell that person is just in it for the money?

And, more specific, why is being mercenary really all that wrong? We work for a paycheck, its the simple nature of our society. Is it the fact these people perhaps work less overtime than you?That is not indicative of a flawed programmer, hell, it could illustrate a more efficient programmer. Could it be some people are simply less social and therefore less inclined to share their answers or insights? Or more so, it could show the person favours a work/life balance more tilted towards the life side than the work side, again, not a trait I would necessarily consider bad.

That said, the fact you differentiate a coder from a professional is, in itself, very telling.

I am not saying there aren't people out there that got into programming simply because thats where the money is. And that these people make no effort beyond that which is required to get said check. What I am saying is, these people are the exception, not the rule.

Serapth
Interesting thoughts, I honestly don't care about how interested other people are in their jobs, how much overtime they put in, or what their social preference is. All I know is how they appear and act in the workplace. Personally, I want to improve my skills and become a better team member and employee. That's all i'm asking, I am not looking to bash anyone. I just don't want to end up in my 40's doing the same work as I did 20 years ago because I didn't learn anything new.
Robert Greiner
Sorry, I didn't so much mean it as an attack on you, more so your wording. I understood the gist of what you were asking, I just saw a bias in the way it was asked, a certain bias far too many programmers develop. You are already on the path to answering your own question by asking the questions you have asked. The simple key is to always better yourself and be aware of your own flaws. If you are good and socially skilled, your workplace to some degree should handle your career progression for you. If they don't perhaps the best advice I can give is, seek work elsewhere.
Serapth
understood. it's not to say that there aren't the "grey" programmers here, it's just that the black/white (slacker/smart looking) ones stick out more. Everyone is at a different point in their career, i'd just rather do myself, my company, and my community a favor and try to be the best I can at my trade. I do appreciate your thoughts and I did not take it as an attack, i just want to share my perspective.
Robert Greiner