3 ms·
It really is in deed. "Node" or "Java" or "Rails" engineers are a dime a dozen. There are exceptions and it's more complicated than an explanation on Hacker New
by shados 8y ago
It really is in deed. "Node" or "Java" or "Rails" engineers are a dime a dozen. There are exceptions and it's more complicated than an explanation on Hacker News can do justice to, but generally speaking, the places you'd want to work for, including (but not limited to) the likes of Facebook, Google, and other smaller but worthwhile companies are hiring for general skills, not tech du jour knowledge.
No Java shop worth its salt gives a flying duck if you know Java's syntax. They care if you understand how to build systems. Caching, queuing, service to service communication, algorithms, performance, debugging etc. If you learnt that stuff in Go instead of Java, who cares? Yes, the job reqs and lazy recruiters will come at you with a list of keywords, but that's usually not what the hiring manager truly cares about.
- scarface74 8y agoMost of the worlds developers aren’t working for FAANG companies. I would even say that many aren’t working for software companies. They are working for corporate America writing bespoked apps that just want to get stuff done and want to hire someone who can hit the ground running. If you are coming in at a senior level to a C# position with prior knowledge of Java. You’re going to waste a lot of time. It’s not about the language. It’s about the ecosystem, knowing the popular third party packages that will make your life easier etc. How many Java developers would come in knowing how to use LINQ efficiently and know the difference between customers.Where(c => c.Age > 65).ToList() And customers.ToList().Where(c => c.Age > 65) when using Entity Framework or the Mongo linq driver? They would both give you the same result but one is much more efficient. You can’t imagine the number of times I’ve seen people use a Func<T,bool> instead of an Expression<Func<T,bool>> and wonder why their code is so slow in production. How many Java developers would migrate toward log4net because they have heard of log4j instead of using the much better Serilog? How many would come in knowing how to efficiently use ASP.Net Core and plug things in the pipeline? Knowing the language is the easy part. Knowing the frameworks and the ecosystem takes time. No one would hopefully ever say a Windows system admin could function at the same level with Linux as someone who had Linux experience. That’s just like the “AWS Architects” who translate all of their knowledge of on prem deployments to AWS without knowing AWS best practices and wondering why the same infrastructure costs more. I’ve been a hiring “manager” - more like the architect. I’ve got deadlines and deliverables. Why am I going to hire a Go developer when I can find perfectly competent C# developers that have the skill set I need? Why would I learn Go knowing that the local market wants C#, Java, and Node developers?
- shados 8y ago> when using Entity Framework or the Mongo linq driver? They would both give you the same result but one is much more efficient. The competent developer with knowledge of systems know that the first step when using any form of ORM or sql generation tool is to figure out how to look at generated queries. Also in that particular example, you're dealing with a reasonably common concept across all languages (generators). While LINQ works by letting you introspect the AST and its a reasonably unique concept, when looking at the snippets here it actually doesn't matter if you don't know that: in basically any data structure manipulation code, doing a data structure conversion followed by a predicate operation is almost always a mistake, because the whole point of "toSomething()" functions is to go from the specialized domain into the language's generic's constructs. LINQ is a particularly accessible implementation of concepts that are age old. The Rx family of tools (which do exist in java) follow similar semantics, and then most ecosystems have very similar constructs even outside of RxWhatever. Those fundamentals won't let you figure out edge cases, but they're pretty easy to pick up once you get it. The system building aspect is what takes a lot of experience to catch. Other examples would involve how to debug a server's memory dump: it's very different between C++ and .NET, but very few people know how to do it in EITHER environments, while anyone who knows how to do it in one can pick it up in another by skimming a blog post in the middle of an outage. Probably a reason why people should learn Category Theory too. Not quite the same thing, but it would help people make more solid assumptions.