views:

126

answers:

6

I've been developing for around 5 years now, although 4 of that was at College and then University. I started out learning C++ and VB6 back in 2000, took 3 years trying different jobs and travelling and was back learning Java, XHTML (++ the myriad of associated languages) and PHP. I'm 26 and now nearly a year into my first proper web-development job I've spent most of my time learning C#.

Due to all this I know a bit about a lot, but cannot honestly say to prospective employers I'm an expert in anything, although I know I want to be able to specialise. I enjoy web development, turning ideas into accessible, standards compliant websites but I'm worried I don't really know where I'm going or how to get there. Is this normal? I went to a Microsoft student presentation a couple of years ago which said that we (the students) "were being taught to develop for jobs that did not yet exist". I know I'm in possibly the most dynamic and fluid industries out there but I do wonder if I could be doing anything more with better direction or focus. Any advice from people having been in my shoes would be really appreciated...

+1  A: 

I don't see a lot of goals in your question. Where do you want to be 5 years from now? Do you want to be able to find new jobs easily? Would you prefer going after jobs that pay more? Do you want a job at all?

Only you can decide what you want. Technologies and experience are secondary and a means to an end.

Personally, I try to keep my skill set marketable and that means I spend some amount of time chasing the technologies that the market appears to value. That is only one of many strategies however.

Michael Maddox
I think all this talk about chasing the market sort of misses the point. Really great programmers program because they love it, not because it's a goldmine. Yes, I agree with riding the upcoming wave. But the foremost priority is to find one's passion, and run with it. YMMV.
Chris Jester-Young
To clarify my last point, that level of passion will, in some cases, start the next market. I think that's where "market leaders/innovators" come from.
Chris Jester-Young
I agree with both sides, sounds a lot like the chicken and egg scenario. Just depends whether you start the wave or ride it has been my understanding so far
Alex
+3  A: 

The best way to motivate programming, in my experience, is to find a personal itch and scratch it. For example, if you think writing standards-compliant websites (or validating such, for cross-browser compatibility) is too labour-intensive, make a tool that makes it easier. Find an open-source project that scratches that itch, or start one. Then spend your spare time improving it.

You'll gain lots of experience that way, and it will help you better understand where you want to go next. It'll give you "direction and focus", as you are seeking.

Chris Jester-Young
+1  A: 

If there are technologies you want to learn, go for it. If you want to get the best job, check out the job boards in your area and see if you qualify. With one year on the proper job, it will be tough to claim expertise when employers usually attach a 3-5 yr amount of experience for Sr. positions.

You do need some breadth to your areas of developement (We all do.). When was the last job post that said, "Must be an expert in 'Technology X' no other skills necessary.

Jeff O
You're right. I think maybe I was expecting too much from such a short time in the industry. I have learnt alot, and maybe I'm just looking at it from a 'grass is greener' perspective. Thanks
Alex
+1  A: 

Whatever path you choose. Make sure you focus on learning and using programming fundamentals, design patterns, OOP principals over languages. The theories won't change, the implementaions of them (languages) will.

Object oriented programming will be around longer than .NET or PHP, if you learn strong fundamentals, you will be able to better leverage your expertise in either direction and you will be able to apply your knowledge to the next development technology that will inevitably be created.

Regarding the choice of specific technologies. I tend to think of .NET as large enterprisey type projects being worked on by large teams, and PHP as smaller, more agile, start-up / freelancing type technology (I'm generalizing slightly).

What type of projects would you rather be involved in creating?

Joel
+2  A: 

My suggestion is to consider making a few lists:

What do you like to do - Is it handcoding up a web page? Is it making some form for someone to sign up for a newsletter? Is it implementing some multi-million dollar system for a company? While some of those are extreme, the point is to get to the heart of what you like doing.

What are you good at doing - Where are you better than Joe Average pulled off the street to do your job? While you may not have a specialty, being a generalist and familiar with a number of different technologies can be its own advantage. This can get tricky and can either be technology specific or agnostic to my mind. So you don't know everything about C#, but are you good at reading through APIs to see what is built in for various versions? Are you good at solving problems? Answering tricky questions?

Combining the above should produce options for future goals of where you want to be. Do you want to be a CIO somewhere, an architect, a development manager, a project manager, business analyst, senior developer, etc.? Note that none of this details your present situation. Pick one for where you want to be going and understand that you may change it over time, everyone learns and adjusts usually.

Next, detail where you are now in terms of what you like and don't like. Does the methodology seem to make sense as a good way to develop software? Do the tools help a lot or was it just weeks of pain to get used to the source control or IDE? Do you like a big company or small company feel? This is the other key point to get.

Now, connecting the two points may seem like a big challenge but just use some divide and conquer, have some realistic expectations at each stage like you aren't going to be Jon Skeet overnight, and have some persistence for what you want and keep on trying.


I say that from the perspective of someone that has been a web developer for over a decade and is still working on finding his niche, but I do have a great workplace where the process is dynamic and tries to be the best there is. Is the awesomest place in the world to work? No, but I do like the practices adopted and am working through a big project that I'll be glad once it fades and something else becomes the big project that I get to try and see what happens.

Don't forget that you don't know what new web stuff will be created or widely adopted over the next decade. Just as an example, of Facebook, Twitter and MySpace, will any of them still be big players 10 years from now? Will any of them cease to exist because the owner started losing so much money that they shut it down or spun it off to die?

Proverb to consider about this: "The past has already happened, the future isn't here yet so enjoy the present that is today."

I'm not sure who said it or what the original quote is but the point is to focus on the moment as that is what is happening, as opposed to what has happened or may happen.

JB King
Thanks JB. Thats given me a lot to think about, I like the ethos though of finding out what I like doing and what I'm good at doing and seeing which parts of web development match them both. I have always tended to just look at what I enjoy which has probably been one of the reasons I've tried so many languages. Thanks again
Alex
+1  A: 

At one year of industry experience, I don't think you are ready to either specialize or be a generalist. You are still a beginner. Instead I would suggest that you first learn something (C# probably as you use that in your current job) in depth, then branch out to other languages. I've seen far too many people that know 27 different ways to declare a variable (in different languages) but aren't beyond the beginner level in anything. Learn depth first then decide to specialize or branch out to other languages as a generalist from a position of understanding far more than you do right now. Until you have some depth you really don't know what to specialize in.

HLGEM