4 ms·
> It isn't like computer graphics, geophysics, CAD or data compression are particularly hard spaces to work on for a software engineer. As a software eng. in t
by killtimeatwork 6y ago
> It isn't like computer graphics, geophysics, CAD or data compression are particularly hard spaces to work on for a software engineer.
As a software eng. in those spaces, you're required to grasp heavy math (quaternions, Lie Algebras, you name it), find suitable numerical algorithms and implement them them bug-free in a hard-to-work-with low-level language such as C++ (because performance matters). Writing correct code is tough for multiple reasons, for example these numerical algos are not perfect and the glitches you see may be an algorithmic problem and nothing wrong with your implementation. Compare this with the usual backend and web dev, where you're usually writing trivial endpoints which just move data from one system to another. Of course, there are some ambitious roles in the FAANGs (the algos behind distributed databases don't figure out themselves), but they come into the picture later, once the startup is already scaling up.
- username90 6y ago> As a software eng. in those spaces, you're required to grasp heavy math (quaternions, Lie Algebras, you name it), find suitable numerical algorithms and implement them them bug-free in a hard-to-work-with low-level language such as C++ (because performance matters). None of that is particularly hard though. Quaternions and lie algebras sound esoteric but are simple to work with, C++ is standard basically anywhere that cares about performance including a large part of Google, and finding suitable algorithms and implementing them bug free is the absolute minimum of what is expected of people. Now, the work people do at Google isn't that hard either, but it isn't like your average engineer could easily do the job. At Google it is expected that a typical mid level engineer can design and build systems to handle millions of QPS, be fault tolerant to prevent errors from propagating and bringing all of Google at once, know how to write distributed scripts to do operations on user data like migrating it without bringing down the service, know how to debug errors in distributed systems, track it between servers and try to find its origin, create useful health metrics for servers so you can see what is going on since you have thousands of them at once and you can't look at them individually, etc. In practice the end result is that they just copy data between servers, but copying data at reasonable cost to the right places on live servers when you have many thousands of servers all over the world is hard. And that is just the typical boring backend job, a significant part of Google is only low level libraries, algorithmic performance, machine learning, databases, compiler optimizations for C++, video encodings, etc etc. I've worked on both at Google and I wouldn't say that one is harder than the other, however working on algorithms and libraries is more fun and less stressful than backend work so I prefer it. Also the team working at the more "fun" stuff wasn't that much better either, I don't think the people working at backend would have a terribly difficult time doing those jobs either. After all Google does interview and hire everyone as if they would work on interesting technical stuff, so everyone knows at least the basics of maths and algorithms. > Of course, there are some ambitious roles in the FAANGs (the algos behind distributed databases don't figure out themselves), but they come into the picture later, once the startup is already scaling up. You talked about the typical FAANG engineer though. They aren't geniuses but they are still pretty smart. You shouldn't underestimate them.
- burntoutfire 6y ago> and finding suitable algorithms and implementing them bug free is the absolute minimum of what is expected of people. That was perhaps true in 1990. Currently, most people just call a library that does what they want and don't know or care what kind of an algorithm is implemented behind the scenes - let alone implement the algorithm themselves.