Ask HN: Should I move away from JavaScript based skillset because of saturation?
I have noticed that there is a lot of competition for frontend/full-stack jobs where the tech stack being used is JS based (JavaScript/TypeScript, Next.js, React, etc...).
In your opinion would developing a skillset in another programming languages like Java, C#, Golang or even going deeply on SQL would increase the likelihood of finding a job because of less saturation.
A related question : If you have experience working in a specific tech stack (programming language + specific frameworks) but want to target jobs involving another tech stack, how would you go about demonstrating competence on this new skillset in your CV?
Will adding personal projects with a Github repo do the trick?
EDIT : My question can be boiled down to if "is it even worth it to stay in JS anymore" and not "how do i become a well-rounded individual" like it has been understood by some commenters.
44 comments
[ 3.9 ms ] story [ 108 ms ] threadim in a multinational company in a billion dollar industry yet our frontend code is reactjs without typescript, eslint misconfigured, stylelint not used, bad practices on use of react hooks, and many more.
there are teams and devs that are out of touch on maximizing what tools are available out there. im not even saying they are incompetent, what i mean is most are just unable to keep up.
Considering the code I wrote for work is in private repos, would you have to create an open source project to demonstrate this to future employers?
In interviews you'll be asked about them. If you're not mention them or refer to them in your answers to other questions! Discuss your approach to the design of those projects, considerations, performance tradeoffs, how you approached testing, how deployments were handled etc.
Mention the tools you used that made a big difference - maybe swapping compilers led to faster build times and smaller bundles. Swapping test runners led to improved test times. Maybe you tried to swap test runners and that increased test times and so you went back to the previous one. Maybe you led an effort to automate deployments!
Discussing migrations from old patterns to newer ones demonstrates that you know what good tools are available and you know how to leverage them.
Skill can be taught
having depth in technical skill is maxing out one stat
but there are more stats
- how you communicate, persuade, negotiate, and sell ideas
- how you work with the team, how you navigate office politics
- how you meet your kpi's, how relative your efforts are in capturing business value for the company
sometimes it's not our technical skills that determine our satisfaction and dissatisfaction.
personally i enjoy my technical skills more when i work on my personal projects. pure enjoyment lol.
I don't blame them. I hate Typescript. Worked on projects at a major gaming company, no typescript necessary.
However, if the JS build system was actually sane, TS would be the default choice. It's a superset of JS, so saying no typescript necessary is like saying a horse gets me from a to b, no need for cars. TS is objectively better for many use cases and situation if you spend an hour learning it without all the build tooling nonsense getting in the way.
It's equivalent to a company using assembly when they could choose to port to C because assembly gets the job done.
I learned it but never saw the need for the extra overhead.
It's full of these situations. And I'd rather just see less code due to "Attention Economy" issues-- the more things to focus on, the less focus each thing receives. It's easier on the big picture, if there's less things going on. TS has a ton of terms and concepts that I just don't need to make my business logic work.
const cat Cat cat<T Cat> = cat
vs.
const cat = cat
dto? iterface? i can define those without typescript. Just plain objects with comments about what they do and what they are.
Anyway, yep it's just my personal opinion of course.
My opinion is basically... I think in some cases there's a desire to make things overly complex, sometimes even as a way to gate keep--
I'm not saying that's what is happening here.
But sometimes I feel that way about Typescript leaking into all of the Javascript ecosystem.
Ultimately, TS enforces those implicit comments you mentioned and adds some explicitness to the code.
Whatever works for you and gets your job done
But it's worth mentioning, TS with some of the strict settings disabled is basically JS but with some added benefits, primarily due to the TS type checker still being available. No need to go fully in, you can just as easily add explicitness and overhead where necessary and write JS everywhere else to avoid the overhead.
While working with TS in VS Code, I liked the intellisense of TypeScript + VSCode... it was able to piece itself together better than vanilla JS-- it predicted which objects, functions, or files I would reference quite well. So, I'll give it that.
I totally see a reason for it in the corporate realm of developer churn and in the vein of keeping projects very structured and stable. I might give it another go eventually.
For my own projects where I try to keep mental overhead low, and reduce focus on anything over than the main business logic, I prefer plain JS (e.g. within an ExpressJS or ReactJS project)
i despised typescript for years until i tried it again recently. these days the developer tools are better.
prettier now formats it very well. eslint now lints it very well. tsx and ts-node now lets me run my ts files without compile step to js before i can run it with node. on frontend, vitejs has templates for react with typescript projects.
im a performance freak too, i currently use uwebsockets.js instead of express/fastify/hapi/koa. i wrote my own redis client instead of node-redis and ioredis. i fucking hate overhead too, haha.
i think my strongest preference on typescript stems from my frustration on very large projects. say thousands of commits every month, at that scale typescript really helps a lot in catching bugs before we even run our code.
So the more and more JS devs are coming in, the more we need JS experts who really understand how stuff works at lower levels. Like for example the browser event loop - https://www.youtube.com/watch?v=cCOL7MC4Pl0
Being an expert that deeply understands a tech stack will never go out of style
Even if you only ever wanted to work in JS and an infallible oracle told you that you'd never be out of work longer than a week at a time, I think you should still become reasonably familiar with a few other languages.
I personally prefer to hedge my bets by doing both backend and frontend work. If you join a smaller place/startup, you may end up having to push both. Saying, "I can build anything and I can help across the entire stack where needed" and showing history to back that up i think is a positive. Yes, a github project in a different stack might come in handy at an interview.
There will, for the next decade and likely the next two decades, be several million jobs that are using the Javascript ecosystem. (out of ~30M programmers worldwide). If OP (or anyone else) is happy enough working in that ecosystem and concerned only about ongoing employability, finding a way to be in the top 10% of Javascript programmers is more than sufficient. (Being in the top 25% is probably more than sufficient.)
If you start from a base case of 10K hours of JS experience, are you better off with that or instead having 9K hours of JS, 250 of a lisp, 250 of Java/C#, 250 of golang/rust, and 250 of SQL? I think the latter candidate is far more likely to be able to succeed and thrive in the JS world than someone with the "extra" 1K hours of JS experience.
I think you choose JS or not based on whether you like working in JS, then if you choose it, you find a way to maximize your chances for success, which I think is "something different from JS and happens to be 'become a well-rounded individual'."
Moreover, you can't control what a company is looking for. They might hire you because of your hobbies, and I'm not even joking. If you're feeling discouraged by the process, understand that it's not abnormal for first time devs to apply to 80+ jobs and not hear back from any of them. It's just part of the process. Keep applying like that's your job
[1] Personal experience over 2 months, what I've seen others I know experience, and what I've found researching the current hiring market online (reddit, HN)
[2] At least until the current high interest rate economic situation changes
I get work in part because I can work with TypeScript, though I have many other languages and hard skills. It’s also because I’m a strong communicator, I can organize my thoughts and plans well in lay terms, and I have particularly sharp empathy for what a client or customer (for example) needs.
This allows me to point my skills of solving problems that matter to people in ways they can see, understand, and value.
This is just a piece of the bigger picture of how you can differentiate and stand out. At the end of the day, your ability to write JavaScript or Go or Rust shouldn’t really matter much; people should be picking you because you can collaborate with, understand, and support them in all the ways they need.
In my experience, this is where a lot of software developers have weaker skill sets, and you can fill a lot of important voids that non-software people experience to great effect. This will be true no matter which language you focus on.
Theres probably a billion Chinese and Indian people who are good at technology who could do all of our jobs.
I wouldnt worry so much about job security as much as what you enjoy most.
Anyway, if you like what you're doing and are just wondering if it's safe, why not expand your skills rather than jump to a separate pond. To use metaphor: "increase size of your circle" or "learn something in an overlapping circle".
Also, I suggest expanding first in the area of fundamentals. You mentioned SQL: it has outlasted many fashionable programming languages and is likely to do so for quite a while. Or improve your on algorithms and DS skills a bit. This is because the "next language" is statistically going to last a short time, while the deeper skills will make you better with whatever the fashion of the day happens to be at some time in the future.
Start somewhere (JS is a decent place to start) and become proficient in it, and once you have concepts down the others become easier. Then branch out from there. Learning C# or Java is an accessible next step from JS.
Always be trying new things. Don’t know where to start with the new thing? Try rewriting a project you know well from scratch in the new language/platform. Don’t have a project? Try the ubiquitous todo example app, or reconstruct some site, service, or app you like. It doesn’t have to be something you sell or put out there, you just have to make it work and understand how you did it.
The candidates that stand out from the pack are those with some tangible production backend experience in languages like C#, Java, etc., combined with SQL experience. Strictly in terms of marketability, I do believe getting real-world backend experience greatly increases your value.
I would do those projects, add them to my cv and apply to backend roles for example.
I am much more interested in how people pick up new tech and interesting projects than the specifics of the language. With modern libraries and frameworks I don't think you need deep experts in particular languages anymore
I would assume they know that. There are plenty of projects that don't have nodejs backends.
This would imply they don't or they don't value it nearly as much
Just saying I was king of JS, but left my realm to become an aspiring pythonista with 20 forked repo PRs and an "amazing" personal project won't cut it. As a tech hiring manager, if and when I cared about your internet presence, it was because of a somewhat popular Github repo or elaborate community activity. Anything else sounded like you were trying to divert my attention, or just not that focused on your work, or, if anything, GH repo work is just too difficult to verify as authentic or may instead work against you.
You can however beef-up your resume with good lower level languages, specially if they compile to wasm, ie Rust. In fact any skill that could be in an employer roadmap, ie "experience migrating to Next.js" makes a great asset for your resume.
I don't know if this is actually a niche, but since I don't see it mentioned frequently on HN, perhaps you could have a look at Google Apps Script [0], which is basically JS for automating and extending Google Docs (Docs, Sheets, Forms, Slides), and integrating them into GCP. Tons of companies have whole departments living inside Google Docs, so I imagine they would pay for software making their lives easier. I would but I currently don't have the budget for it, so I am writing short scripts myself. Curiously, Bard and ChatGPT produce really bad Apps Scripts code, which would be to your advantage.
When I occasionally hire people, I do look at their repos to see how good they are in a specific language. Specifically, how easy to follow and idiomatic their code is, what the quality of their comments and documentation is, are there any tests, even if very rudimentary. I particularly enjoy original projects like home automation, custom keyboard firmware, an alternative Netflix UI, a ggplot extension, a basic Python wrapper for some overly-complicated API vs. your typical to-do app or yet another analysis of the Bike Sharing dataset. I don't expect all people to have public repos or FLOSS contributions because not everyone has the time for that. However, if you wanted to demonstrate skills in a technology you haven't used professionally, I think it is a good idea.
0. https://developers.google.com/apps-script
So you want to find some niche where it is easier?
I’d say double down on being good or really good at your stack and you will have profitable opportunities anyway.
Mind you I am not writing that you have to be super good - just be good and deliver what you promise. Stack does not matter that much.
Most companies have let people go, stopped hiring, or reduced the rate at which their headcount increases. Whether it's a good idea or not, that puts more companies in the spot of needing 1 engineer to do the work of 2, and the simplest way people see to do that is hiring full stack developers.
Even full stack aside, it makes hiring easier if I can keep hiring JavaScript engineers instead of needing some JavaScript, some Java. Companies all around the world need web apps and apps built, and will for a long time to come, and more and more of them are moving to a majority-Js(/TS) stack.
It's not like COBOL where you have systems which need maintenance and a retiring generation of engineers. There are still an abundance of java or C# or sql devs out there.
Do what you love, and if that's c#, go for it. But if I had no preference, I would go deep on JavaScript.