I heard about a new programming language, “Go”. It is interesting. Allegedly, it combines the performance of C with the nice features of a high-level language.
Consider a high-level feature like bounds-checked arrays. Superficially, that protects you from errors. However, you’re now adding another range-check to each array access, slowing things down tremendously. Very frequently, I don’t need a bounds-checked array, because it’s a loop or I already checked the input validity.
I haven’t investigated Go yet, so I don’t know if it really is as efficient as advertised. I like its support for multithreaded and multicore programs. I like the way it cleaned up the bad language design problems in C++. I like the way it allows you to directly allocate a block of memory (“slice”), in case you need lower-level access.
My question is “Is it worth learning Go?” My definition of “worth learning” is “I will be able to find a job for the next 5-10 years, by having the keyword ‘Go’ on my resume.”
That’s my #1 problem in looking for a software job. Most employers screen resumes by matching keywords. I’m stuck without a job, because all my experience is now considered obsolete. I know that I can learn a new language quickly, and be better than most people quickly, but that skill is worthless on the buzzword-matching job market.
Another problem is that most employers only value WORK EXPERIENCE in that language. If I do a personal project in Go, that may not be enough to help me find a job working in the language.
When a new language comes out and becomes popular, there is a brief period of time when you can get a job using that language without prior experience in that language. However, I haven’t yet seen a job ad requesting Go experience.
I already decided against investing in Ruby on Rails, node.js, Android, or iPhone. Rails and node.js are more hype-based than merit based. Android and iPhone both have serious flaws. They might/should be replaced in another generation or two, but that hasn’t happened yet. Android is based on Java, which is a huge mistake. (I’ve heard many people swear that JIT-compiled bytecode is as fast as a natively compiled binary, but that hasn’t been my experience actually using it.) The iPhone’s “walled garden” approach is offensive. Both iPhone and Android are locked-down systems where the user is not given root permission.
Just because a language is good, doesn’t mean it’ll be popular. I never understood why anyone would voluntarily use Ruby on Rails or node.js. Java is inferior to C++, but Java is very popular and nobody uses C++ anymore. Even if Go is a good language, there’s no guarantee it will become popular. However, Google is promoting Go, which is a big advantage.
That is the challenge for everyone who writes software. Every few years, all of your experience is considered obsolete. One solution is to move to management, but the pyramidal nature of corporations means it’s impossible for everyone to do that. My skills for understanding requirements, working with legacy code, testing, and debugging should be transferable. Learning a new language is easier than learning those skills, but most employers say my experience is worth $0.
There are lots of things I could specialize in. I could get more front-end experience. (Most of my experience is back-end.) I have a lot of SQL experience, but I haven’t found a database programmer job. I could work with PHP, Drupal, WordPress, Magento, Java, Android, .NET, or lots of other things. How do I choose where to invest my time? They are popular now, but there’s no guarantee they will still be around in 5 years. For example, I used to see a lot of CakePHP ads, but I haven’t seen any in awhile. If I pick the wrong thing, I’ll have the same problem I do now, where all my experience is considered obsolete.
That is my question. Is Go worth learning? By “worth learning”, I mean “able to find a job in several years if I learn Go and get a job working in Go”, and not the technical merits of the language. Even if Go really is a great language, that’s doesn’t guarantee that people will start using it. I haven’t yet seen a job ad requesting Go experience. Will Go be popular, or will it be another Betamax?
According to TIOBE it’s in the 51-100 group in the latest survey, below languages like Forth (41) and Ladder Logic (which we actually use where I work for PLC’s controlling hydraulics, etc.).
I’m more interested in the trend. Will it crack the top 10-20? If it will, I should start learning it now. If it won’t, it would be a waste of time.
Also, TIBOE is based on search engine results, which makes me question the validity. For example, “C” is #1, but it may be picking up searches for “C++” or “C#” or people who use ‘C’ in other contexts.
Yes, TIOBE is limited, but looking at google trends for “go programming language” shows the initial spike from the announcement in 2009, but flat ever since. If it were being used in the industry, people would be searching more and more for details, syntax questions, etc. Barring actual anecdotes or studies, it’s the best info I can find.
I’m curious about it as well, and as I’ve agreed with your assessment of Rails & js I’ll be keeping an eye on what you find.
More importantly, I haven’t seen Go ever mentioned in a job ad.
It’s nice to see that some people agree that Rails and node.js suck, even though there was a big flamewar in the comments for those posts.
Even if Go really is a great language, there’s no guarantee people will use it.
Interesting, a new language with higher level features that runs like c/++. Personally I do most stuff in python myself since run time is rarely a concern for most of it but it’s been a minor issue even so. I somewhat dislike c++’s annoyingly excessive in its requirements to declare everything and its lack of quick import and use methods, and I’ve been annoyed no one has yet developed a programing language that automatically fill in the details missing for higher level languages while compiling into something efficient. While it makes sense that a language with more flexibility would be some less efficient the ratio are horrible. I don’t know a ton about compilers but it seems to me that there needs to more work on automated computer language translation so algorithms are just converted to a near ideal form and any programming language can be used for any project or at least something close. I’ve looked in to how switching language s within a function or program works, and while it’s doable in some instances passing variables from an object in one language to a function in another is not close to automatic and efficient. Unfortunately as you said stuff like this is all mostly irrelevant for since most people who set projects are more about tradition and “common standards” then efficient or effective work.
When I use C++, I don’t use all of the crazy language features. I don’t use multiple inheritance. I don’t use dynamic_cast. I limit my use of templates. (I wrote my own template classes that are faster than the STL.) If you avoid the weird stuff, C++ isn’t that bad of a language.
I don’t know if Go has performance similar to C, but that was the claims I’ve read. I do a lot of number-crunching, so the 100x+ slowdown of higher-level languages is a problem.
If the higher-level languages were 2x or 3x slower, it wouldn’t bother me. When it’s 100x slower, that’s too much.
Some languages easily support calls to other languages, and some don’t.
If your prime concern is something that will get you a job in the next 5-10 years, you probably should stick to Java or C#. Most of the enterprise development is done on top of these 2 platforms (J2EE and .NET) and if any major shift to a new platform is to happen, it’s going to take some years, which leaves you enough time to recycle.
I do think however, that your premise for why to learn a language or a framework within a language’s ecosystem is a bit shallow. There is more to learning a language than its popularity or performance.
1- First of all, performance is relative. It’s not a mandatory requirement for all application domains. Of course there is always an expectation for a reasonable performance, but then again “how much reasonable is” depends on the requirements at hand.
2- Comparing Ruby, Java, Python or C++ to each other is meaningless. Each of these language came into being, and is used now, to solve more or less overlapping sets of problems. You’ll almost never see a web application developed in C++. However you’ll find web application developed in Python, Java and Ruby. Python and Ruby are mostly used for prototyping, rapid development and scripting. That’s why you’ll find them used a lot in startups. Twitter’s back-end for example, was first developed in Ruby, then it was migrated to Java and Scala, once the service gained visibility, user-base, and performance became an issue. This example also tells you, that there is room to using more than one language within the life-cycle of one single product. And you might even use more than one language concurrently to develop different components for the same product.
3- The language shapes to a certain extent, the way you reason about the problems you are trying to solve. And learning a well-designed high-level language will introduce you to a set of constructs, abstractions, patterns that will help you model the problem in a minimalist/concise/efficient way. And at the end of the day, even if you have to develop your solution in a lower level language, you’ll know what constructs and abstractions might make your life easier and use libraries that you wouldn’t know they exist otherwise. And ultimately that’s what makes you a better programmer and one worth hiring. It’s not the language you know or think you know, it’s your proficiency in reasoning about problems in an abstract way and your ability to choose the right tool for the job.
If my goal is to get a job, the only concern appears to be keyword matching on resumes.
The higher-level languages have their pros and cons. My experience with .NET and Java indicated that the performance slowdown can be a LOT more than 2x or 3x, especially for something calculation-intensive or data-intensive. If I were the head programmer for a startup (I doubt that I’ll ever have the opportunity unless I bootstrap my own business), I would use a higher-level language to start and then rewrite the performance-critical parts in lower-level languages.
The other advantage of higher-level languages is the libraries that come packed with the language or addons. For example, it would be difficult to do the equivalent of PHP’s file_get_contents (from a URL) in C/C++. However, I’ve had bad experiences with many packages, when the functionality I wanted didn’t exactly match what the package provided, or I wind up getting stuck due to a bug in the package I’m using. In those cases, I usually wind up having to rewrite it myself.
I haven’t met a single hiring manager who tried to evaluate overall ability, rather than just matching # of years experience in each language. Of course, I may not even make it to that stage of the interview, due to a lack of proper keywords on my resume.
Nobody is interested in a candidate who has a lot of experience, but not in the specific languages the employer is using. I should lie on my resume. Then, I’d have a lot more opportunities.
I’m pretty sure that I could learn any of these newer languages as needed. I’m concerned that, 5 years from now, something else will become popular, and then I’ll be stuck with more useless experience on my resume. Even though Microsoft is heavily pushing .NET now, in a couple of years they may have something new that completely replaces .NET.
There’s 100+ languages and frameworks out there, and every job ad DEMANDS EXPERIENCE IN THAT LANGUAGE AND FRAMEWORK. I don’t just need C# experience; I also need LINQ experience. I don’t just need Java experience; I also need Hibernate experience. Which should I invest time in learning? If I pick the wrong thing, I’m wasting my time. Even if something is popular now, that’s no guarantee it will still be used 5 years from now.
It gets ridiculous after awhile. Some employer demand git experience. I’ve used subversion a lot, but that experience doesn’t count. I specifically need git experience.
I agree that Java and C# are above-average choices. They’re popular, good enough, but nothing special. However, most “senior” level Java and C# jobs require 5+ years of experience IN THOSE LANGUAGES, PLUS WHATEVER ADD-ONS THE EMPLOYER IS USING, and I’ve only used them a little. I’m “underqualified” for a senior programmer job, due to lack of the “correct” experience. I’m “overqualified” for an entry-level job. Therefore, it’s hard for me to find any job at all.
There is a reason why an employer would consider an experience with git as a mandatory requirement if your only experience with source code management tools is subversion. Git is a distributed source code management system and it enable a set of workflows completely different from those enabled by subversion. And some employers might consider the learning curve of a new scm/workflow as an overhead not worth investing for. If you had an experience with mercurial for example, I am sure a manager who knows what he/she’s doing, will consider your application, because an experience with mercurial is transferable to git without much overhead.
Again statements like “The higher-level languages have their pros and cons” should be tied to a specific context. Pros and cons with respect to what exactly ? All is relative to a context.
Also I think you should rethink your approach to the whole notion of a career in software development, if you want to be successful in it. Since the inception of software development, newer languages overtaking older ones, newer design/analysis/programming paradigms overtaking older ones, older languages/paradigms coming back into fashion once more, is the normal trend. What’s happening now, is that cycles are increasingly shortening.
And hoping for one single language or paradigm to be your ticket throughout your career is not realistic and nor is it practical. Software engineering like any other business is about solving problems. To solve problems there are fundamentals you should know about and master. The implementation technology, however is changing all the time. And that change is driven by practical needs. And in the case of software engineering, the needs revolve around 2 major axes:
1- accommodating newer hardware and newer paradigms of using the hardware
2- shortening the gap between how programmers think about software and how a machine understands it.
And I don’t see any of these 2 goals being achieved anytime soon.
Bottom line, if you want to work in software development you have to accept the fact, that a minimum of continuous learning is not a luxury, it’s must. And learning is not only about languages, it’s about also about the fundamentals, about how the industry is changing on different scales, about the innards of software engineering, about the perception end-users have about how a software is used. All of that does have a direct impact, on software engineering.
For a typical team of 5-10 people, the differences between git and subversion are negligible. With git, you can do fancy stuff with branches and merges, but my experience is that it’s always a headache. It’s impossible to write a program that merges differences 100% perfectly, leading to problems.
I did give a context of higher-level languages pros and cons, things that are calculation-intensive and data-intensive. For those, the higher-level languages have much worse performance than I expected.
I don’t object to learning new languages. My complaint is that I already need WORK EXPERIENCE in whatever the employer is using. Everyone says “learning it on your own doesn’t count”. Plus, there are so many things, which should I focus on? Overall skills are what’s most important, but every employer focuses on keyword screening.
I am nearly certain that if I had 5+ years of experience in Java or .NET, I would have no trouble finding a job. It’s all about the keywords. However, 5 years ago, I did not predict that they would be so popular. I should have done what some of my coworkers did, write key systems in .NET with lousy performance so they could pad their resume.
Software isn’t like fashion, where a different style is popular every week. If experienced people are kicked to the curb every 5-10 years, then of course every recycled old trick like continuation-passing-style-callbacks seems hot and exciting. You need to keep churning the popular style to change with the fads? If you have high emotional intelligence and low logical intelligence, you follow the fads. There are some universal truths about software. The skills I learned on older projects are relevant for projects in newer languages, although employers don’t value that experience.
You certainly sound like the clueless hiring managers on most of my interviews. I don’t fit into the modern “software engineering” culture because it’s dominated by twits like you. It’s the “bad money drives out good money” problem. If almost all the leaders in an industry are evil and incompetent, then the best people are driven from the field.
All I am saying is: change is the rule everywhere. You can embrace it and move on with your life, or you can keep whining about how great you are and how people are too dumb to see it .
And by the way I am not a manager. I am a developer . And If I was manager I wouldn’t hire you. Not because you lack experience or talent. But because you lack adaptability and open-mindedness.
You completely missed the point of my post, which is “What should I spend my limited time and resources learning? Go? Something else?” I’ve always learned things as needed, but employers demand I have an exact keyword match for their job.
Why are you so eager to convince me that I’m a loser who deserves to never have another software job?
I know what your post is about , and I answered that question. But I do think the question itself underlies what might be the real problem, of why you’re finding it hard to find a job in the first place. And I am throwing in my 2 cents, hoping that it might be of help. And I am sorry if this turns out to offending for you and I’ll cut it here.
Every employer asks for # years of experience in each language. I haven’t been asked any programming theory questions or algorithms questions. I am aware that learning overall software skills is best if you value ability, but every employer focuses on keywords. The only reason I’m focusing on resume keywords is that’s what the people doing the hiring are looking for.
I’m stuck now, because my resume keywords are considered obsolete. I need to add more current keywords, but which ones?
My skills for understanding requirements, going through legacy code and understanding/debugging, and understanding business logic should be valuable in any language. I have not found any employer who asks values that.
When was the last time you looked for a new job? Have you ever looked at any job boards?
I’ve changed twice over the last 3 years, and I might do it again if the current experience turns out to be unsatisfying for me.
There is also something you should pay attention to. You chose an employer, the same way they chose you. Employers are not all keen on finding an exact match to a check-list. Some of them will take a risk (either by necessity or by intent) to invest on someone if he/she shows the aptitudes and willingness to learn and step outside the trail. I’ll agree with you, those are not easy to find. But you’ll eventually stumble on them. And all you need to do, is being methodical and perseverant, in your job search. I know this is not easy when the practicalities of life, are weighing in, but it’s worth doing.
It also gets harder when you get older. I know it shouldn’t matter, but I see it on his face when the hiring manager sees that I’m older than him. I’m not that old, but age discrimination starts to kick in at 40. People say “Why should we hire you when we can hire a recent college grad, or hire an H1-B visa who has to leave the country if we fire him?” They say “If we’re going to hire someone who isn’t a perfect match and let them learn on the job, why not hire a recent college grad instead of FSK?”
I have made some bad decisions, picking jobs that I knew weren’t that great, but I needed a job. Then, it sticks with you, because you’re only as good as whatever you worked on in your most recent job.
The reason you’re not getting jobs is because you’re not a pleasant person. It would be a nightmare to work with someone like you. You are not an open-minded or flexible person. You are mostly negative. And you are not someone who questions his own assumptions. You think you’re right all the time and know everything, but it’s so clear to anyone who reads your posts how limited you really are.
You are not a mature person, and you need a little more of that “emotional intelligence” you seem to deride. When you become a more well-rounded person, then you will begin to see the folly of your ways and you might get a job.
Stop thinking you know everything and rethink your assumptions.
How much of my blog have you read? According to my piwik logs, you only read my post on “Test Driven Development” and this one.
I am open-minded. I’m also willing to call out a stupid idea as stupid. I’m much more polite at work and on interviews.
Actually, I might be too well-rounded. Most people want someone they can push around, rather than someone who’s able to think for themselves. I don’t find into the box of clueless abusable worker anymore, so that makes it harder.
It’s much easier to think “FSK is having a hard time finding a job because he’s a pathetic loser.” rather than “There is a fundamental structural problem with the job market.”
I don’t understand why a post on “Should I learn Go?” degenerated into a discussion of “FSK can’t find a job because he’s so unqualified.”
Here’s an example from a recent interview.
Startup founder: We hired an outsourcing firm in India to develop version 1.0 of our product. We want to hire someone to put the final finishing touches so we can release.
[FSK mental translation: The Indian outsourcing company gave them a barely functional turd, but they're too clueless to notice.]
Startup founder: Look at our product and tell us what you think.
[FSK finds a bunch of obvious bugs and flaws.]
FSK: I noticed that you’re planning to charge $20/month to subscribers. How many subscribers do you need to cover your expenses and get a decent ROI for invested capital? Is your potential market that large?
Startup founder: (angry) We’re only looking for a code monkey. We don’t want someone negative about our product.
FSK: I’m just doing my due diligence. I don’t want to work for someone who’s going broke in a few months.
Startup founder: You aren’t the right person for us.
Was I being “overly negative”? Or, was I asking reasonable questions, and they got offended because their best answer was “Duh! We don’t know what we’re doing!”? It’s better to avoid working for clueless people, so I don’t mind offending them. Besides, they thought they had an almost-done product, but it was pretty obvious that the Indian firm delivered a POS that met their spec closely enough to get paid.
If someone’s dumb enough to start a software business without a technical co-founder who will implement version 1.0 (MVP) by themselves, then they deserve to fail and get ripped off by a shady outsourcing company. It’s a bad idea to work for someone that clueless. My “rude negative questions” helped me discover that they were clueless about the business-side of their startup as well, entering a market where their revenue could never cover their expenses.
You’re using excuses to justify your failure. I had no degree, was entirely self taught and got in the industry in 6 months. It’s about drive, determination and confidence. How about you stop blaming others for your issues and instead push forward?
There is no buzzword game, like any other industry getting a job is ~85% based on your personality and attitude as well as the people you know. Nobody is going to hire someone they don’t like to be around. I bet you that you come off this way in your interviews.
I don’t have any usable contacts. For most resume submissions, it’s totally based on keyword matching.
I’m comfortable treating idiots like idiots. I don’t want to work for idiots. If you can’t handle a couple of questions about your business plan, then you aren’t going to succeed.
It’s much different for entry level and senior candidates. For senior candidates, employers seem to want a perfect purples squirrel keyword match. Age discrimination is a real problem, especially when you’re older than the interviewer and all the other employees. I’m not that old! I’m still the oldest person there most of the time.
I just read one of your blog posts from 2011, deriding Node.js and complaining about getting a job. Now it’s 2013, and you’re still complaining about not having a job.
And concerning your algorithm that’s slow in JS, maybe your algorithm is just slow? If I write a recursive fibonacci algorithm in Ruby it takes 10 seconds to calculate the 40th number. If I write an iterative fibonacci algorithm in Ruby I can calculate the millionth number in a few seconds.
I’m not eager to work in node.js or Rails, because then I’d have to work with hipsters and jerks like you.
There’s a certain personality type that’s attracted to node.js and Rails, because they evaluate the hype and not the technical merit. It’s best for me to avoid such scum.
That’s a common pattern. People who have a bad attitude accuse me of having a bad attitude.
And sometimes results are more important that technical perfection or merit. I do quite a few scripts in Ruby, why? Because I can accomplish what I want with throwaway scripts that I can program in a few minutes, who cares if I need to wait 5 minutes for them to finish… I’ll get a coffee, chill, and still be well ahead of where I’d be writing it in a statically typed OO language like C++ or Java. If I need to write something that requires serious performance, I’ll use OCaml and get performance closer to C++, with alot less effort. .
You also mentioned finance in several of your posts, why not get another programming job in the finance industry? They pay well, and generally go for ‘safe’ languages like C/C++, .NET, Java, etc…
I’ve used Perl and PHP for short scripts. I’ve never seen a job ad mention OCaml.
The financial industry is still a lousy job market. Most of the C/C++ stuff has moved on to .NET, and I’ve only used .NET a little. Similarly, I’ve only used Java a little. Most .NET or Java jobs require 3-5+ years of experience, but I’ve only used them a little.
The C/C++ jobs usually are in a UNIX/Linux context, and I’ve mostly used C/C++ on Windows. It’s silly, but I don’t get past the keyword screening phrase for C++/Linux jobs, because my experience is C++/Windows.
Yeah, OCaml is quite obscure – great language, great compiler, very productive (and fast!), but also very different from C++/Java/C#… A few large corporations use it internally, but not many.
Why not brush up on your Unix/Linux knowledge? It really isn’t that difficult, all my machines are Linux, even my non-tech literate wife can use our home machines with ease. Going from C++/Windows to C++/Linux should be a fairly easy transition.
I’m already pretty knowledgeable with UNIX/Linux. It’s just that employers want you to already have job experience, and not my ability to learn on my own. The only difference between C++/Windows and C++/Linux would be learning the UNIX-style socket and multithreading libraries (literally, changing one library call for another), plus the lack of some MS-specific classes (mostly CString, but I wrote my own version once).
It makes no difference if I read up on the small differences between C++/UNIX and C++/Windows. It only counts if I already have work experience in that area. That’s what the people doing the keyword filtering say.
Dear FSK ,
I understand you about problems in getting a job – but other people in discussion explain you very well situation and your problem.Need to be flexible and positive .
Regarding your last interview , your answer about your opinion of their product:
“FSK: I noticed that you’re planning to charge $20/month to subscribers. How many subscribers do you need to cover your expenses and get a decent ROI for invested capital? Is your potential market that large?”
You put yourself in another role then is role of position which you arrive to apply. That is a reason why “Startup founder” start to be angry .
Your further comments are negative , for that people , too
I wrote you, in my bad English, because I have similar problem like you, in the past. You must decide what you want to do – if you are clever and have better ideas then that “Startup founder” start YOUR BUSINESS or if you are not sure about it , do everything to get that job with whole respect for people who have a courage to start new project, company or whatever.
I respect anybody who make something or who have a courage to get a risk to open position where I apply for job.
About buzzwords and human resource people – you are totally right what you talk about … but you must skip that step in any way and prove yourself in concrete job.
I wish you lucky in finding a new job (or start your new company !!!)
Some jobs aren’t worth having. Those founders were clueless. They invested in a business that could never generate enough cashflow to cover their expenses. They hired an outsourcing firm for their MVP, which was a barely functional turd. It’s best to avoid working for fools. I don’t mind offending them.
At a startup, that’s actually a good way to interview the interviewer. If they don’t understand the market they’re entering, that’s a good indication they’re clueless about that (and other things).
Any programming language is worth learning because they are all related in some kind of way, if you know one, you get to learn the others relatively easily. The following are ten free resources that can help you learn programming .
You might just try building a product for a niche industry, and concentrating more on learning about that market, than a new language. In the end it doen’t matter what language its written in. The front end is very important, its what people see, so biting the bullet and learning how to make things look not jus good, but glitzy. Personally I think if you look into things like real estate, or retail, understand how these niche markets work, and their language, and you also try to get more experience in platforms like WordPress and Drupal.
@FSK. I read your post, and it all rang true to me. For myself, I can only work with something that I like. I like Go. There is virtually nothing that I dislike about Go. However, it is my criteria, and I am still looking at other languages. Rust may be OK, but I’ve only had a cursory look. Personally, I could never work with something that didn’t perform well – at least as good as Java I guess would be my benchmark.
Your requirement however is to find a job, not to like a language, although preferably both. You appear to know what is required, and what “they” look for. I suggest that you find a popular language that you like and push to find a job using that language after spending some time learning it. Your past experience must count for something. When you get that job, keep watching what is happening and learn the next great language – if you can pick it.
The world has changed a lot, and programming is probably the most competitive field on the planet. Unfortunately, a lot of the people choosing who fills the available programming positions probably think of themselves as superior, but are probably of far lower intelligence. They appear (to me) to be like the people who years ago would choose IBM (safe). They probably choose people who will “fit in” rather than people who are very competent. Quite often, if one “fits in”, they don’t need to be competent. The workplace has become more of a social gathering.
Of course, if you go to a relative startup, you’ll probably have to work your butt off, get little thanks, and be sacked if they think they have found someone better.
Actually, right now, I’m working at a startup part-time (no options, but decent hourly rate). I don’t mind not getting any equity. Based on what I see, I’d short their stock if I could.
If are brilliant programmer then you will find job in any language including COBOL.but if are average programmer looking for 9-5 job best bet are either jee stack(java,ejb,jsf etc) or .net stack. Learn some database stuff as well.You can always find job in big corporations with good jee or .net skills.
It doesnt hurt learning new language.go is good language so learn it.
Unfortunately, most jobs today require experience in a specific language.
not sure how much php jobs are available but there are tons of jobs for enterprise java or .net. So pick up one of those technologies
Here’s the shocker, the majority of developers in San Francisco/Silicon Valley are versed in just as many languages if not more. Competition is rough out here and committing to any language because one deems it the holy grail of all languages is career suicide.
I understand everyone has their preferences in coding style, but looking for a job is similar to going on dates. If you’re picky with every person you come across, you’re seriously limiting your experience find the perfect soulmate!
Hey man, I do not know if Go is worth learning. But if you like it, why not.
I have to tell you that I agree with you. I wanted to learn C++, game programming, advanced stuff etc, but eventually, that pays similar like what I m doing now, and those are some stupid ASP.NET applications that have x layers and that are client-complicated and also very slow.
If I would have those luxury to not have to work, I would learn C++ for sure, and I would be doing some interesting things. Unfortunately, this is not possible for me…
If I was you, I would go for game engine programming – that is something where you would not be asked for ‘keywords’. I can imagine look on their faces when you tell them that you can write stuff that is faster than STL.
I’ve been putting some effort into Unity lately, to try and get into indie game development.
The problem with game development is that, as an employee, it pays less than regular CRUD apps and has worse working conditions. The only way game development would be viable for me is if I can get my own projects started.