views:

685

answers:

13

I'm about to start work at a large software consultancy mainly doing C# and Java. These apps are all aimed at end users such as payroll clerks etc. I really want to work in systems level software and tools such as drivers, compilers, kernels etc. Does the job I have now make me less likely to get a job doing what I want as what I'm doing now is in no way related to systems level stuff.

Note: I'm about to graduate (comp sci) and I am contracted to work for the company for 12 months minimum, long story, I can't get out of it without a hefty fine.

+6  A: 

No, I'm sure the experience will be worthwhile, and you'll learn some things about the industry. Wait it out for a year, then think about looking for something else.

David Hodgson
+4  A: 

Considering this is the genesis of your career, I don't think you have anything to worry about. You'll still get experience at this job, not to mention you could also work on an Open Source project to develop the experience in the areas you have an interest.

Cj Anderson
+19  A: 

Just my 2 cents: if system level stuff is what you want to do, then do this. That way when you get to do the system level stuff later on, if for some reason you don't like it then you'll have done this and will be able to compare.

JRL
JRL, great point.
David
+2  A: 

No. In fact, I don't think systems guys should be hired without some applications experience. I've seen several examples in Java where the people who built some chunk of Java clearly hadn't actually ever built an application using their sort of feature.

Good guys, but not seeing the real issues.

Charlie Martin
A: 

I don't think so. It's still software development in a professional environment. You'll learn things besides pure programming, like working in a team in general how things work in the "real world" which is significantly different from a classroom setting.

Davy8
+1  A: 

I don't think it will hurt, per se, but I don't think it will help either. You will have to start from scratch when you change over in a year. That is someone with 1 year of compiler experience is better than someone with 1 year of consulting experience for the purposes of an entry level compiler position. This is nothing against consulting -- I am a career consultant. But, I feel like if I were to go an try to get a job as a compiler writer, my 15 years of experience as a consultant would probably not help me much.

JP Alioto
+14  A: 

No, not directly. Your job won't actively hurt your chances of moving into other areas of programming. Most hiring managers won't fault you for your first job choice right out of college.

The biggest hazard comes from within. Many developers grow complacent once they start getting a regular paycheck and they forget what they got into programming for in the first place. Don't let that happen, and you should be in good shape.

There are still plenty of Linux distributions that could use some device drivers written. Please consider contributing to them in the next year. It will look great on your resume when you start looking for your first "career" job.

Bill the Lizard
+3  A: 

There is no such thing as harmful experience.

I would just keep your resume geared towards your goals. If you sent your resume in for a systems level job and your resume has "QA tester" for 10 years you would probably have a hard time getting more than a glance at your resume.

I just wouldn't put it on your resume if it's not what you want to do as a career.

Since I've been in the role of reviewing resumes and have even posted positions ... 90% + of people responding to jobs do not even remotely match the position they are applying for.

Chad Grant
A: 

Can you eat any other way than the current job? If not continue. If you can then do what you want to do.

Really, you'll remain fluent in the languages of your choice, and I'm sure you'll do things on the side because this job will not fulfill you, though it may fill your wallet. At a minimum it will be seen as job experience. If you are passionate enough later you'll get the job you're seeking.

johnny
A: 

If you can find another job that you feel challenges you in the areas that you mention are of interest then I would say you should serious consider the change.

mP
+1  A: 

No, I don't think it will hurt you. I've been doing systems programming (drivers, kernel, embedded) for about five years, but I got my start writing C++ application software.

Take the next year or two to do the following:

1) Build up some base skills in the industry: version control, software architecture, learning to read APIs, et cetera. You'll use these in any decent software job.

==> If you want to work in the Windows world, take the year to learn how to make C# call and work with Win32/C/C++. Most people with experience in the industry don't know much about .NET, but application programmers these days only want to use .NET and no longer want to call raw DLLs.

2) Make sure your OS knowledge C programming skills are up to speed: pointers, virtual memory, et cetera. Read books on the Windows Internals or Linux/BSD kernels.

3) Get some relevant experience in your spare time and learn how to use the tools: kernel debuggers, kernel modules, building kernel modules, etc. You can buy demonstration hardware very cheap (US $100~$200) and then learn how to write your own Linux kernel modules or Windows device drivers. Sure, the hardware might be trivial, but you'll be learning how the OS interacts with the hardware and that is the key.

==> I think this is key if you want to work with Linux and Mac technologies.

4) Consider your industry goals. Are you set on the PC/Server industry? There is a lot of competition in that market, and in Taiwan and China there are plenty of entry-level systems programming jobs where so much of the commodity hardware and computers are produced. However, if you're open to working in the telecom, defense or aerospace industries, there are lots of opportunities to do systems level work, including compilers for customer hardware and what not.

Dr. Watson
A: 
  1. Code is code. Idioms are different, but thinking stays the same. Make sure you get to flex your brain muscle at your job, and keep up with your systems reading / hobby coding, and you should be perfectly hireable.

  2. An app programmer's "client" is the end user. A systems programmer's "client" is the app programmer. Putting oneself in the client's shoes doesn't hurt (and this, by the way, is how you spin your experience when time comes to interview).

  3. It's a bad economy. Get a job, pay off the student loans. Don't put too much thought into what your first job out of college looks like on paper. There are former English Lit majors who became (which implies, got hired to be) genius-level hackers. This industry isn't terribly track-focused, smart people tend to get a chance to try their hand at stuff they want. Companies are often interested in smart people with outside-the-box experience than in people with one thing on their resume over and over.

This all assumes you are actually good, of course :-).

SquareCog
A: 

I think the answer is unfortunately yes.

To get a job doing system-level stuff, you need to get an entry-level job in system-level.

Entry-level jobs are much easier to get when you are in college or coming out of college than when you are already out of college for a while, and established in other languages.

Since most resumes go through HR people or screeners, if they look for low-level people and all your resume is full of several years of C#/J2EE, etc., they'll just dump the resume and look elsewhere.

Uri