views:

284

answers:

7

I am currently a Software Engineering undergrad and recently began my senior year. I see on the horizon a choice that must be made: choosing a career path.

For the past several months, I have been of the mindset that I should:

  • Find a language and maybe a web app framework that I like
  • Learn it
  • Build some web apps to learn it better
  • Try to learn as much as possible about the Lang-X/Framework
  • Start job searches on Monster for "Lang-X/Framework Developer" and applying.

So for several months I have been trying out and playing with several different language / framework combinations to get a sense of them and decide which one I like best.

Recently though, I have begun to think that maybe I'm going about this all wrong. When I do a search for "Lang-X Developer", regardless of the language/framework I generally get between 150-300 hits.

But if I do a search for "Software Engineer," I get 2-3 thousand hits. I understand, I'm getting the hits for "Software Engineer" for all lang/framework combinations and much more, but that's the root of my concern.

My questions:

  1. Am I severely limiting my career choices by focusing on solely web development? If so, is that bad?

  2. Is focusing on one language/framework a good idea, in your opinion? Or should I spread my time/energy around and always be trying new languages/frameworks?

  3. When hiring junior developers that are fresh-out-college CS / SE majors, what are you looking for?

If you can, please elaborate. Feel free to answer any one or all of them, as you see fit. Thanks

+5  A: 

Just focus on the core computer science ideas, you can specialize later. All of these frameworks were specifically designed to be easy to develop in, right, so it is not impressive that you happen to be good at any one of them. And they go bad like lunch meat in the sun, so you'll be limiting yourself by getting committed to any one of them so soon.

When I interview junior people I'm looking for the big ideas: do they understand recursion, when to use a database, can they describe how to solve a problem in general terms, can they code a small problem tightly (in any common language). In other words: are they a smart person. Any smart person can pick up a specific implementation later.

Now, that isn't to say that you shouldn't have some web apps deployed if you want a job as a web developer, that would be nice to see. Choose whatever framework seems to agree with you, and also happens to be in demand. But don't bother learning every little detail of the thing, just prove that you can get stuff done.

Jeff
+4  A: 

Do what you love and the rest will follow.

Career planning is all good, but at the end of the day if you aren't enjoying what you do most of the time, then you aren't going to be satisfied.

Unless you're really into the whole "framework" concept, and really want to specialize, then I wouldn't focus, especially this early in the game. Go out as a general software engineer, learn the ropes, try a dozen different things.

If you find that you enjoy specializing in something then great - go for it. You'll be perfectly happy, and chances are good that you'll have as easy/hard time finding jobs as a generalist. Realize, however, that frameworks come and go much more quickly than some specialties - you shouldn't run away from them due to lack of stability, but embrace it and always keep learning.

Adam Davis
A: 

1) - In this Network aware world, no. I'd been programming professionally for 3 years before I ever built a non-web application.

2) - In college, I focused on C++/PHP because that's what my college taught. After graduating, and getting into the workforce, I've been a .NET developer ever since. The thing is not learning a language, but learning HOW to learn a language. Concepts are universal.

3) - That depends on the job description. But,primarily for a Jr. level SE, I want the following:

  • Clear understanding of the primary language my company use (which is VB.Net)--which means the ability to program fundamental tasks (hello world, for loops, etc).
  • Ability to communicate clearly in writing and speaking (both in person and on the phone)
  • Ability to create & read
    pseudo-code
  • Familiarity with SQL
Stephen Wrighton
+1  A: 

You must understand the fundamentals first ... after all by the time you graduate (even if it is in 6 months) the current language/framework flavour-du-jour is likely to have changed. If you find web technologies motivating then by all means focus on them, but try to keep a 'big picture' mentality so your skills are transferable to the next technology. For example: understand the strengths and weaknesses of a framework, and not just how to set the background color of a widget nested N deep in one line.

As a fresh grad you need to show passion about what you want to do and a willingness to learn. Being able to point to a contribution to an open source project would be a huge bonus -- even if the project isn't a directly technology match with the job.

As far as career development goes, you should also look at developing domain expertise. Technologies will come and go, and mixing technical ability with a deep domain knowledge will make you far more valuable to an employer. Is there an area beside technology that you are interested in and can take a couple of courses in?

Rob Walker
Other interest? I have a hard time describing it, but my best shot is "Leading groups of people." For my advanced out-of-major electives, I took "Organizational Behavior" and "Leading and Management" over in the business school - both deal with groups and leading. I like to lead groups on projects.
cadwag
A: 

I don't think trying out various languages is a waste of time because you will hone your dev skills and get a taste of what's out there. Also, certain practices are more prominent in some language than others. For example, when I was primarily doing VB work, the use of collections and dictionaries was unfamiliar and not well advertised, but when I started using Java, it was business as usual.

On the other side of the coint, it is not a bad idea to concentrate on a particular language/framework just so you get into some more complex features, which will likely be available in other languages.

Greg Ogle
A: 

Am I severely limiting my career choices by focusing on solely web development? If so, is that bad?

At this point it's pretty clear that web development is here to stay for a while. With technologies like Gears and Adobe Air and so on, the line between web applications and desktop applications is becoming fuzzier anyway. If you enjoy working on the web and you already know the fundamentals of programming, I think that's a great idea.

Is focusing on one language/framework a good idea, in your opinion? Or should I spread my time/energy around and always be trying new languages/frameworks?

If you focus on a well designed medium to large framework let's say for Javascript or Ruby, you are going to learn a great deal by examining how it was built as well as in learning how to use it. I don't see any advantage in 'always be trying' new things, because you won't have time to really get to know them.

When hiring junior developers that are fresh-out-college CS / SE majors, what are you looking for?

Ability to solve problems without knowning all the details, using logic and common sense. The ability to use Google properly! There's so much information out there and being able to find it quickly is a must. Also communication skills - The hermit antisocial programmer archetype is just about dead.

neonski
A: 

If you want to work on web related projects, don't worry if you are limiting you career choices.

Some languages I would recommend for someone who wants to work in web development.

  • Javascript
  • Perl
  • Java
  • Ruby
  • PHP
  • .NET

Javascript

Well this was an easy pick.

Perl

This is still a major language for the back end stuff. Not to mention that is often used as a glue between separate applications.

Java

Love it or hate it, it still has a major presence on the web.

Ruby

This has recently had a lot of buzz. I'm not too sure it will stay that way, but it will probably be worth learning anyway.

PHP

I seriously considered leaving this off the list, as it is more of a framework than a languge. There are enough differences between it and Perl, its ancestor, to consider it a language.

.NET

This has a lot of momentum behind it, and it is the basis of Silverlight.

What is interesting I would recommend everyone to learn at least three of those languages anyway. Namely Javascript, Perl, and one of Ruby or Java.

Brad Gilbert
Ruby is the new Perl. I still love Perl, but these days being good at Perl is almost a liability, it dates you. Sad but true..
Jeff