10

Currently I am working as a trainee software engineer. I was hired to work with Java technology, but the company is giving me C# tasks.

Will this affect my career? I want a career in Java technology and I have full command of Java but the organization is forcing me to work on C# technology. Do I leave the organization and join another? How do I handle this assignment?

  • 6
    C# and Java are so closely related. Besides, having knowledge in a variety of languages is essential. – Ci3 Jun 29 '12 at 5:40
  • 6
    You are a trainee you need to suck it up and do your tasks. If they didn't need you to work on these projects they would not put you on them. You need to accept that you will learn dozens of languages in your career and you better adapt to that fact otherwise you won't make it. – Ramhound Jun 29 '12 at 12:34
  • 1
    How long are you planning to continue working? Languages come and go. In eight years Java could be as popular as COBOL for new development. – kevin cline Jun 29 '12 at 17:35
  • You are a "trainee" software engineer and you have "full command" of Java. How come? – scaaahu Jul 1 '12 at 7:27
  • If you insist on being a language snob, you're gonna have a bad time. (Sorry for the meme, but I had to do it) – JohnFx Jul 1 '12 at 16:39
34

When I read the title, I assumed the complaint was going to be:

I am a lawyer, but I want to be an artist.

or:

I want to be a programmer, but they have me working on the help-desk.

or maybe even:

I want to be a Java developer, but they are making me write COBOL on punch-cards.

However, your complaint is that you want to use one modern, object-oriented, managed, statically-typed language and they are asking you to use another modern, object-oriented, managed, statically-typed language?

That's a pretty trivial set-back. Almost all the skills you learn in the next year will be transferrable to your Java career.

Relax: The choice of programming language in your first job will have little to do with the rest of your career. However, the skills you learn in dealing with teams and people, personal productivity, configuration management, testing, user interface design, etc. will stay with you for years.

  • 4
    +1 for Relax... the skills you learn in dealing with teams and people, personal productivity...will stay with you for years. – mhoran_psprep Jun 29 '12 at 10:33
  • 2
    Not to nitpick, but one doesn't have a "Java career." One has a software development career. I bring this up at is part of the problem. The OP has too specific goal we agree with, but it is the presumption of a "Java career" and not even a "java job" that is part of the problem. – Jeanne Boyarsky Jun 29 '12 at 15:39
  • 2
    @JeanneBoyarsky Yeah, it's like a carpenter saying that he has a tablesaw career and wouldn't ever touch a bandsaw. – Tacroy Jun 29 '12 at 15:53
  • 1
    @Jeanne/Tacroy: I half-agree, but there is a middle-ground somewhere here. "Java" is too specific for a career, but I am currently reviewing resumes for a mid-term contract and I am discarding more than a few who have many years experience at web-development, exclusively, which is not what I am looking for. "Java developer" may not be a career, but "web developer" seems to be one. – Oddthinking Jun 29 '12 at 16:02
  • @Oddthinking That's true as far as it goes, but many experienced web devs were desktop devs early in their career; and looking at gray beard level web/desktop developers many were mainframe programmers a few decades ago. You can see the same thing from the other direction with mobile app developers; except at the entry level almost all of them starting programming something else. My point is that people do flow from one to another throughout their careers, it's not like you have to do the same thing for 40 years until you retire or go into management. – Dan Neely Jun 29 '12 at 17:59
8

How do I handle this assignment?

Your options are:

a) Quit.

b) Tell the company you won't do any non-Java assignments. Get fired.

c) Tell the company you won't do any non-Java assignments. Get only Java assignments.

From the outside, two of those look particularly bad on resumes (short, incomplete stint as a trainee) and the third one looks like the company is pigeon-holing you in one area of code. If the company later decides to convert all their code from Java to C#, you'll be out the door then anyway.

In my current company I'm working with several different systems - 2 are in C#, one is in PHP and one is in Java. I would not have been hired if I couldn't handle working in multiple environments with multiple languages. (Incidentally, we're porting our remaining Java code to C# so that we can remove several of our Linux boxes and consolidate the code on our Windows machines.)

Several jobs ago I worked on both a modern C# app and a legacy VB.Net app. I ended up being the go-to guy for the VB code, and when they finally retired that code I was given an award for keeping it running as long as I had.

Your goal here is to become a better programmer. Especially as a trainee, your opinions of "Java is the only language worth learning" will hold no water. Once you're a team lead, creating new programs from scratch, you'll be able to weigh in on what languages to use, but by then you'll also be able to say why one language is better than another for a given task.

  • 1
    I should add that by "get fired" I don't necessarily mean anything particularly retaliatory - it could be as simple as "we don't have enough Java work to keep you busy, so we'll let you go and find someone who's also okay working on C#". (However, you might want to consider that telling your boss "I won't do what you tell me" is likely grounds for termination by itself.) – Adam V Jun 29 '12 at 14:25
  • 3
    Where is "d) Do the non-Java assignment."? – Oddthinking Jun 29 '12 at 16:03
  • 2
    @Oddthinking: good point. :) I was approaching it from the standpoint of the OP sticking to their guns and refusing the assignment, and pointing out that none of the outcomes of that decision would be positive. – Adam V Jun 29 '12 at 17:41
  • Doesn't SharpDevelop have a built in VB.net-C# conversion tool? You could've switched the legacy app to C# eliminating the foreign language penalty. Or was the legacy app VB6? – Dan Neely Jun 29 '12 at 18:02
  • The customer wasn't interested in upgrading to the C# version, and there was no sense in spending more than a few hours a month adding their requested features. And besides, it helped me pick up VB.Net (which was easy enough to learn anyway). – Adam V Jun 29 '12 at 18:59
7

It's called work for a reason. In your career, you will be asked to do many many tasks that don't interest you. You will be expected to do them anyway. You need to get over this sense of entitlement that you only have to do the things you personally think are cool. They are paying you, so they get to choose your assignment based on their needs and you are professionally obligated to do them to the best of your ability. If you don't then you have no business accepting the pay check.

You are being asked to do something that can only help you in your career. Ten years from now you might not be programming in either Java or C# but in some language that hasn't even been written yet. Learning new languages/technologies under the pressure to get the project done is part and parcel of your profession. If you are never asked to learn new stuff or to solve the problems that your current tool set doesn't solve well, that is a signal that you aren't considered to be capable of doing senior level work. So it is a compliment to you that you have been asked to work outside your comfort zone. Don't blow it by whining about being asked to do something you didn't want to do.

How you start your career is critical to your overall success. You want to become the go-to person. You want to get the respect of the people above you in the hierarchy as well as your peers. Yes, even the old people like me. They have influence in your oprganization, showing them you are an immature brat who can't be trusted to do the work that needs to be done is the fast track to not being employed and to being blacklisted among their friends who probably work in most of the other comapnies in your area. Think about that for a few minutes.

PS - you probably don't know as much about Java programming as you think you do either. Virtually all trainees overestimate their skills.

  • Only probably? :-) Somebody with experience in java would not have been hired as a trainee imo. – Ramhound Jun 29 '12 at 13:49
6

The operative word in your original post is TRAINEE. Your desire to work only with Java may be the result of being uninformed about the marketplace, or a perceived stability or security in what you already know. Just because we think we want a career in language X, factors that allow us to be gainfully employed generally force us to learn new things (language Y, scripting language Z, tools A, B, J). It is our willingness to suspend our initial impressions of change that make us good employees, and better people.

I for one am glad that I didn't insist that all of my work be done on a specific operating system or software language when I started. Software engineering is exciting in that the tools and technology change rapidly. In order to have a career that spans time, you need to be able to learn new things and adapt as needed, which sometimes means keeping something in old technology (it works fine, without bugs, and we can't spend more money rewriting this just because we like language Z now), and sometimes it means doing things in a completely new way you've never tried before.

I have found that sometimes the most creative solutions at work have come about in situations where there were significant constraints on the tools available. Your ability to adapt to changing situations is your biggest asset. My first job out of graduate school was an excellent experience- I lost any religious fervor over specific operating systems or technologies in general, and learned SO much. When an employer is paying you to learn new things, why are you trying to limit yourself from the beginning?

4

Will this affect my career?

Positively, I imagine. Now your resume will show C# AND Java. This could be useful in a few years when some really exciting company with really awesome exciting projects needs a C# developer ASAP, and you just happen to fill the need. That's not gonna happen if you only know Java.

Having multiple technologies also shows you can learn other skills and that you have a diverse background.

Do I leave the organization and join another?

You can if you want to, but I would not recommend this unless there is a really good reason to leave. Is working in C# truly that distasteful that you would seriously consider working somewhere else?

How do I handle this assignment?

Do it. And do it with the attitude of looking to learn something new.

2

As a trainee, you should be happy to be getting a paid intro to the working world. It sounds crude, but people trying to break into advertising or other creative fields frequently start with unpaid grunt work. ("Working in the mailroom" literally was walking around distributing hardcopy memos)

If you had 10 years of distributed Java experience, and were being pushed into something else (supporting hardware?), it could be reason to worry. You don't want to lose your edge if you're a highly paid specialist. As a trainee, it doesn't really matter.

So the short answer is, smile, come to work on time, and work hard. If you don't like the job in a year, talk to your boss. Switch jobs as a last resort.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.