Ask HN: What Stack/language/technology should one learn for employment?

32 points by max_ ↗ HN
I was wondering what stack/language/technologies one should learn if they are optimising for employment.

By optimizing I am not referring to a high salary I mean learning at stack/technology/language that makes its easy to be employed i.e jobs are readily available.

47 comments

[ 4.5 ms ] story [ 89.8 ms ] thread
I don't have any data to back this up, but I'm a .Net/C# dev and see tons of job postings all the time. I have yet to have trouble finding a job, even when I was first starting out.
In some areas, like Houston, .NET definitely dominates.
Probably: Javascript/Typescript, Nodejs/Express, React, Postgres
That probably depends on the area where you want to live in. Check for job postings in the area you consider, see what language is used the most
If you want to earn decently - you can't go wrong with wither C#/.NET or Java. Lots of enterprise level jobs out there for those platforms.

If you want to enjoy your life (as I do), but maybe not make as much - I can't recommend Javascript / NodeJS / Vue (or React) more.

C# and .NET are quite enjoyable to use IMO, certainly more so than JS
Are you suggesting Frontend is more enjoyable in general? I think it depends from person to person. As a Backend Dev/SRE, I'm currently learning React and have to admit that it's a very refreshing and rewarding experience, but I'm not sure if I would like that setup in a real job - that would probably mean more "fighting" with UX designers, stakeholders etc. compared to backend job.
JavaScript and React - it's the most popular language, and there are a lot of entry level jobs available because people need to make a lot of different websites that aren't complicated enough to require a senior engineer.
React.js and Next.js
With army’s of frontend developers being spat out by coding camps, I would think twice before becoming a frontend developer today. Its highly saturated, highly competitive and the ecosystem is terrible
Nailed it. Bootcamps are a scourge to the industry.
Eh, what I see is practically all Fortune 500 co's and every cutting edge startup using React / Svelte, while the majority of existing software engineers dig their feet into HTML templates in PHP / Rails / Python / Java poorly integrated with some ad-hoc javascript. Right now, if you need to create new products, you're going to ship them fast in React / Next.js rather than fiddling with your backend infra, especially with how managed the backend is getting with serverless and managed DB's.
Companies don’t just hire people off the street. You need to know someone working in the industry who can get you a job and you should learn whatever stack they work with.
> Companies don’t just hire people off the street.

They absolutely do.

I’d normally say Javascript, but that world seems to be a little over saturated with people, which causes contention for available jobs. If you go the C#/.NET route (or even Java) you’ll be set up for common “enterprise” jobs that appear all over the place in non-tech companies (e.g., insurance companies, finance, manufacturing, or anyplace that uses computers to the degree where they roll some of their own code).

I’d also learn a bit about databases: SQL is a skill I’m happy I picked up a few decades ago since it has come up repeatedly over my career, even though the bulk of my tech work has been non-database stuff.

Seconded for SQL. Don't sell yourself as a SQL person unless that's what you love and want to work on data-heavy systems. For everyone else, being fluent in at least one dialect of SQL and being comfortable jumping between dialects will do wonders for you. I spend far less than 10% of my time on SQL but the time that I do spend on it is incredibly valuable
I recommend trying to do some analytical exercises in SQL when you learn it. Often times we interview people that "know" SQL, which basically means they know how to do left joins but don't know the difference between left, inner, right, cross, full (or that joins other than left exist).

Get familiar with window functions; I coincidently had a previous team member who moved to a different internal team message me today thanking me I thought him window functions as they're giving him an edge outside data science (my team).

Know that NULL can produce three logical values: true, false, unknown, and how that impacts IN vs EXISTS when used in query predicates.

Have some type of understanding of how indexing, partitioning, etc. work in your chosen db.

Also please understanding aliasing. I can't tell you how many candidates have failed the most trivial warm up query question we've given which requires them to join twice on the same table.

>Also please understanding aliasing.

With ISAM files (dbase, clipper, etc files), one simply duplicated the file definition in code and pointed it to the same file on disk. Them were the days.

I'd also add, be aware of the time it takes to build and deliver views and stored procedures result sets, some of them kill the server, but at least sql servers only deliver the results over the network, unlike ISAM files which copied the entire set of files down to the workstation in order to then build the "view". Talk about congest the network.

TO the OP, I'd pick something that interests you and then look at what languages are being used in that domain.

Whilst its common to hear about the pythons, dotnet, java languages, in practice, there are many languages out there many being used in niche applications. Not all recruitment agencies deal with niche programming languages, so recruitment can take place in other ways, like via internet forums and user groups.

For example, one of the global companies that makes credit and debit cards uses this parser to control its manufacturing process. https://en.wikipedia.org/wiki/GOLD_(parser)

They have different machines for making the card, programming the chip, printing and embossing, and all these different machines use different programming languages to control them and there are sometimes different machines in different parts of the world to contend with, because the banks like to get your replacement card out to you overnight anywhere or nearly anywhere in the world.

If you look on the back of your debit/credit card, you can usually find who manufactured your card.

So if you want to go mainstream, life might not be as rewarding. If worst comes to the worst, get a job working for security services, they like to train people up and you'll get an insight into how they think and operate, but you wont be able to tell anyone, its a contract for life which you might not want.

Enterprise has already been answered but if you want to ensure you can always earn and live wherever you want, then LAMP stack is for you. Majority (or at least a plurality) of the internet runs on it and there is always a shit ton of maintenance work needed. You could freelance from a cabin in the mountains if you want and never run out of work.
I suggest pick something that you like and can spend longer hours with. It is not only the language but infrastructure these days. If you learn AWS you will not have problems of getting the job but would you be interested to learn a lot of dev ops related things?

Do you like interfaces and pixels? Web (js/css/html) or smartphone native(iOS/ Android app dev)?

You don’t care about looks but do care about works? Backend dev with Python/node js/other…

Do you enjoy creating new things or integrating things?

At some point one way or another you are going to try it all and flow to the place you like/paid more.

Optimize for 5-10 years rather than 1.

Python hands-down. It's easy to whiteboard. Academia uses it. ML is overwhelmingly Python. Every interview you ever do will be in Python, even if you're not coding in it for your day job.

As far as stack, get great at AWS. Learn the ins and outs of as many services as you can. Learn IaC like terraform. IMHO Someone who knows AWS + can write glue code + decent at python is probably the most widely applicable to the largest variety of jobs in tech.

> Every interview you ever do will be in Python

This must be specific to your area of expertise. I've been in the industry over a decade, and never have I conducted or been a candidate in an interview where Python was used.

On the contrary, I interviewed for multiple companies for C++ roles in Python, so your mileage may vary.
Did you mention Python experience on your resume? I already find whitespace sensitivity off-putting when I have support from my text editor or IDE. I'd be even more annoyed if forced to use it on a whiteboard.
On the contrary, whitespace indentation is best on the whiteboard, and is probably what inspired Python in the first place (whiteboarding in education + pseudocode). It removes the main issues with whitespace indentation (spaces being coalesced in things like HTML and parser that's overly picky about the exact number of spaces in a block). As long as you can vaguely line up a block vertically, anyone will be able to figure out what you mean on the whiteboard.
This is actually a pretty persuasive argument to me. My frustration comes from using it to satisfy a machine. Humans are much more flexible.
A bit hyperbolic. As anecdata: Every interview I have every done has not been in Python. 20 yoe. 20 lines of python written :-)
What were the interviews in instead?

As long as we're contributing anecdata, 9 yoe on the hiring side, almost all interviews have been in Python, especially for interns. What's interesting is the company where I was at for the majority of, their main stack was Ruby, and they respected new employees' intelligence enough to assume they could just pick that up after being hired.

If you're not pedantic about the syntax, Python, and it's libraries were great for interviews. I did a handful of them in Golang, using the same question, but there was always a time crunch because Golang required more boilerplate (for the particulars of the question).

Usually the interviewees preferred language. If not, then the language mainly used by the company: Java or C#.

I am assuming Python is the "Schelling Point" of companies in the US tech centres.

What would you say most interviewees preferred?

To be clear, my anecdata is that Python is the language of choice for candidates for the kinds of roles we were hiring for - I can easily imagine that a game studio would have C++ and Lua overrepresented.

Since you can really only have one job at a time and maybe like 10 total jobs over your whole career, optimizing for the biggest pool of possible jobs doesn't necessarily make sense. Obviously don't pick something esoteric, but if you have years of experience in any of the popular languages (Java, C#, Python, Ruby, PHP, JavaScript, etc.) there will be plenty of jobs for you. Optimize for whichever language you don't mind working in for years at a time.
java with a bit of design patterns and some classic RDBMS knowledge. Most jobs out there are about enterprise.

You won't enjoy it and the uncle Bobs of this world are insufferable but OTOH there's so many places to work that you can iterate till you find something that suits you. You can coast with that skillset till your retirement. Not to mention consulting after while.

3 key things to cover the widest range of job.

a) write a api service in language of your choice with a complex enough backend (like being able to store and pull data from database, call other apis)

b) be able to deploy that service in AWS on some infra (EC2/ECS/Lambda) and understand what each one is and benefits/drawbacks

c) have some semblance of being able to set up a deployment pipeline with integration tests, e.t.c

For language choice, future is going to move more and more towards Python. Release 3.11 made great strides towards optimization for speed, and the future holds promise as ML is going to get applied to optimize the code even further and bring it closer to native performance. Its also the language to use for hiring interviews as its much faster and easier to write code in.

For web dev, you need to be able to create a full featured front end for a web app, with things like tests to ensure functionality, with modern frameworks like Vue or React.

Dart and Flutter knowledge and experience is going to be plus going forward.

Being conversant in modern DevOps tools and having some Python experience was enough to get me to interviews last time I was on the job market. AWS skills would probably rank next, followed by "general Linux sysadmin" - this last area is where I notice the biggest gaps, particularly in colleagues who have spent their whole careers working in ML and rely too much on notebooks set up by someone else.
My stack is as follows: Python, Flask, JavaScript, HTML, CSS, Jinja2 ans JSON. Each language in this stack are combined together to create responsive, modern, web applications that run on almost any device. Most companies want you to know how to create back end, with a database and front end, the full stack.
The binary language of moisture vaporators.
simple logic would tell you to use a search engine for the query of "most popular X" where X = programming languages or programming frameworks

also, check out: https://roadmap.sh/

Your question implies that knowing a specific stack/language is the key to employment opportunity. From experience, I don't think that's the case.

For web stuff, I'd suggest learning JavaScript if you're interested front end or something like Golang if you like back end. Those will expose you to the necessary concepts you need to perform in those roles without bogging you down too much in cruft. You can safely apply to roles for most languages if you can demonstrate your knowledge sufficiently.

Terraform, Helm (or just plain Kubernetes config), Ansible, other devops technologies.
I don't like java - but I have to appreciate Java has the strongest job market. everyone uses java. the problem now will be separating yourself from people that claim to know java and people that know java. the people that know java are a few i.e can do useful things with it at acceptable quality.

just my 2c.

Logically speaking, most jobs are web-dev not desktop/mobile. For web-dev learn HTML, CSS, JS, Typescript. Know the basics of SSL, HTTP, DNS, CDNs etc. Know some basics of cloud computing - get some servers spun up in AWS and something deployed for example.

React is a safe bet to learn.

Add a back end lang of your choice to that. You can determine the one for your city/location by looking at job posts. Could be Ruby, C#, Java, Python, NodeJS, Go or something else.

All said, I wouldn't optimize only for getting a job. You only need one job, so you can afford to pick a less mainstream stack if it makes you happier, or those jobs pay more but are rarer.

How about COBOL / DB2 / zOS? A lot of financial institutions use this and will for the foreseeable future. They cannot get enough COBOL devs.
The one that you’re most comfortable and happy with.