Ask HN: What Stack/language/technology should one learn for employment?
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 ] threadIf 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.
They absolutely do.
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.
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.
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.
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.
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.
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.
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).
I am assuming Python is the "Schelling Point" of companies in the US tech centres.
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.
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.
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.
also, check out: https://roadmap.sh/
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.
just my 2c.
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.