34

I'm planning on moving to NY in 6-12 months tops, so I'm forced to find a new job. When I'm planing to start my life in another city it's also probably a good time to think about career changes.

I've found a lot of different opinions about PHP vs .Net vs Java and this is not the topic here. I don't want to start a new fight about which language is better. Knowing a programming language is not the most important thing for being a software developer. To be a really good developer you need to know OOP, design patterns, testing... and a language is just a tool to make things happen.

So back to my question. I have mixed experience in IT - 1 year as an IT support guy (Windows administration and support), around 2 years of experience in embedded programming (VB.Net 2005) and for the last 2 years I'm working with PHP/MySQL. I have worked with Magento web shop, assisted in some projects in Symfony, modified few Drupal sites.

My main concerns are the following:

  1. Do I continue to improve my skills in PHP e.g. to start learning some major PHP framework like Zend, Symfony maybe get some PHP certification.
  2. Or do I start learning .NET or Java. I'm more familiar to .NET so I'll probably choose it if choice falls between .NET and Java ( or you could convince me to choose Java :).

Career-wise, I don't know what is the best choice. Learning a new framework and language is more time consuming then improving my existing skills in PHP. But with .NET you have a lot of possibilities (Windows 7 Phone development, Silverlight, WPF) and possibly bigger chances to find better jobs.

PHP jobs are less well payed then .NET, at least, according to my research (correct me if I'm wrong). But if I start now with .NET I'm just a beginner and my salary will be low. I need at least 2+ years of experience in some language to even try to find some job that is paying higher than $50-60k in NY. My main goal in the next 2-3 years is to try to find a job in the $60-80k category. Don't get me wrong, I'm not just chasing money, but money is an important factor when you're trying to start a family.

I'm 27 years old and I feel that there isn't a lot of room for wrong decisions regarding my career, so any advice will be very welcome.

Update

Thank you all for spending time to help me with my problem. All of the answers and comments have been very helpful. I have decided to stick with PHP but also to learn C# and Silverlight 4. We'll see where the life will take me.

Eliot Ball
  • 893
  • 5
  • 10
Christian P
  • 1,954
  • 2
  • 19
  • 24

13 Answers13

118

What on earth does the choice of programming language have anything to do with your career?

This question is like asking, "I have two choices for a place to work. Should I work at the one where the boss has a norwegian accent, or the one where the boss has a spanish accent?"

There are much more important career considerations.

  1. Startup or established company?
  2. Product company or company where IT is a support function?
  3. Will you be learning new things or rehashing the old?
  4. 9 to 5 or "work any 80 hours you want?"
  5. Nice co-workers or mean co-workers?
  6. Smart co-workers or stupid co-workers?
  7. Suit and tie or t-shirt?

This list could go on for hours. The choice of a programming language is just about as relevant to a programmer's career as the choice of whether to comb your hair to the left or to the right. It's all software development no matter what programming language dialect you happen to be speaking.

Eric Wilson
  • 12,071
  • 9
  • 50
  • 77
Joel Spolsky
  • 7,074
  • 21
  • 56
  • 49
  • 19
    You have a point. But the type of programming language is in most cases closely tied with the company profile. In my understanding the PHP is mostly used in startup companies and major established companies uses .NET for their development. – Christian P Nov 21 '10 at 15:24
  • 29
    the real answer: spend a few months earning a five digit Stack Overflow reputation, and you'll be getting job offers in the $100K+ range without an interview. – Joel Spolsky Nov 21 '10 at 15:24
  • 5
    Agreed. I've changed about 3 languages now since I first stared college for computer science. Learn the semantics, the syntax will come easily after that and allow you to go where you want to. – Dillie-O Nov 21 '10 at 15:27
  • 37
    @Joel: as much as I love StackOverflow (and being a few weeks away from reaching a five digit reputation just for fun), if I ever get a 100K job offer because of that, I'll buy you a beer :-) – Diego Mijelshon Nov 21 '10 at 15:29
  • 2
    I agree on this one 100% - though I think a shop's language choice can be somewhat *indicative* - if you find a shop which uses an obscure language such as F#, Haskell, etc. they are *likely* to be a nicer place to work I'd say, though that is by no means a guarantee - you still need to consider the vastly more important points Joel mentions. – ljs Nov 21 '10 at 15:30
  • @konrad the difference between PHP and .NET is the difference between Wusthof knives and Henckel knives. [sneaky edit! :)] – Joel Spolsky Nov 21 '10 at 15:34
  • 2
    @diego from reading your answers on Stack Overflow, if you're not a crazy lunatic, I can pretty much guarantee that you could get a $100k+ job in New York – Joel Spolsky Nov 21 '10 at 15:35
  • 25
    For some people, the language has *everything* to do with your career. I'd love to work for lots of big companies, but not at the expense of writing a language that would frustrate me/reduce productivity. I'm not saying I'm only happy writing one language, but there are definitely languages I would not like to code in full-time, and it would be stupid for me to accept a job, for example, with flexitime writing Objective-C over a 9-5 job writing C#. You may not share this opinion, that's fine. But don't assume programmers that do are idiots. Your list of important considerations is *yours*. – Danny Tuppeny Nov 21 '10 at 15:45
  • 1
    Are you saying you think it's easy to find a job programming one language when your experience is in another? Or that there's enough variation within PHP jobs that he shouldn't care? Or something else? – grahamparks Nov 21 '10 at 16:07
  • 7
    That might be true for many languages (I think I just became pretty good in C# in about 6-10 months), but it's definitely __not true for C++__. You can _not_ pick up C++ one the job while doing whatever you're supposed to do for your job in C++. (And if you think you do, then you're likely writing horrible code.) And you can not, not, I repeat: __not__ become a _good_ C++ programmer without several years of _active_ learning. Never hire someone as a C++ programmer who has programmed in C++ for a year or two, except as _junior_ programmer. And many C++ programmers are junior even after 5 years. – sbi Nov 21 '10 at 16:12
  • 1
    @Joel unfortunately, I'd have to move 5300 miles north for that :-) If only I could find a fully telecommuting job for 90k... – Diego Mijelshon Nov 21 '10 at 17:15
  • @Joel: I prefer [Chris Reeve's Sikayo](http://chrisreeve.com/sikayo.htm). – Josh K Nov 21 '10 at 18:06
  • 39
    @Joel. Can I have a 100K job? I have a 5 digit rep and am currently unemployed. – aaronasterling Nov 21 '10 at 18:48
  • 1
    It might not count, but I got a pretty good contract job through StackOverflow Careers, with possibly another one on the way -- and my reputation is only 3 digits. But to make my comment germane, I should add that one job is Python and the other job is PHP. I'm also working on another project that uses C++. I would have missed out on *so* many jobs over the years if I had been hung up on the programming language. – bogeymin Nov 21 '10 at 19:14
  • 1
    +1 for the t-shirt or tie question, Anyway that would be for experienced developers who got the luxury of have that choice. Which most don't. My recommendation if any would be to follow your guts, because you wouldn't be efficient if you do something that you are not comfortable with. – dvhh Nov 21 '10 at 23:25
  • 2
    @sbi I assume you mean Visual C++, as regular C++ is perfectly fine. Coding Visual C++ is like drinking from an open sewer however. – Orbling Nov 22 '10 at 00:14
  • @Danny Tuppence, definitely agree on not wanting to work in certain diabolical languages. I actively stay away from certain high salary jobs, because I would hate having to fight against my development environment. – Orbling Nov 22 '10 at 00:16
  • @Orbling: +1 for "Coding Visual C++ is like drinking from an open sewer". :) – Bobby Tables Nov 22 '10 at 00:23
  • 1
    @Guzica, I take it you know the taste. Or at least have considered it and thought better of it. ;-) – Orbling Nov 22 '10 at 00:24
  • 1
    @Joel $100K in NYC is like $25K in Chattanooga ;-) hey since my rep is 30K are you offering $300K? 8-D – Steven A. Lowe Nov 22 '10 at 02:07
  • 3
    @Joel - `What on earth does the choice...` - it seems obvious, doesn't it. Further more, all 7 of your questions are tightly coupled to language choice, except maybe #5-6. You're much more likely to find a job with a startup (#1, which is intrinsically coupled to #2 and #3) if you learn Ruby or Python than you are if you learn Pascal, Fortran or Java (yea, I did just put those in the same tuple together). I just turned down a +100k/yr job with a startup (I was scared of job security because everyone there was less than 5 months on) that I wouldn't have dreamed of getting, had I chosen PHP. – orokusaki Nov 22 '10 at 02:35
  • @Joel. Since you're so eager to put your money where your mouth is on this one, I should let you know that I am very glad that you decided to hire me. I am however going to have to tax you a $5000 dollar bonus every time I have to miss a Phish show in the line of duty. – aaronasterling Nov 22 '10 at 03:11
  • @Orbling: No, not at all. – sbi Nov 22 '10 at 05:54
  • 1
    @Joel - I have a 5 digit reputation. My job pays well below 100k. 1/4 of that actually. – Luca Matteis Nov 22 '10 at 10:54
  • 1
    @orokusaki I think the point being made is, one should not have a "chosen language", a good programmer is proficient in any major language and can learn any new language to a high standard in days. – Orbling Nov 22 '10 at 12:25
  • @Joel: I retracted my comment because it wasn’t really on topic here. I still disagree with the metaphor but that’s inconsequential to the point you made. – Konrad Rudolph Nov 22 '10 at 13:51
  • 1
    Comparing PHP vs .Net to two great knife makers is a mistake. PHP vs [any language that doesn't abuse the dollar symbol] is more like Miracle Blade vs Wüsthof, respectively. PHP is to programming as the US Government is to governing. Both are expensive wastes of time and manpower. – orokusaki Nov 25 '10 at 04:15
  • I was going to mention that I LOVE this answer. But then I saw that Joel was the one who wrote it, and that would just make me look like a fanboy. Oh, what the heck -- consider me a fanboy :) What we need is a chain of Fog Creeks... – Mark Freedman Dec 21 '10 at 05:14
  • 1
    @Mark, perhaps the term is fogboy then? –  Jan 14 '11 at 15:59
  • @JoelSpolsky the father praising the child :P – Jonathan DS Apr 02 '12 at 12:51
  • @JoelSpolsky - Excellent answer, I've got to say I've come up with the [exact same conclusion over here](http://www.matthewedmondson.info/2012/08/the-importance-of-code.html). Code is literally a tool, nothing else. If you can use a knife you'd have a pretty good idea how a saw works. – billy.bob Aug 30 '12 at 11:46
  • 1
    I agree in theory. In practice...for a typical dev...I'm not sure it works out. I've gone out of my way to try and switch languages/technologies and I just can't get job offers. I started as a C# winForms developer and I managed to transition to Vb.Net (yes, I'm serious). After 5-6 years of C# and Vb.Net winForms development I tried to move into ASP.Net...and nothing. No offers. I went through an anti-MS phase too, and applied for lots of non-.net jobs and nothing came of it. Only companies that were interested in me were...C# winForms. Pay/job is good, but I feel stuck. – Rob P. Mar 05 '13 at 21:18
63

I'm 51 years old and have used at least 15 languages and/or frameworks since I got my first paying gig after graduation in 1987.

Bless you.

I never went into management because I didn't want to, but I know how to program and I know how to keep teams motivated and delivering good code. You need to work on people skills and look for interesting work that stretches you. I've never stopped learning or having fun, but there were times when I was on the road I could have done with stopping - but not coding, travelling.

As long as you can make a living and meet your personal commitments without compromising your principles, as long as you enjoy what you do (a luxury my parents' generation didn't have) just keep on keepin' on.

.Net and Java are generally corporate (because they're expensive to do useful things with, but scale really well), PHP is generally startup, I do Ruby (usually startups that came out of design studios for some reason) for lots of people as an independent. If you stick with PHP learn the OO stuff, because I think it will finally start being the way people do things, even though it is a slightly better reimplementation of what you have with Java and they could have made it much more dynamic. People who do Python and want to travel can end up doing all sorts of interesting scientific and gaming stuff all over the world. Perl is still a runner too and has a similar profile.

Forget the language, pick and industry you like, pick a company managed by human beings, and go have some fun delivering value to people who appreciate it. You won't regret it.

Francis Fish
  • 646
  • 5
  • 2
  • 9
    PHP is very weak on OO. It started off as a template language and it shows. – Benbob Nov 25 '10 at 05:34
  • 5
    @Keyou, doesn't mean you shouldn't push the use of php OO features as it takes the language to another level :) – Jonathan DS Apr 02 '12 at 12:50
  • @Keyo Who told that PHP is weak on OO for your information PHP OO now is very close to Java See PHP5.5 and it keeps improving – Hmmm Aug 14 '13 at 11:12
23

Learn as many languages as you can, preferably at least one from each major area of development.

  • Scripted programming languages (you have PHP already, try Ruby, Python or something else)
  • Compiled to virtual machine languages with rich frameworks: .Net, Mono, Java
  • Compiled to bare-metal: C/C++
  • Functional languages: Lisp, F#, Haskell

Each one of these will teach you something about the fundamentals of software development. Of course, on top of that you'll need to experience different design approaches (OO, functional, data-driven), different team working methods (agile, tdd, compared to more rigid types), different platforms, different deployment mechanisms (native, framework based, web). The list goes on. Language fluency is just one tiny part of the whole.

For all these things, you need to make at least one real product using them to be proficient.

Some people will tell you you need to specialise in one technology (PHP, .Net, Java) and build a career largely around that one to make progress. I don't agree with this at all. I'll take a developer who has been around the block a few times with different platforms and technologies over one that has spent 10 years doing one thing any day of the week. The reason is that technology changes every year, and the developer who is capable of picking up a new tech, reading the API and applying their experience in more general ways than just knowing the library functions off by heart, will be far more productive in the long term. Ok, so that 10-year .Net veteran will be off the starting blocks in .Net faster, but that early lead is lost in about a month. It's irrelevant compared to the wider picture of being experienced in a range of approaches and technologies.

Steve Streeting
  • 361
  • 1
  • 2
  • 3
    I would also add to your list, logic languages (Prolog), mathematical languages (which are a subset of functional as a rule) (Mathematica, R) , prefix/postfix languages (PS, Forth), assembler and hardware-based (for FPGAs and the like). – Orbling Nov 21 '10 at 15:48
  • 8
    I agree... it's fun to learn new languages. But when you're trying to improve your general software development knowledge while learning new PHP framework and an additional language (C#) which you wish to use in the future, learning new languages for fun is not an option or at least not an option without major sacrifices in other parts of your life. – Christian P Nov 21 '10 at 15:55
  • 4
    I agree Christian, this answer is a bit extreme. But perhaps the takeaway from this answer should not be, "Learn a bajillion new languages _right now_ or you can just kiss your dreams goodbye." It should rather be, "Yes, you should try to land a job in a language you're not familiar with, because that's a better career investment in the long-term." Plus it's the best way to really become proficient in a language. – Neil Traft Nov 21 '10 at 17:31
  • You can also count Javascript in the functional category since it's basically LISP with C-style syntax. – Josh Kodroff Nov 21 '10 at 18:24
  • 1
    @Orbling: you're right, the list wasn't complete, I just picked the main 'career' ones to avoid it becoming too daunting a list ;) – Steve Streeting Nov 22 '10 at 10:02
  • 3
    As for extreme - I wasn't suggesting you learn all these languages in a year :) Since the question was in the context of a career, I don't think this is unrealistic at all. We all have to take responsibility for our own professional development, and even if you do one hobby project in a year using a tech you haven't used before, it'll help you a great deal. Open source is a great way to do this too, because it means you can be involved in a real project without starting from scratch, and get help from peers in the community. – Steve Streeting Nov 22 '10 at 10:06
7

I would suggest looking for a PHP job because that is what you do best.

I would also suggest you start educating yourself in the new technologies you want to learn so you can eventually start looking for jobs using those, but don't do it on a deadline so short because you will find that these things are huge and employers expect you to know enough of these behemoths to be productive. That requires time and practice. Do not underestimate the amount of time and amount of practice you will have to do.

To give you an estimate of what "I can program in Java" potential employee should be capable of, you can have a look at the Sun Java Tutorial. I would expect you to be familiar with at least half the concepts listed, where familiar means being able to use it in a program written by you, and use it correctly. I would expect it to take longer than 6 months spare time studying to reach that level.

  • 7
    6 months? really? The kind of programmers I hire learn the language and platform in their first week on the job, which is why I NEVER care what language somebody knows when they apply for a job at Stack Overflow or Fog Creek. – Joel Spolsky Nov 21 '10 at 15:26
  • 4
    @Joel, please note I am talking about picking up stuff in your _spare time_. Alone, without a mentor around. This might not be as efficient a way to learn new stuff as being physically in your offices with you and your employees around... Perhaps you will want to hire christian.p to prove me wrong? –  Nov 21 '10 at 15:31
  • 3
    @Joel When your app is written in your own custom created language, you don't have much choice, eh! ;-) – Darrel Miller Nov 21 '10 at 15:43
  • @Joel Entirely agree, I interview candidates for software engineering jobs and always use made up, or obscure languages - just giving them a BNF or something to go by, and that's on the spot in an exam! – Orbling Nov 21 '10 at 15:49
  • 3
    @Orbling. Isn't that a bit easy on them? Why not something like "please find and fix the bug in this BrainF*ck production code! Me and my 5 colleagues will watch you and time how long you take"? –  Nov 21 '10 at 20:02
  • 5
    @Joel - I suspect that when Christian is looking for a new job in a new city that he will find that not all employers are as language-agnostic as you are at Stack Overflow / Fog Creek. Indeed I would hazard a guess that far from not caring what languages he knows, 95%+ will toss his résumé in the bin instantly if it doesn't match the correct language keywords. – Carson63000 Nov 21 '10 at 22:42
  • @Thorbjørn I have actually given BrainF*ck questions before now. LOL - Though if I'm feeling nice, it'll be in Logo. ;-) – Orbling Nov 22 '10 at 00:11
  • @Carson63000 Sadly, you are entirely correct, most employers would do that. +1 -- I've always however considered this a good thing, as they are the sort of employers you probably would not want to work for. – Orbling Nov 22 '10 at 00:21
  • @Orbling, what is this "nice" thing you are talking about? –  Nov 22 '10 at 07:57
  • @Thorbjørn Heard about it from psychologist "friends" when younger, thought I might try it out occasionally. ;-) – Orbling Nov 22 '10 at 12:26
  • 1
    @Joel. Learning in a week and being good with it is a different thing ? How many Java Programmers become very good with pointers in a week ? How many C programmers become very good with OOPS in a week ? – Geek Nov 22 '10 at 19:25
  • 1
    @Joel, care to give your views on the many comments on your initial commentary? –  Jan 14 '11 at 15:35
6

I hate to seem like a troll, but the language you should learn is English. There are a bunch of errors in your post and that just looks sloppy. If I were hiring and that was your resume, I wouldn't care what programming languages you said you knew, I would assume that your sloppiness with the English language would carry over to your programming work.

It didn't appear that you are coming at English as a second language (I could, of course, be wrong) but there were enough grammatical and spelling errors to give most hiring managers pause. Since they are only going to see your written word at first, you need to get that fixed.

  • 6
    It's off topic, but thanks for the heads up. English is in fact my second language. Believe it or not (or maybe it's obvious to you) but I learned how to speak/talk English all by myself (without language courses). – Christian P Nov 21 '10 at 17:09
  • 3
    Since it is your second language then you are doing fine. Obviously have someone check your resume just to be sure, but I know that if I had to do my comments in French, say, it wouldn't be as lucid and well phrased as yours has been in English. Wasn't being snarky, just trying to be helpful. There are any number of Americans who don't bother with their spelling and grammar and it hurts them in the market. – Doug Johnson-Cookloose Nov 21 '10 at 20:02
  • 1
    I know my English needs improvements and I'm doing my best to improve it. But I'm thankful for your comments because I know when I'm applying for a job it's the overall impression that matters. So if my writing is sloppy, it's gonna hurt my overall chances to get a job. – Christian P Nov 21 '10 at 20:32
  • 1
    Once upon a time, if you applied for a job through a recruiter, they would take the time to polish your résumé and make sure the spelling, grammar and overall style were correct. But I've recently been interviewing some candidates, and it seems that recruiters don't bother anymore, they just stick their logo on the top right corner and send the résumé on. So I'd recommend getting a friend you trust to go over your résumé and application letters/emails. – Carson63000 Nov 21 '10 at 22:45
  • 1
    @Carson63000 My experience of hiring through recruiters is that when they try to ‘help’ they often make a complete mess of candidates’ résumés. As a result, I had to give candidates with sloppy CVs the benefit of the doubt. Given the choice I’d have cut idiotic recruiters out of the equation altogether. – Daniel Cassidy May 31 '11 at 20:19
5

The long term answer to this question is basically what our esteemed host (Joel Spolsky) and Steve Streeting said. Programming at it's core is not about languages it is about using the computer to solve problems, and is a craft that must be learned and worked and thought about over time. Knowing how to code does not make one a programmer.

But you asked a pragmatic and time-sensitive topic .. what should you do NOW?

I suggest that you dig into PHP until the move. Dig into it, hard, really hard, 20 hours a week outside of work hard. With PHP it is pretty easy .. get a hosting account and a domain and start building apps. With focused effort, 6 months is an eternity. Over that time, get to be really good at it. This will help you find a good job once in New York, and will very likely make you a better programmer to boot.

BTW .. if you didn't know already, there is an IT employment site in the StackExchange family.

THEN, when the life transition has settled down a bit, begin following Mr. Streeting's playbook and educating yourself about the craft of programming rather than the trade of coding. Use some time outside of work to read and do things on other platforms and with other tools.

tomjedrz
  • 261
  • 1
  • 7
1

I disagree with most comments listed on this board.

Apart from learning software engineering principles and theory, the language you choose to master is a career choice. That's why there's Java programmers and PHP programmers. PHP programmers are probably not going to be working for NASA and Java programmers are probably not going to be working for a web shop.

If you want a job in corporate America, you're better off going the Java/.Net. Good income in you can get in but be prepared to donate your life to them (time wise).

If you want to be an independent freelancer, and live in the fast lane with web technology you're better off with PHP. A lot of work here but the pay varies greatly and being independent is work itself with every Tom, Dick and Harry with an idea trying to hire you for pennies.

There's some overlap with PHP and Java but only seen in Corporate jobs (Java REST Services with PHP front-end) however you will not find web shops or independent freelance work anywhere near Java.

Both require a lot of time and dedication if you want be useful in any given situation.

To be a competent and sought after PHP developer you need a bag full of skill sets. Chances are you'll be expected to know CSS, HTML4/5, and most definitely Javascript DOM/Ajax/Jquery plus at least a viable framework such as Zend (corporate America's taster's choice), Codeignitor, cakePHP, etc.. and then you'll need to know the "big three" CMS's: Drupal, Wordpress and Magento. Get these skill sets under your belt and you'll be a PHP specialist with the ability to land work anywhere you go. As you can tell, taking all this in is a devotion to a language and it's tools 'cause learning Perl isn't going to help you be an expert Drupal or Zend developer.

The same goes for Java: OOP, J2EE, REST/SOAP, Spring/Struts, etc.. and it's fleet of other tools that take years to masters.

Has anyone here tried coding Java for a year and then gone back to PHP (or any scripting language). It's difficult. It feels awkward.

I work for a fortune 500 company and Java developers would not be able to do what PHP developers do and PHP developers would not be able to do what Java developers do. But they both do well financially 'cause they're specialists in their field, their language of choice and the spew of tools that come with it.

coder3
  • 161
  • 1
  • 6
1

I think the primary point is, eventually a software engineer should get to the state where the language is largely immaterial to the task at hand, except in its limitations.

Whether you know a language or not should not make a difference, providing you have a manual, only to speed for the first day or so while you find your bearings.

Having said that, proprietary languages tend to have less documentation and examples spread around the web, and thus are harder to become accustomed to and pose a problem if you wish to take your work home with you.

Orbling
  • 5,696
  • 1
  • 32
  • 38
  • 3
    The language is rarely hard. Learning the ecosystem and best practices my take _quite_ a while... –  Nov 21 '10 at 16:00
  • @Thorbjørn Very true, it can take some time to acquire best practice within a language. Though that very much depends how you learn it, some languages are a lot harder than others to find information on. – Orbling Nov 22 '10 at 00:09
1

My advice is to find a job doing what you are interested in, and enjoy doing. If you enjoy PHP, why not continue to develop your PHP skills. It is much easier to learn and develop skills doing something that you are interested in.

Have you ever looked at .NET or Java before? If not, that might suggest that you aren't interested in those languages, but perhaps you could spend a week or so looking at each and see for yourself whether you are interested in either.

cspolton
  • 171
  • 1
  • 1
  • 4
  • I'm familiar with Silverlight 4 and C# (also I have 2 years in VB.NET 2005), that's the main reason I'm thinking about switching. – Christian P Nov 21 '10 at 16:00
1

I have to agree with Joel. But his answer goes beyond technical skills and preferences.

In my experience it's usualy your job requirements that point you towards a specific technology or programming language, not what you would like to use; unless its a startup that has not defined what they are going to use yet. And no one can guarantee that you will find a job/company utilising exactly what you are looking for.

So the real question is: are you good in learing new stuff? can you address a problem and solve it in a timely manner regardless programming language?

A good programmer should be well aware of software construction and software engineering concepts. Your question makes me believe that you haven't invested enough time towards learning those, which probably makes you uncertain of your skills and what your actual potentials are. And honestly, if you haven't done that its about time you do, because without those you will probably not go far.

There is another thing that most of us programmers tend not to give any attention to before we get older than 30: Programming skills is only half of the skills that make a good programmer. Are you a good team player? Are you willing to pass knowledge to coworkers as willingly as you are (or should be) receiving knowledge from others? People skills are higlhy underestimated by many of us, while they are actually very important.

mspir
  • 349
  • 1
  • 5
1

Short term; I don't know what the hiring practices are in the US, but considering you are moving in 6~12 months I would, for the time being, consider sticking with PHP since you have two years of experience with it.

My experience here (in the Netherlands) is that companies tend to have a very short term focus on technologies and framework experience. The language is really not -it-, even if they are asking "3 years of C# experience" they mean to say "3 years experience with the framework/class libraries and tools you'd be using with C#".

(Otherwise, why they want to hire anyone needing 3 years to learn C# syntax and language features is beyond me. It sounds like someone I wouldn't want to hire.)

Learning new languages; static, dynamic, functional, is of great value when it comes to broadening your perspectives. However learning the relevant class libraries and way of doing things in that language will require experience.

I'd recommend coming to a decision picking one technology stack and learning it deeply. Use the other environments for inspiration.

Of course personal preference comes into play also. For instance, while there is plenty of market for it, I would never ever accept a PHP job :-P I choose a stack and I job hunt based on that.

As for making a career, long term, I think you should look beyond coding (in the end it's all about learning and being able to read and/or skim documentation) and the technology of the day and look more into soft skills and such. Technologies come and go rather quickly. Of course there is a lot to learn when it comes to good practices and more general know-how, unfortunately they are rarely looked for on the job market in my experience.

Joppe
  • 4,548
  • 17
  • 25
1

I think that often people mix programming languages and frameworks/technology stacks. It's relatively easy to learn a new language, but's much more difficult with big technologies. I agree with some answers that what is most important is your overall programming/problem solving experience, but I don't believe that anyone can UNDERSTAND a completely new technology in 1 week.

Sure, a large portion of developers have never read a single technical book and don't understood the very building blocks of technologies, they are using. They just hack their way out of the problems and are very "successful". I have myself started career in PHP without even understanding how HTTP works at first. But some employers, which I respect most, are expecting a deep understanding of "how things work", simply because this tends to increase chances of success of their projects.

The very least you need to do to gain this understanding is to read couple of GOOD books with enough time to prototype solutions to common problems in a new unfamiliar development environment. Is it possible to do in a week? I would love to work with people who are capable of this, but I don't hope to see such people any time soon.

Some employers actually are ready to give you enough time to gain this understanding, respecting your overall deep technical experience in other technology stacks (if you have one), but unfortunately most are not.

Also, when you are changing technologies, what is most important is your personality - how humble and curious person you are to spend enough time to understand how things work and how things are done in your new area.

So to sum up, my answer would be the following. Pick a technology, which has enough potential and which (most importantly) will make you happy in your job. Specialize in this technology, the job market will value this and few years needed to get your target salary will be worth it. But never be overzealous, spend some time with other technologies, it will make you a much better PROFESSIONAL overall.

Konstantin
  • 111
  • 2
0

Language and platform are not that important. Learn solid people and comp sci skills. A lot of people have said this but haven't given specifics so let me do that. Here are some things to learn

  • algorithms and data structures.
  • concurrency
  • machine learning
  • systems level programming
  • information retrieval and search engines
jshen
  • 101
  • 1