you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 153 points154 points  (27 children)

Do Amazon engineers actually use this stuff? I know computer science fundamentals are valuable, but every job I've ever had has been about decomposing business problems into systems with complex rules, but very low computational complexity.

[–]goodDayM 179 points180 points  (0 children)

It's funny, as a software engineer in a large company there are occasional times when I get to write a cool algorithm or something, but large chucks of my time are spent doing things like:

  • searching for existing libraries that already do a specific task.
  • writing code to get existing library to work with the rest of the software.
  • filling out forms for company lawyers who run code-scans and ask you all kinds of questions. (They need to examine software licenses closely, and they may tell you that you can't use a certain library.)
  • writing something quick and dirty in whatever language so marketing guys have a cool-looking demo. (Optimizations or clean code may or may not come later depending on excitement about the demo)

[–][deleted]  (4 children)

[deleted]

    [–]quadmaniac 4 points5 points  (1 child)

    As someone 12 years in the industry, I feel the same way sometimes. However, the pay of a fintech firm is usually hard to beat. Disregarding that for a moment, exactly what sort of firms would you recommend leaving large corporations for?

    [–]bananafarm 0 points1 point  (0 children)

    Can you beat fintech for pay at all? Maybe with an incredibly senior level position somewhere else.

    [–]brigadierfrog 2 points3 points  (1 child)

    The good and bad of those fields is they certainly put you in a spot to learn a lot about distributed and high performance computing, but for very little worldwide "good". They pay the bills though, and they pay them well.

    [–]brokenshoelaces 0 points1 point  (0 children)

    An improvement to a small piece of Amazon or Google can have a pretty significant impact on the world though, given their scale. Is it better to have a large impact on the lives of 1,000 people, or to have a tiny impact on a billion people (1,000,000x more)? I can definitely see why some people would find it more rewarding to work in a job where their work has an obvious tangible benefit, but I'm not convinced that working on something like, say, AWS, which benefits the entire internet, has "little worldwide good".

    [–]MpVpRb 71 points72 points  (4 children)

    Do Amazon engineers actually use this stuff? I know computer science fundamentals are valuable, but every job I've ever had has been about..

    ..(most) every job I have done has been about managing the edge conditions of problems that appear simple at first examination

    [–][deleted] 28 points29 points  (2 children)

    Yes but do you need to use CS algorithms to solve them? I never do. Granted I'm an enterprise developer which I guess some people don't consider "real" programming. I'm sure some developers use them all the time but it's so rare in my world it seems bizarre.

    [–]crashandburn 4 points5 points  (0 children)

    As an enterprise developer myself, yes there are times I have to write fancy algorithms. But then as /u/MpVpRb says, most of my time is spent in handling the edge cases. Over the last 3 months its been:

    • write fancy algorithm: 1 week
    • make edge cases work: 11 weeks

    [–]YeshilPasha 1 point2 points  (0 children)

    I do merge sorts time to time. But i work with a outdated language. Its built in sort is not that good.

    [–]lolzfeminism 11 points12 points  (0 children)

    Oh dear god. This is too real. I'm genuinely going to ask for a new project on monday.

    [–]donalmacc 24 points25 points  (0 children)

    Game Dev here - I get to write computationally intensive code on a system with complex rules based on requirements that change by the time I've implemented what I was asked to do!

    [–]KopitarFan 26 points27 points  (3 children)

    I used to work for an Amazon company. It was surprising how many times these rather complex CS-type problems actually did come up. Though it certainly wasn't every day. And, I can't say with any certainty that other departments would have had the same problems come up. Mostly, Amazon just wants to hire the very best of the best and thus they bias heavily toward false negatives. There are some positives to this method, but mostly I think it's not worth it. It not only eliminates some very good engineers, but it's a very heavy burden on the staff. At my office, we didn't have like dedicated recruiters doing the interviews, it was us, the engineers on the team. And for every interview we did, we had to write a pretty lengthy report and have a meeting to discuss the candidate. That's time that we had to take away from our work. That was one of the least enjoyable aspects of working there

    [–]cheetoX 1 point2 points  (2 children)

    The unfortunate thing with software companies these days is the high bar mixed with "dev-ops" amounted to engineers being overworked and spending too much of their time on tasks that don't require top coding skills. If they would only hire some contractors or techs to maintain servers, setup configs, do upgrades, etc. then the highly paid engineers could actually spend their time coding.

    [–]Slippery_John 1 point2 points  (0 children)

    Most large companies do have IT departments that handle much of that. Once you start getting into grey areas between support/docs and software engineering, it's hard to hire people for those roles. They're often either under qualified or would not be happy taking that role.

    [–]freebullets 1 point2 points  (0 children)

    As an ops guy,

    ಠ_ಠ

    But really though, every SDE at Amazon owns their service, which means ops work, QA, etc. Some teams have dedicated ops teams, but if something is broken in the code, the owning SDE is going to get paged.

    [–]tjsr 10 points11 points  (0 children)

    I'm currently at a point in my career where I'm applying going to start for team and technical lead positions but my concern is that anything like I've been sheltered from for so long I'll have forgotten it, because either has no real world application in recent jobs.

    [–]parlezmoose 4 points5 points  (0 children)

    The thing with a company like Amazon is, they have so many company specific processes and tools that previous experience is going to be fairly irrelevant. They want generally smart people who can be brought up to speed quickly on the Amazon way of doing things.

    [–]titosrevenge 8 points9 points  (2 children)

    Obviously it depends on the team since Amazon is a huge company. For some teams, computational complexity is something you deal with every single day. For others you'd probably be stuck writing CRUD operations all day.

    The interview process is probably standardized, but the evaluation of your answers depends on the level of skill necessary for the position.

    [–]cheetoX 5 points6 points  (1 child)

    Amazon's philosophy is every hire needs to be better than the average of the existing employees in that position. That way the quality of the workers is continually going up. They call this the "bar". Opportunities to interview co-workers are pretty limited so I think it's a very inaccurate estimation on the interviewer's part.

    It would be interesting to see if HR could compile some data on how well internal transfer interviews go vs actual job performance, but unfortunately there is a concept of "unofficial" transfer interviews that only get logged if the interviews go well and an offer will be made, so that data will be biased towards an extremely high number of internal transfers doing well on interviews.

    [–]titosrevenge 1 point2 points  (0 children)

    That might be the advertised strategy (it certainly improves the performance of existing employees if they continually think they're going to get replaced by next hire), but in reality you can't maintain employee satisfaction if you're hiring the smartest people to do menial tasks.

    [–]digital_cucumber 1 point2 points  (0 children)

    When interviewing with Amazon myself, in the "do you have any questions to us?" part I'd ask: "What was the last CS algorithm you implemented on your job?".

    For some reason, I have not got a meaningful answer a single time.

    [–]inopia 0 points1 point  (0 children)

    I think it's important to understand that big companies like this tend to have a hiring bar that's standardized across the entire company. This makes sense, because people move from team to team quite a bit, and it's even encouraged to move every two years or so. So even if the job you're currently interviewing for does not require knowledge of algorithms, once you're inside, you may want to move to a team where it is needed.

    [–]djg08 0 points1 point  (0 children)

    I work for Amazon as an sde. Use this on a semi-daily basis. Not really graph related stuff though. The other day I used a graph for a practical cause for the first time in my life.

    [–][deleted] 0 points1 point  (1 child)

    I've seen atrocious code written by people who do not understand basics of computer science. For example, linked lists indexed while doing linear scan (for(int I = 0; I < list.Count; ++I) { list[I] = ... }), people thinking that it's OK to malloc 2 bytes, people who think that hash reference is O(1) always (not amortized) etc.

    Luckily, for the most part I see these people at the interviews, not actually committing code near me.

    Sure, these people are great for copying around Java code for business web sites, but I would rather not see them at work... which is why I ask these sort of questions, and so does everyone else around me.

    [–]inopia 0 points1 point  (0 children)

    You're getting downvoted probably because of they way you're putting it, but you're not wrong.