views:

148

answers:

3

So - as I see it, there are really two kinds of developers. Those that do frameworks, web services, pretty-making front ends, etc etc. Then there are developers that write the algorithms that solve the problem. That is, unless the problem is "display this raw data in some meaningful way." In that case, the framework/web developer guy might be doing both jobs.

So my basic problem is this. I have been an algorithms kind of software developer for a few years now. I double majored in Math and Computer science, and I have a master's in systems engineering.

I have never done any web-dev work, with the exception of a couple minor jobs, and some hobby level stuff.

I have been job interviewing lately, and this is what happens:

  1. Job is listed as "programmer- 5 years of experience with the following: C/C++, Java,Perl, Ruby, ant, blah blah blah"
  2. Recruiter calls me, says they want me to come in for interview
  3. In the interview, find out they have some webservices development, blah blah blah
  4. When asked in the interview, talk about my experience doing algorithms, optimization, blah blah..but very willing to learn new languages, frameworks, etc
  5. Get a call back saying "we didn't think you were a fit for the job you interviewed wtih, but our algorithm team got wind of you and wants to bring you on"

This has happened to me a couple times now - see a vague-ish job description looking for a "programmer"

Go in, find out they are doing some sort of web-based tool, maybe with some hardcore algorithms running in the background. interview with people for the web-based tool, but get an offer from the algorithms people.

So the question is - which job is the better job? I basically just want to get a wide berth of experience at this level of my career, but are algorithm developers so much in demand? Even more so than all these supposed hot in demand web developer guys?

Will I be ok in the long run if I go into the niche of math based algorithm development, and just little to no, or hobby level web-dev experience?

I basically just don't want to pigeon hole myself this early. My salary is already starting to get pretty high - and I can see a company later on saying "we really need a web developer, but we'll hire this 50k/year college guy, instead of this 100k/year experience algorithm guy"

Cliffs notes: I have been doing algorithm development. I consider myself to be a "good programmer." I would have no problem picking up web technologies and those sorts of frameworks. During job interviews, I keep getting "we think you've got a good skillset - talk to our algorithm team" instead of wanting me to learn new skills on the job to do their web services or whhatever other new technology they are doing.

Edit: Whenever I am talking about algorithm development here - I am talking about the code that produces the answer. Typically I think of more math-based algorithms: solving a financial problem, solving a finite element method, image processing, etc

+8  A: 

So the question is - which job is the better job?

It's the one you enjoy the most.

When you have fun doing what you are doing, you can hardly avoid becoming good in doing it. And when you're good doing something, it's easier to get good jobs in that area.

sbi
+1 While the other answers have great suggestions, especially Mike Mooneys. Bur this is the only real right "answer" to your question
David Relihan
I honestly enjoy algorithm development more. To me it is more challenging to actually generate the result - not get it displayed nicely, blah blah blah. I just wanted to also make sure that guy doing tha tprogramming is also in demand.
Derek
@Derek: Then do the algorithms. The people that turn the algorithsm into working executable code are also in demand, because otherwise, what good would the algorithm be? Having a good understanding of the algorithms would also make you a better algorithm implementor. And next time you interview, you can ask if they have some cross-team training so you get experience in more than *just* algorithms.
FrustratedWithFormsDesigner
+1  A: 

I think first you have to do what you have passion for. If that's algorithm type work, then great. If it's working with databases, then go for it. If it's writing GUI interfaces then that's fine too. And it doesn't necessarily have to be an "either/or". It can be a combination, which is kind of how my job works.

It's impossible to predict what niche markets there will be in the future, just as it's impossible to predict what the stock markets across the world will do. You can make educated guesses based on trends and such, but targeting a niche market in the hopes that it will pave the way to financial prosperity is a risky proposition in any case.

I go back to my first sentence. Passion drives success. Find out what you love to do, and do it with everything you've got. If you do that, the success will follow, even in a tough global recession like we're in now.

dcp
+4  A: 

You should do both. There is a lot less difference then you think. Everyone needs to be good at algorithms, assuming that they want to not suck.

However, you should also have some solid experience with modern technologies, and these days that usually means web techologies like ASP.NET or Ruby on Rails or whatever. Granted, if you're smart you can pick those specific technologies pretty easily, but when I'm hiring I'd prefer someone who is smart and already knows the technology.

As far as pigeonholing, it only sounds like you are pigeonholing yourself. Take the algorithm job, it sounds like it will be interesting. But by god, don't call yourself an alogorithm developer, you are a developer who is getting good experience with algorithms, but you are also a developer who needs to know one or more frameworks, front-ends, etc. Be one of those people who embraces the opportunity to get yourself involved in this things, rather than an ivory tower architect who things he's too good for silly web stuff, because that would just lead to you being a detached self-important jerk who is not nearly as productive as you think.

Unless of course the algorirthms team is designed to be ivory tower architects, who are not allowed to get involved in other stuff. In that case, run like hell, because you won't be doing anything important.

Mike Mooney
Totally agree!!!
StudiousJoseph