43

I am a web developer on my first year of experience. My company works with technologies that are very uncommon in my country (e.g. ruby&ruby on rails).

My fear is that acquiring experience in this language will get me stuck on it and will eventually make me lose better job positions for having experience only in technologies nobody use here.

Will learning these technologies in my first years determine my future jobs or it's possible to change the route of my career later on?

  • 15
    in which country? – Alexan Mar 22 at 16:45
  • Correct me if I'm wrong... but isn't R/RoR backend? Won't you still know HTML/CSS/JavaScript for front end? If so, that's a head start towards learning other backends... – WernerCD Mar 23 at 23:44
  • 3
    @WernerCD not all web developers do front end. I've worked as a back end web developer for two years. I knew enough HTML and CSS to understand how to integrate what the front-end developers did. With how much HTML, CSS and Javascript grew in the last 5 years, I wouldn't be able to sell myself as a front-end developer with the limited knowledge I have. – MlleMei Mar 24 at 0:38
  • @MlleMei I'm a backend - api & windows services guy as well. I'm currently working my current project into a CodeFirst DB database with a Rest API intermediary. I understand fully the "I'm a programmer and can't understand the magic that happens on the front end" lol - but my goal after standing up the Restful API is to learn Angular and see how far down that rabbit hole I can go. – WernerCD Apr 19 at 23:15

15 Answers 15

49

Answering from the northwestern US, I've switched between languages and frameworks multiple times in the last 10 years. ColdFusion, ASP Classic, ASP.NET (both C# and VB), .NET Core, right now I'm working a project in JavaScript/Cordova/React, smaller side jobs in Python and Ruby, Bash (with sed and awk) etc.

It would help to know your country, but in my area many people know multiple languages, often working in one and using another at home or for side projects. It not only keeps you flexible for what may come up, it can make you a well rounded developer even if you never end up changing languages.

  • 3
    For what is worth, this has also been my case. My first job was in ASP.NET, the next one was in RoR, and now I'm in Java. It is a disadvantage that it some time to get used to each language, but if you know the basics of programming, it is not so hard to start over. =) – cavpollo Mar 22 at 23:18
  • 1
    I have .NET background. Early in my career (when someone would argue it should be much easier to switch) I went for an Android position at a well-known startup. They knew I had very little Android experience, therefore my interview focused on algorithms and data structures and I absolutely smashed it. Next day I was told I didn't get the position because I didn't have enough Android experience. Maybe they sugar coated it, I can't know that. But companies do look at your experience in their tech stack and if it's one that's popular, they have plenty of candidates to pick from. – async Mar 23 at 11:50
  • 1
    @async that's not just a language barrier, though - the leap between building web applications in Java and web applications in .NET is much smaller than the leap between building web apps and building native mobile apps. – Ant P Mar 23 at 14:25
  • 1
    @AntP I'm not denying that. But OP has to be aware that his choice will have consequences, and while he may be able to switch to something else in the future, it's much easier and safer to choose a mainstream ecosystem. Everybody that insists he'll be fine, because 20 years ago they had no issues in a similar situation, is misguiding this individual. These days there are a gazillion developers that know, for example, (web) Java or .NET and employers have a much easier time choosing someone over you, an individual with no (web) Java or .NET experience. – async Mar 23 at 14:34
  • @async True, but what's mainstream now won't be by the later stages of ones career. The best advice is don't just become expert in a tech stack, make sure you're strong in the fundamentals and good practices that apply regardless of stack. – Julia Hayward Mar 31 at 7:55
27

As a developer, I would definitely say the answer to your question is "Yes". My career today is still based on "my first job" and what I learned there. However in my case as technologies evolved, I evolved with them and my company supported moving toward newer ideas.

I think what you should really be asking is if this position is open to change, and open to moving toward new technology, or are you going to be stuck in these technologies for years with no path forward to more popular technologies. You should prepare yourself with a good argument for explaining why they should be using xyz technology over the stuff they are currently doing.

If you get the impression they are not interested in upgrading their systems, and your only purpose is to support these other technologies and keep the place running, I'd definitely consider a position change.

  • The second paragraph is a really important one. – Giovani Vercauteren Mar 22 at 12:45
  • 22
    I don't think I would consider switching after just a year. Supporting a large, existing system full of quirks is, in my opinion, one of the best ways to learn about real life. There is more to a developer job than writing code. This setting will allow OP to learn a lot about guessing people's real requirements, understanding business processes, office politics and other things that are essential side-skills. One year of experience is next to nothing. If OP doesn't like their language they can still switch after two or three years, but getting this first experience in is crucial imho. – simbabque Mar 22 at 17:36
  • @simbabque OP can learn the same skills and more in a company with a far more modern, or popular (and potentially better paid) stack. – async Mar 22 at 22:28
  • 1
    Updated title to reflect question details. Now yes makes sense. The details I used were from the questions body itself. – Michael Durrant Mar 24 at 11:12
  • 1
    My current and previous jobs had nothing to do with my first job. All in IT :) In fact, all of my positions have involved technology I hadn't used previously and learned on the job. Which is also what I like to do :) – Juha Untinen Mar 24 at 14:21
19

You might be looking at this the wrong way around. Unless your country is extremely small (ie Monaco, Luxemburg, etc) and you're sure you know the market well, there are always opportunities in a technology stack.

And then you're one of the few experts on that stack. Being in a niche market means you can charge niche prices.

Of course I don't know your country or your market and I'm just making assumptions. RoR is a fairly well-known stack, and it seems unlikely to me that an entire country would have no demand for it. If you think, however, that another stack will pay better, then of course you should move to that.

16

There is nothing stopping you from learning other languages on the side. That being said, there are many employers that do not care what languages you know. Many would rather you have the basic skill sets of a developer and the ability to quickly pick up any language than have someone who refuses to learn more but knows the language they need.

  • 2
    This, absolutely. Languages (and frameworks) come and go, and you will learn dozens of the silly things during your career. If you have decent experience in on C like thing, one Lisp like thing, something declarative and something OO (Preferably higher level then C++), then most of what you come across will look like syntactic sugar on something you already know. I would far rather hire someone who know the underlying CS and had knowledge of what I was trying to achieve but did not know language de-jour then a language lawyer who did not know the underlying theory or the field of application. – Dan Mills Mar 22 at 17:27
  • 1
    This is absolutely true, but depends on the OP's level of education, competence, and initiative. For someone who has high-level education and skills, switching from one programming language to another is trivial. Such a person should avoid low-level jobs where the employer just wants a code monkey who already knows a certain API or the syntax of a certain programming language. – Ben Crowell Mar 22 at 19:34
  • 2
    Definitely this. The ability to learn is usually more important than your current proficiency in any given technology and good companies are aware of this when hiring. If you spend 10 years working with one stack and then decide to change jobs and work with a different stack, you may be stuck starting at a junior or intermediate position again instead of a senior position (and thus probably take a pay cut) but you should still be able to make that transition if you want to. – aleppke Mar 22 at 22:27
14

Programmers rarely use one stack throughout their careers. In my own I've gone from firmware in C, to back end web services in C++, to pre-iOS mobile phones in C, to Android in Java, and those were just my main platforms. It doesn't include perl, python, Swift, and a variety of frameworks used on smaller projects or helping out other teams.

Don't worry so much about the exact tech you're using. You won't be using it in 4 years. Instead, learn the fundamentals of computer science and software engineering well, those will be valid in any language and any framework. And don't worry about being hired- exact skillset is generally secondary in hiring to overall competence. If I'm hiring a junior->mid level programmer I want them to know how to program, they can learn a framework or language.

12

You need to take control of your own career.

If you think this is the case (which it might very well be) you need to invest time into learning other languages in your own time. A lot of programming languages are transferable in one way or another. Take a look at the technologies that are being used in your country and get familiar with them.

Once you have done this I recommend you start looking to start off from the "bottom" of another company starting with a more commonly used language otherwise your skillset may not be required in future and you will struggle to find a new job to match your skills.

  • 4
    You don't necessarily need to start at the bottom at another company. After you've got a few years of experience, if you're able to demonstrate that you understand software development, and not just a specific language or stack you will find yourself very employable. Personal side projects, open source contributions can demonstrate your ability to work in multiple stacks. And as you learn more you'll discover more similarities than differences across them. – Colin Young Mar 22 at 14:25
  • 2
    @ColinYoung Your last sentence deserves emphasis. The second language you learn is weird. The third and subsequent come a lot easier. – TKK Mar 22 at 16:15
6

Acquiring experience in any language is better than not having any experience at all. You're doing software engineering, and whether you are doing it in Ruby or JavaScript or C++, the principles and techniques you are using will directly apply to the next thing you do, in whatever language you do it. Mastering Ruby also makes it far easier to learn other languages, because so many of the concepts are the same. I know a lot of languages, but I don't know Ruby. But give me a day or two and I'll get up to speed. That's how you build a career. Use this first job to get a solid foundation in software engineering. That will get you your next job. Ruby may or may not be relevant in the future, but your experience will be.

5

Getting experience as a developer is far, far more important than whatever language/framework/technology you happen to be using.

I'd pick a good developer who doesn't know any of the languages we are using over a developer over a mediocre developer who does know the language every day of the week, and twice on Sunday. We found that it is much easier to learn a new language to a good developer than to turn a mediocre developer into a good one.

Having said that, it pays to be versatile. And I don't mean knowing how to program in a whole bunch of programs. Know how to program. Know how databases work (which is more than "I can write some SQL code"). Know how the OS deals with memory. Know IPC. Know how clusters work. Know how to scale things. Know how to do disaster recovery. Etc, etc, etc.

3

Some of the other answers are very good, so I'm going to answer this from a different angle.

The first people to see your resume/CV are not likely to be the technical managers who would be your superiors, but rather the HR people that don't know that C# is C sharp, RoR is Ruby on Rails, or that "4 years of experience" doesn't mean 4 years of one thing AND 4 years of another AND 4 years of a third thing (in their minds adding up to 12 years experience). Nor will they understand that means 4 years ideally, but 2 years plus another 2 years in something similar is good enough. I've even seen job descriptions where the experience level on a specific technology exceeded the age of the tech, yet HR still expected that much experience in that tech.

The HR dept isn't likely going to understand that Ruby on Rails is similar to X, Y, and Z languages/frameworks/libraries/technologies, so they won't understand that because you know how to OOP in RoR, you have a solid understanding of how to do it in many other languages. I have spent the last 6 years working in C#, which I learned on the job based on my schooling and personal experience in Java (which I started learning in 1996-7), however, I can't get a Java job to save my life.

I also can't get a PHP job either, even though I've been doing that for the past 10+ years on my own. Even with C#, Java, PHP, and even JavaScript all being very closely related, HR doesn't understand how knowing one means you can easily switch to another. They think of all languages being as distinct as spoken languages: C# = Greek, Java = Spanish, RoR = Chinese, etc. It doesn't even matter that spoken languages can be very similar, they just have some misunderstandings due to them not having our experiences.

Then again, maybe my experience has left me bitter, since I also can't seem to find another C# job, either. Personally, I think that's because I don't know all the names of all the techniques I use. I just use whatever works and don't care what it's called. Sort of like playing chess and not knowing that I'm using the "Queen's Gambit", or whatever.

I've also done quite a bit of VB/6/.Net {shudder} in my previous positions, which seems to get me a lot of interest for similar positions almost regardless of how much/little I know. Some tech is like that. If you can find a niche in your area that does RoR when there are few devs to fill the positions, you might have a good lead on a well paying career. That is, if you like RoR.

Your first job doesn't have to define you, but it can be very hard to prevent that. I spent 15 years as a computer repair tech and it took essentially all of that time for me to find a programming job, as I was always looking for a dev job while also looking for a repair job. My first IT job in high school was in computer repair and I think because of that, even though I started a BS in Computer Engineering in college, I couldn't find a programming job even though I learned programming before computer repair.

Maybe this is also part of my cynicism (as well as possibly just based in the USA), but many jobs want a Bachelors degree as a "minimum", even though the job can be learned without one. I've even seen positions that suggest a Masters or PhD, which again the HR department will assume means it's a requirement, rather than a "nice to have". Fortunately, more job descriptions also include "or equivalent work experience".

At my last position, the team lead was a high school dropout yet he had more years professional experience in programming than me as well as was a better programmer because he specialized more than I did. That's even considering that I only have an Associates degree, but over 25 years of total programming experience and in almost 20 distinct languages. (I don't consider MySQL, T-SQL, MS-SQL, Oracle SQL, or plain SQL as different languages. I also lump XHTML, HTML, and HTML5 together, as well as including CSS with CSS3. JavaScript, TypeScript, and ECMAScript are also pooled together, IMO.)

So what do all my ramblings try to conclude? Figure out what you want to do and then do it. Don't get side tracked by what others want you to do. They don't know how the future will unfold any better than you. At the same time, don't be afraid to try several different things, as that's really the only way you are likely to find out what it is you really want to do. Also, don't give up if things don't immediately go the way you want them to. If you can't find a job in the language/technology you want right away, keep at it and you'll get there, eventually. And yes, at the same time, don't be afraid to get a different job, too, as you still need to survive to get the job you want, which may not end up being the dream job you expected, anyway.

Maybe I'm helping, maybe I'm not. I won't know until you tell me one way or another. I'm fine with that. I didn't intend for this to be a resume or a rant, but it's the only way I can seem to tell this story, even after rereading it 3-4 times.

Good luck and I hope you have better luck than I have had!

  • @EricDuminil I find that it has a lot of the same syntax. Not only with the basic stuff of assigning and creating variables, but also with OOP. PHP is a little different syntax, but the ideas are still very similar. If I asked you what language "var i = 0;" comes from, the only one it couldn't be of the 4 mentioned is PHP. Of course there's lots of methods, libraries, etc that aren't the same, but that's way beyond the general comparison I was trying to make. – computercarguy Mar 23 at 19:39
  • @EricDuminil and this is why developers are often not taken seriously: other devs bash each other over nit-picks that go way beyond the original intent and are tore down by everyone else. Everyone has their favorites and everyone else is wrong about everything unless they believe the same. Sheldon Coopers like you are why I often hate other devs. – computercarguy Mar 23 at 21:34
0

Rails isn't that uncommon in other places, you should be fine if you're willing and able to get remote work, or if you're open to moving.

If you aren't, learning a new technology that does what Ruby on Rails does shouldn't be too difficult. Over all you should be fine. I'd still bring this up with management though. My guess is that they probably don't know that what they're doing is making them a lot harder to work for.

0

First off, I very much agree with @Jay.

My first language was last upgraded 15 years ago, but it also introduced me to OO and SQL. Those principles, with some varied syntax, led me into other languages I still use today. The point is that it’s not necessarily bad if your current language of choice won’t be around or widespread in coming years, but make sure you understand the underlying principles and the connecting points. For Ruby/RoR, that may be to really understand the lifecycle of requests, the HTTP protocol or details of how to configure the web servers.

And yes, as you can, advocate for more mainstream technology.

0

Adding two more points (compared to the other answers):

  1. Hiring managers tend to see your most recent work and discard previous experiences, so your concerns are justified. However, if you bounce around a bit (to other technologies) early in your career, you can prove that you are a generalist and a polyglot; that you are capable to adapting to what is put in front of you. That's a plus

  2. Now, if you work for 5 or 10 years in a single technology, get several promotions and several raises, you are much more likely to get stuck in whatever you've become an expert in. The reason for that is that you are being paid a premium for being a specialist. No one will want to pay that premium salary if you are working in a new technology.

So, as @twyxz said, you get to take control of your control. If you are a noob, getting that first job is very important. It doesn't set your career path in stone. As long as the economy is healthy, it's reasonably easy to find your N+1 job once you have your N job. Getting the first job is more important than worrying about the strategic implications of taking that job. Now that you have that first job, start thinking about strategy.

0

A well-run, forward-thinking company has a plan for meeting its skills requirements, and that plan includes training for specific technologies. That way the company does not rely on its new hires to cope with changes in technology.

My company hires entry-level talent. All they care about is the aptitude for coding. They have a test that measures your ability to see patterns. Many of our new hires are do not have a degree in software development, but in some other field (including one lady who's degree is in chemistry).

HR here don't care what technologies you know, because we have training programs for each (I had to do the C/C++ training program when I first started), and at times we acquire a product from another company (usually when we acquire the company) and the new developers learn whatever technologies are used for it.

As for you, adopt the view that your career is in "software development" and not "ruby on rails development".


Addendum

The first technology I learned was Commodore BASIC. I don't think anyone's been paid for working in that in over twenty-five years.

-2

Yes you do get stuck if you stay with that technology for like 2 years or so. What I would suggest is to get experience in multiple technologies at the start of your career. This way you can get labelled as a general programmer rather than a RoR or a C# person. By the way, what's the problem with RoR? It is in-demand.

One more thing that matters in this context is the nature of the technology. RoR is a web framework so getting skilled at it means you get increase your skills regarding web frameworks - and you may be able to use some of those skills later if you switch to another web framework. For me, I am stuck at working on a specific rule engine which is too specific for a particular client. So for me getting stuck at that rule engine is bad but it might not be that bad for your case.

-3

It doesn't seem like the other answerers understand how bad Ruby and Ruby on Rails can be for your career.

It is a dead, dead, dead, dead end. It can never achieve any performance. All projects running Ruby have been cancelled when they try to move into the real world.

Get out now. Take the few things you may have learned from this failure and build a career on that.

  • 2
    Can you please explain your statements? – Mike Waters Mar 24 at 17:16

protected by Mister Positive Mar 22 at 19:47

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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