views:

617

answers:

9

Hello,

I've got two jobs offerings - C programmer (for middle-sized company) and ASP.NET/C# programmer (for starup company). Salary is the same. Which one would you choose and why? I mean what would be better for future carrer, for future job-hunting, etc.

I've been learning java for some months and would like to work as a java developer. Unfortunately I can't find a java job right now. So I've got only these two alternatives - C or ASP.NET/C#...

Thank you very much for your help.

+1  A: 

For future job hunting the company rep does have some weight. Though i'd go with the one that offered me interesting work, professional growth perspectives and long term stability.

Nuno Furtado
+5  A: 

If you are more into Java, then I think its better to go with the ASP.NET/C# thingie. The benefit would be they may consider you for the Java Developer position, and there is a very little learning curve.

Adeel Ansari
-1 Learning curves are a good thing, you'll never progress if you don't push yourself!
Ed Woodcock
@Woodcock - Of course they are. Why not add your suggestion in a separate post. If you think your idea is very much suited here. How about this, "Go for a C job, because there is great learning curve and getting back to Java would not be an easy job."
Adeel Ansari
+13  A: 

Tricky.

The C# job will probably make you more marketable since there are more jobs for C# programmers.

The C job on the other hand might give you a better grounding in operating system fundamentals and programming concepts, which in the long term would make you a better programmer.

Not to say you can't get a good grounding with the C# job, just that you are not so likely to be exposed as often to the lower levels with C# and .Net.

A startup will have a greater risk of failure than the more established middle-size company, but there might be a chance of much greater reward. So from that point of view it depends what you are comfortable with, risk <--> reward.

And then there's the view that you should go with the one where you are more likely to succeed. If your background is Java then C# is probably the one to go for.

Ed Guiness
+20  A: 

Ignore the language - which company do you prefer? Which product would you rather be working on? Would you be happier in a start-up (less stability, more freedom) or an SME (more stability, more politics, less freedom)?

Good developers pick up new languages very quickly, and liking where you work is worth so much more than experience in any one language or technology stack.

Keith
*very* good answer
annakata
+9  A: 

I would go with the C#/ASP.NET. Web development will continue to evolve and grow. Although the Webforms model is a little odd if you are new to it.

If you decide your future is not C#, the skills are transferable to Java.

I'd also apply the Joel Test to each company. The work is only half the equation. The work could be great but a poor environment could ruin it.

Here is another article that expands on the Joel Test.

In the past when I've needed to choose companies, I've went on LinkedIn and searched for the company. I usually find a couple of people who have left. I've dropped them emails, asking what they think of the company.

Chuck Conway
A: 

There are always exceptions to the rule, but right now is not a great time for startups. If stability or security is important to you....

Tim Jarvis
+2  A: 

I've been learning java

C and Java only hold the smallest of similarities. C# and Java are paternal brothers.

Seriously, I don't understand why you think going from Java to C is going to be anything but extremely painful. You have no VM watching your back. You have to look after memory. The language is about 100 times more pnickety about source-order and syntax.

C# is a much more relaxed managed-code haven. You get the VM giving you lots of development shortcuts and it'll look after the running of your code too. And you have a nicer environment to develop in.

Start-ups are a risk but, hey, it'll probably be more fun than clawing your eyes out after a week of learning C.

Oli
+1  A: 

C is fundamentals.

identy
+1  A: 

If you want to take the higher risk and more challenging job, I would suggest the C job.

If you want to take something less risk and less challenge job, I would suggest taking the C#/ASP .NET job.

I suggest skimming a short anecdote about my C programming experience that I wrote below

and

definitely read:


For the past 3 years I have been doing C only development as an Electrical Engineer and I have found the experience to be invaluable!

As a C programmer you will find yourself:

  • coding for performance and designing algorithms
  • implementing lots of low level building blocks that are taken for granted in higher level languages
  • memory management

RE - coding for performance:

After doing some coding for performance and developing algorithms, I will have to say that I am hooked. I find it really exciting and I find performance/algorithms to be one of the most challenging and interesting subjects.

RE - implementing lots of low level building blocks:

At first I was very annoyed at having to implement my own low level objects. But as time progressed I realized that it takes real skill to successfully implement something like a circular buffer that is fast and robust. In the future, if I need to implement some fancy data structure with lots of dynamic memory usage and pointers I will easily be able to.

Doing low level implementation work also makes using any of the higher level C++/Java work very very easy because once you have done low level work the high level stuff is easy.

RE - memory management:

I almost forgot to mention this because in C you are forced to make decisions about memory every couple of seconds... and you don't even realize it after a while. Basically this is probably one of the best parts of C because it forces you to think about how you are using memory always and as a result you become much much more proficient in using memory.


I consider performance/algorithms/low-level-building blocks to be more interesting and challenging than the higher level languages.

To explain my opinion of higher level languages using metaphor:

  • All my experience using higher level C++/Java has been less challenging and less interesting because I feel like a child who is given a box of Legos to build something with.
  • You can build many things with Legos and they can be very impressive... but you are restricted to the tools in your Lego box.
  • The resultant output sometimes has a tendency to look similar to other Lego projects.
  • The process of building your Lego output is not as challenging as building your own Lego pieces and then building your project from your own pieces.

( Obligatory warning about metaphors and how they are useful for getting a point across but not for completely explaining things. )

Trevor Boyd Smith
OOH, I do like the LEGO metaphor. I'm going to pinch that. It might break down though, when used to describe the .Net framework. I mean I've never seen a box of lego containing more than 14,000 unique blocks.
Ed Guiness
I disagree about the C being more challenging bit - it's just that the challenges are different. C# has predefined tools (hammer, drill, crane, etc) so you just get on with building your skyscraper or whatever. C can have any tools you want, so if you want to build something highly specialised like a nuclear power station you can, but it will take the same time as several skyscrapers in C#. Neither is quite as simplified as Lego.
Keith