[HN Gopher] Expectations of professional software engineers
       ___________________________________________________________________
        
       Expectations of professional software engineers
        
       Author : EntICOnc
       Score  : 158 points
       Date   : 2022-10-07 16:53 UTC (3 days ago)
        
 (HTM) web link (adamj.eu)
 (TXT) w3m dump (adamj.eu)
        
       | hguant wrote:
       | I view these less as actionable items, and more as character
       | hallmarks. No you don't need to actively be making sure you're
       | doing All The Things by iterating through this every day. Yes
       | these are things that should be captured by your company's best
       | practices, and your own professional integrity.
        
       | unicornhose wrote:
       | All good as far as it goes, but not very common in the industry.
       | Poor management and no mentorship, and this is what you'll get.
       | 
       | Now what are everyone's expectations of Mike Acton? If someone
       | sends me an email like this before I'm about to start on a job --
       | I just know he must be feeling some pressure.
        
       | omega3 wrote:
       | Having worked in Unity I'd take engineering advice from their top
       | execs with a grain of salt.
        
         | jstimpfle wrote:
         | This guy in particular has collected some serious credibility.
         | In the past he's worked at Insomniac Games. He is also credited
         | for popularizing Data-Oriented Design and has delivered at
         | least one talk that went viral and that video thumbnail of him
         | in his red flower shirt has become a meme for a no-bullshit and
         | requirement-focused engineering approach. Go check him out on
         | Youtube.
        
           | sidewndr46 wrote:
           | Is this reply sarcasm?
        
             | jstimpfle wrote:
             | How did you get the idea? Not at all, only sharing what is
             | pretty much facts.
        
       | apiqueen wrote:
       | It would make my life so much easier as a product manager if my
       | engineers would feel comfortable to question themselves and me
       | about what is the value of what they are doing .
        
       | analog31 wrote:
       | The questions read like the typical checklist for a phase gate
       | review, so they shouldn't seem unfamiliar. A more mature business
       | would formalize them.
        
       | ecimio wrote:
       | I would include automated tests
        
       | matai_kolila wrote:
       | I didn't have time to go over all 50 but I do like #3, "I have
       | confirmed that someone else can articulate what problem I am
       | trying to solve."
       | 
       | Too often I see devs go down some deep rabbit hole to solve a
       | problem no user has ever had, and I wish they'd have talked to me
       | first about it.
       | 
       | But the author of this article could have generalized a lot here,
       | many of these could be summed up by the (admittedly less
       | interesting) "I know how to communicate clearly and do so
       | frequently with my team."
        
       | kodah wrote:
       | I really love these points as a North Star, but these would be
       | mostly aspirational for teams I've been on.
       | 
       | I work on a team now where we get huge scopes of work and a
       | couple people will tear that work down and would answer these
       | questions as they do so. However, most teams I've been on deal
       | with far more interrupts than the team I'm on now does. Those
       | interrupts are lemented but justified by the business and
       | definitely impact an engineers dedication to a given projects.
       | Interrupt driven work is a sort of split brain problem that I
       | think gets in the way of answering these kinds of questions
       | because it removes the time that an engineer would otherwise
       | spend entrenching themselves enough to know the answers and
       | problemscape.
        
         | actually_a_dog wrote:
         | It sounds like you don't think these expectations are
         | unreasonable in a healthy environment. Is that what you're
         | getting at? I believe it's possible to hit 50/50, and I think I
         | personally do (with the caveat that I don't do all of these
         | things explicitly, every time, on every project), BUT I'm also
         | on a high performing team in a healthy work environment.
        
           | kodah wrote:
           | I think the expectations are fine. In a sense I actually
           | judge the engineer less than Mike does according to these
           | criteria. If you can answer these questions I think it says
           | more about how your team organizes and accounts for work more
           | than the diligence and knowledge of a single engineer.
        
           | sigstoat wrote:
           | > with the caveat that I don't do all of these things
           | explicitly, every time, on every project
           | 
           | which is totally fine, most of those things don't need to be
           | done explicitly. (as such they take less time than many
           | commenters seem to think they would.)
           | 
           | being able to articulate something doesn't mean that you've
           | taken the time to do so. just that you've generally thought
           | about your task enough before starting it that if your boss
           | asks you that question, you can produce a coherent answer in
           | a timely fashion.
        
       | arolihas wrote:
       | This is a great resource, thank you! Gives me a lot of actionable
       | concrete issues to work on. Maybe I'm just very early in my
       | career or it has to with the subfield I am in (bioinformatics,
       | machine learning) but I should have been fired 20 times over by
       | these standards.
        
         | kevingadd wrote:
         | The reality is that in a healthy workplace, you could whiff on
         | 25-30 of these and not get fired, because a healthy workplace
         | gives employees guidance and room to grow. Eventually with
         | enough time in that place you'd be at 40+. Of course, some of
         | them (like professionalism) are basically non-negotiable. But
         | nobody starts at 100%.
        
           | actually_a_dog wrote:
           | Let's be honest here, a green junior or intern could easily
           | whiff on 45+ of these things and not get fired, as long as
           | they're in a healthy workplace and they have a growth
           | mindset. I literally tell interns at my company that I
           | basically expect them to know fuck all, and that their
           | opportunities at the company are mostly limited by their work
           | ethic, their willingness to ask questions, and their desire
           | to accept and incorporate feedback.
        
       | nonrandomstring wrote:
       | This is useful a for a whole lot more than SE. I've started
       | teaching a Research Methods course this semester and I think I
       | might hit the students with this list just for giggles.
        
       | sanitycheck wrote:
       | On one hand, well yes, everything mostly makes sense.
       | 
       | On the other, I can easily imagine the reaction from most project
       | managers if they'd asked me put together an estimate for fully
       | achieving all of these on any given project. Some of them would
       | involve sitting in on business strategy meetings, which is a
       | pretty far cry from the level of involvement I generally get!
       | It's sometimes hard to even get hold of representative hardware
       | to test on.
        
       | horsawlarway wrote:
       | Personally - I don't see a lot of value in this list (I read all
       | 50 items and watched the video and I regret wasting the time).
       | 
       | There are certainly some valuable concepts - but the presentation
       | is fairly incoherent (including the video of the talk he gives)
       | and not particularly helpful.
       | 
       | Many of these items are utterly unrelated: Some are fairly
       | specific to gaming (profiling/memory layout/timing) some are
       | basic professional expectations (I can schedule my time well). In
       | neither case is there real advice for people who actually
       | struggle with some of these areas.
       | 
       | My item number 51 would be... "I can articulate my point in a
       | more compelling manner than an incoherent collection of 50 things
       | I don't like"
        
         | vubui wrote:
         | I think it has a so what problem. It sounds nice but then
         | so...? I failed to understand what exactly the author wanted to
         | convince people to do. Expectations - for who? Let's say
         | someone does exactly this, then failed to actually ship
         | something that people want then it's as useless as not knowing
         | the list at all.
        
           | isitmadeofglass wrote:
           | > I failed to understand what exactly the author wanted to
           | convince people to do.
           | 
           | He's writing a list as part of his imaginary shower argument
           | with his boss and coworkers as to why they are all inferior
           | and he's perfect and why all the problems they are facing are
           | easily attributed to his list of 50 points of things he feels
           | he does that they are failing to live up to.
           | 
           | At least that's my take away.
        
           | [deleted]
        
         | perrygeo wrote:
         | I found some value in this list (read it, but didn't watch) but
         | I agree that 50 unorganized bullet points is too much. I think
         | they could break it down into 6 or 7 larger themes:
         | communication, being a good citizen, using a systematic
         | development process, investing in developer tools,
         | understanding real world end-user requirements, technical
         | requirements, and data flows. All good advice, maybe not the
         | best delivery.
        
         | throwaway292939 wrote:
         | I see it as a list of helpful reminders. It's hard to do
         | everything on this list perfectly, for example I'd give myself
         | a B average.
        
         | jvanderbot wrote:
         | I loved the early and often emphasis on communication.
         | 
         | That gets swept under the rug far too often.
         | 
         | This list makes it clear that communication (of designs, of
         | status, of workarounds, etc) is vital for the professional
         | software engineer.
        
           | BlargMcLarg wrote:
           | Does it? Almost every day we get articles on every existing
           | medium regarding the importance of communication. Even the
           | tech circles in 4chan parrot it. Yes, the place known for
           | anti-social recluses parrots it, too.
           | 
           | And it's showing. There is so much emphasis on communication,
           | people started equating quantity to quality. "Just talk more,
           | that's what great communication is about" wouldn't be an
           | observation too far from the truth.
           | 
           | Far too little is invested into researching what makes
           | quality communication. It's just the same old rational
           | arguments against rational arguments, day in, day out. For a
           | field entirely about managing and sharing information, be it
           | to machines or to people, that's pathetic.
        
         | ySocMedia wrote:
        
         | eschneider wrote:
         | Most of the points seem to be 'Do I have situational awareness
         | of how what I'm doing fits into the bigger picture.' Generally
         | a good thing to have.
        
       | SevenNation wrote:
       | > I can articulate precisely what problem I am trying to solve.
       | 
       | It's appropriate to put this one first because it shows up in so
       | many of the problems that follow.
       | 
       | Easier said than done when there's a deadline pistol pointing at
       | your head. You gotta get stuff done. Show progress. Writing any
       | kind of specification is just a slippery slope to Waterfall,
       | geez. There's no time of any of that namby-pamby talking to and
       | watching users BS. They don't know what they want anyway! Real
       | developers ship!!
        
         | wpietri wrote:
         | Excess time pressure is behind so many problems. It's the thing
         | I'm always most concerned to manage when I start a new gig.
         | That said, shipping early and often is one of the best ways to
         | mitigate excess time pressure, because it helps build trust
         | between stakeholders and the team. The longer the release
         | cycle, the more likely it is that business stakeholders will
         | get antsy and start doing harmful things.
        
         | vinay_ys wrote:
         | Yeah, right!
         | 
         | "I can articulate precisely what problem I'm trying to solve"
         | is not just on that person. It is a function of their
         | collaborators - product/program/engineering managers and other
         | engineers around them.
         | 
         | If you are in a culture where it is acceptable to send tasks at
         | each other without much context, and with harsh deadlines, and
         | with a perf management system that rewards execution under such
         | conditions, then you will get precisely the opposite of someone
         | who can articulate what problem they are trying to solve.
         | 
         | In fact you will get a culture where asking questions for
         | deeper 'why' understanding will be seen as disruptive.
        
       | i_like_apis wrote:
       | This is good. It's been a while since I found an article about
       | software development worth bookmarking.
       | 
       | I think anyone should be expected to write a simple bug report,
       | with reproduction steps and expected versus actual result. There
       | are a lot of people out there who don't do this simple, necessary
       | task well!
        
       | voxl wrote:
       | Funny that he works at Unity, I can feel the toxicity oozing from
       | that company just trying to use their product.
        
       | osigurdson wrote:
       | Items 1-11 (+ a few others) are essentially, "show me the ROI (in
       | $) of the work that you are doing". That is fair but ROI driven
       | organizations tend to have very little appetite for risk (or tend
       | to be command and control driven). Sometimes however you can't
       | connect the dots looking forward; you can only connect them
       | looking backwards. So, you have to trust that the dots will
       | somehow connect in your future. You have to trust in something -
       | your gut, destiny, life, karma, whatever (I might have heard
       | someone else say this once, not sure...).
        
       | [deleted]
        
       | didgetmaster wrote:
       | If you are truly working on something innovative, chances are
       | that Plan B is already up and running. It is your competitor's
       | solution that you are trying to replace with a better one.
       | 
       | For example, my new data management system can also do many
       | traditional relational database table operations. If you want to
       | do fast analytics or queries, then it can do it better than the
       | competition. For basic stuff, other RDBMS solutions will surely
       | get the job done; but if you want to build a pivot table against
       | values in a 10M row relational table then this is the tool you
       | want: https://www.youtube.com/watch?v=2ScBd-71OLQ
        
       | rektide wrote:
       | Having clear wellset expectations is a general life skill of
       | extreme value. Greatly under-done, at work and in life.
       | 
       | Interesting cross-over with Mark Burgess's Promise Theory, where
       | a promise serves somewhat as a single discrete expectation.
        
       | 0x445442 wrote:
       | > I can articulate why my problem is important to solve.
       | 
       | At this point in the list we start to diverge from what
       | engineers/developers are allowed to know in the modern
       | enterprise. Here is where we start to get push back from the
       | Program/Product managers, Scrum Masters et al. To proceed further
       | down the list is to remove the added communication channels
       | between engineering and the business.
        
       | szundi wrote:
       | This guy lost me when I read that I should implement Plan B
       | first.
        
         | perlgeek wrote:
         | I guess that's inspired by the famous "plan to throw one away
         | (because you will, anyway), from Freed Brooks if I remember
         | correctly.
         | 
         | IMHO it makes sense if Plan B is much simpler, but not as
         | efficient as Plan A (remember, this is a game developer,
         | everything is about efficiency). You build Plan B is a
         | prototype, and could still fall back on it (and iterate on it)
         | if Plan A fails.
         | 
         | If Plan B is more complicated than Plan A, doing it first
         | sounds... dumb.
        
       | zerr wrote:
       | I recall he was advocating for "C with classes" approach.
        
       | philosopher1234 wrote:
       | > 13. I can articulate the hypothesis related to my problem and
       | how I could falsify it.
       | 
       | What?
       | 
       | 1. Logical positivism is not a proven perspective, it's actually
       | mostly rejected. How do you falsify "I feel angry"?
       | 
       | 2. We aren't doing science. What's the hypothesis for "I'm adding
       | a close button"
        
       | 87tau wrote:
       | Here would be my abbreviated list
       | 
       | 1) Are you solving the problem that someone (your customer /
       | manager / stakeholder) wants you to solve right now? what makes
       | you think the thing you're working on is the priority, have you
       | checked with someone or got convincing data
       | 
       | 2) Are you taking longer than expected? if yes, why? What's a
       | practical solution now and for the future so everyone remains
       | happy? If no, why do you think so?
       | 
       | 3) Are the people in charge of your future happy with what you've
       | delivered? How do you know and what's the reason if they're
       | unhappy?
       | 
       | 4) If there's a disconnect on any of the points between you and
       | the stakeholders, what is a practical solution that you can
       | implement it quickly?
       | 
       | 5) Are you knowledgeable enough that people can rely on you to
       | solve their problems in the most practical manner?
        
       | ctroein89 wrote:
       | > 1. I can articulate precisely what problem I am trying to
       | solve.
       | 
       | > 6. I have a Plan B in case my solution to my current problem
       | doesn't work.
       | 
       | > 9. I can clearly articulate unknowns and risks associated with
       | my current problem.
       | 
       | These rules imply one of 3 things about the author:
       | 
       | * That author only encounters problems that have been fully
       | solved before
       | 
       | * The manager gives zero weight or value to discovery
       | 
       | * The manager expects the whole project to have been fully
       | specified before starting
       | 
       | Yikes, that's toxic! I think it's important that engineers have
       | the mindset of understanding the problem, but that means that
       | figuring out the problem is part of the work! Which then means
       | that engineers should definitely have periods where they don't
       | understand the problem, where they don't have a Plan B yet, and
       | don't know what the unknowns are, because they can't know what
       | the solution will be until they've started the work.
        
         | nooorofe wrote:
         | Term "toxic" is toxic by itself.
         | 
         | Periods when engineer don't understand the problem should be
         | spent on analysis of the problem domain. "Now I am working on
         | defining the problem domain" - is an activity to work "I don't
         | understand the problem" task. During that period probably zero
         | code will be written.
         | 
         | > That author only encounters problems that have been fully
         | solved before
         | 
         | He doesn't, otherwise there would be no talk about "plan B" and
         | risks. When you actively write a project code, you should know
         | that solution is possible. Having plan doesn't mean "problems
         | have been fully solved before". You may have POC which doesn't
         | end in resolution, but it should be clear what is POC for and a
         | failure is possible outcome.
        
         | poopnugget wrote:
        
         | datagram wrote:
         | I don't think the rules imply any of that.
         | 
         | "No one has ever solved this problem before and I'm not sure
         | where to start" seems like an important unknown/risk to let
         | your manager/lead know about. Likewise, the backup plan can
         | just be "we scrap that feature" or "we solve a much simpler
         | problem". The point is to be deliberate about what you're doing
         | and communicate potential setbacks.
        
         | ChrisMarshallNY wrote:
         | _> figuring out the problem is part of the work_
         | 
         | IME, finding the problem is almost _all_ of the work.
         | 
         | Once I can reproduce an issue, and trace it to its genesis,
         | it's as good as solved.
        
           | pardon_me wrote:
           | Exactly. The hardest part about software is deciding how to
           | implement the tools we have, and not knowing the answer until
           | we start developing and uncover the true problems we must
           | solve. A list of small tasks to complete is solvable by AI.
        
         | outworlder wrote:
         | And that's precisely why 'spikes' or 'POCs' exist. It's way
         | more common to not have all the answers if you are working on
         | anything remotely interesting. There should be some time to
         | explore solutions. In even more interesting cases, solving the
         | unknowns is the entire project.
         | 
         | It seems that the author has never encountered the "research"
         | side of R&D.
        
           | MajimasEyepatch wrote:
           | Where does the article imply that seniors don't do research?
           | How exactly do you expect that anyone can know these things
           | without doing research? The point of the article is that
           | juniors jump into the work without doing the research to
           | figure these things out, while seniors take the time to
           | figure these things out. Sure, maybe they can do that quickly
           | based on experience, but I don't think the article implies
           | that seniors don't do research.
        
         | MajimasEyepatch wrote:
         | This is a strange interpretation. It does not matter whether
         | you are working on the simplest web page or a brand new problem
         | that no one has solved before: it is absolutely necessary that
         | you clearly articulate the problem you are trying to solve.
         | Even if you're a scientist working in a purely exploratory,
         | theoretical setting, you still have to be able to articulate
         | your problem. You may refine that as you go, but if you sit
         | down to work on something and realize you can't articulate the
         | problem, the first step is to stop and focus on defining the
         | problem better.
         | 
         | Point 1 is a prerequisite to points 6 and 9. But once you're
         | ready to start actually building a solution, you should
         | absolutely have an understanding of the risks and a Plan B in
         | case your solution fails.
         | 
         | Nowhere in the article does it imply that you can fully
         | understand a problem without putting in the work. The
         | difference between juniors and seniors that the article is
         | highlighting is that juniors will jump into implementation
         | without knowing these things, while seniors will take time to
         | do some research and figure these things out first. Usually, if
         | you're senior, you should also have the experience to do so
         | quickly, but that's not always possible.
        
       | nottorp wrote:
       | How much would they pay for someone who satisfies all 50 points?
       | 
       | Where is the company that gives engineers enough freedom to
       | satisfy all 50 points?
        
         | kevingadd wrote:
         | At the end of the day, the people signing paychecks care more
         | about their priorities than they do about these 50 points. But
         | they can be useful to keep in the back of your mind when making
         | decisions that aren't governed by anyone else.
        
         | vsareto wrote:
         | This list will impede velocity by quite a lot, especially with
         | coming up with and implementing Plan B's
        
           | MajimasEyepatch wrote:
           | You only implement the Plan B if Plan A fails. Plan B doesn't
           | have to be elaborate. It can be as simple as, "I'm going to
           | look into using this third-party service to solve 99% of this
           | problem, but if it isn't a good fit or it's too expensive, I
           | think we can put together a home-grown 80% solution in a
           | couple of sprints."
        
             | vlunkr wrote:
             | One of the points is "I have already implemented my Plan B
             | in case my solution to my current problem doesn't work."
             | 
             | So that's not what they're advocating. Though I think
             | they're 100% wrong on that point, and most managers would
             | probably think so too.
        
         | vinay_ys wrote:
         | Expecting an engineer to do all of this even when they are at
         | odds with rest of the execution machinery is simply not
         | practical. It leads to heroic behaviours and burnout.
         | 
         | I hope this guy has a complimentary list of 50 things for other
         | roles.
        
         | actually_a_dog wrote:
         | Which, if any of the list of 50 do you think is unreasonable? I
         | don't always explicitly do all of these things all the time on
         | every project, but I'm certainly _capable_ of doing so. For
         | example, working in backend web dev, I generally don't go into
         | it thinking explicitly about, say, memory usage, as long as my
         | monitoring tools are not telling me there's a problem. Of
         | course, there are exceptions, which is why I said "generally"
         | (for instance, if I know I'm making a query to the DB that's
         | going to yield 100k results, I'll definitely be thinking about
         | memory usage), but I also don't just YOLO it and see if things
         | crash.
        
           | nottorp wrote:
           | None of them. But all of them combined. And they never are
           | all part of the same job description; except perhaps in an
           | organization small enough to not have job descriptions.
        
             | actually_a_dog wrote:
             | I disagree. I think the list of 50 is an entirely
             | reasonable set of expectations for a senior (or at least
             | staff+ level) engineer, with the caveat in my previous
             | comment that not all of these things need to be done
             | explicitly, every time, on every project. Like another
             | commenter said, being able to articulate something isn't
             | the same as explicitly doing it.
             | 
             | I also realized, I'd put a small asterisk on "I have
             | recently profiled the performance of my system," as well. I
             | would expect that an engineer would do at least some
             | minimal profiling of their code in order to make sure it's
             | not too slow in itself and doesn't excessively slow down
             | any calling code, but for the most part, with a running
             | production system, it's generally safe to assume that
             | performance is good enough unless you've been shown or told
             | otherwise. And I think that all still fits into the spirt
             | of the expectation as well.
        
       | ericmcer wrote:
       | I mean yeah this is great on paper, and applicable for bigger
       | projects, but for day to day stuff there is no way I'm gonna pull
       | another engineer in to run through these steps.
       | 
       | This kinda stuff always reminds me of someone making a PR for
       | something like a react component that lets you choose a time
       | zone. It can be a 100 line simple thing or it can be an 800 line
       | monster with files for typescript types thorough tests, etc. I
       | prefer the former but I feel the author would expect the latter.
        
         | sigstoat wrote:
         | > for day to day stuff there is no way I'm gonna pull another
         | engineer in to run through these steps.
         | 
         | which of those besides #3 requires day-to-day interaction with
         | another engineer?
         | 
         | and i'd expect #3 to fall out of sprint planning, or just
         | talking with your coworkers about your work.
        
       | mjw1007 wrote:
       | His expectations around producing documentation go only as far as
       | "Think about what documentation or data users need to understand
       | and use your solution."
       | 
       | That seems like rather a low bar, compared to items like "I can
       | articulate how all the data I use is laid out in memory."
       | 
       | I'd prefer to live in a world where a professional software
       | engineer was expected to write documentation, and expected to be
       | competent at it.
        
         | feoren wrote:
         | > I can articulate how all the data I use is laid out in
         | memory.
         | 
         | That's not a high bar, it's an arbitrary hoop. It'd be like
         | saying "I always know which processor cache my variables are
         | sitting in". In modern languages it may be literally impossible
         | to look at a block of code and know what's sitting in the heap
         | vs. on the stack, and the heap is often broken into many
         | different components only fully understood by the
         | compiler/interpreter/VM writers. We _want_ to abdicate
         | responsibility of this kind of memory management to the
         | interpreter, just like we want to abdicate responsibility for
         | handling processor cache levels. If you can articulate how all
         | the data you use is laid out in memory all the time, you are
         | majorly micro-managing the runtime.
         | 
         | Agree with the documentation thing though.
        
           | strangetortoise wrote:
           | Not sure if you're familiar with Mike Acton (as mentioned in
           | the article). One of his key points of focus is data-oriented
           | design, and that when designing software, ignoring the
           | architectural realities of the hardware is ignoring one of
           | your responsibilities as an engineer to deliver performant
           | software.
           | 
           | Now, it's possible to argue that writing performant software
           | is not important. The prevailing modern sentiment definitely
           | seems to be "The compiler / interpreter takes care of that".
           | But given his track record of delivering high performant
           | running software, and the trend in computing towards
           | sluggishness, I'm trending more and more towards his camp,
           | than the "don't micro-manage the runtime" camp (which is
           | starting to feel more and more like a thinly-veiled "I don't
           | want to have to think about it").
           | 
           | Edit: A summary post he wrote as a source https://cellperform
           | ance.beyond3d.com/articles/2008/03/three-...
        
             | dtdynasty wrote:
             | I don't think it's thinly veiled at all. Some people might
             | be deluding themselves into thinking they aren't losing
             | something by abstracting away the intricacies of the
             | runtime but I imagine most are actively thinking they are
             | okay with this tradeoff. Instead they are allowed to focus
             | more on the domain problems and let their users tell them
             | when it gets to be too slow. Whether it's the right trade
             | off probably depends on what their goals are.
        
           | Agingcoder wrote:
           | You want to (I do too!) , but the abstraction eventually
           | leaks (you get unexpected behavior in long running processes
           | because of gc/libc/kernel issues, or you need very specific
           | control performance wise, etc) , and you end up having to
           | know about it.
        
           | gnuvince wrote:
           | > We want to abdicate responsibility of this kind of memory
           | management to the interpreter, just like we want to abdicate
           | responsibility for handling processor cache levels. If you
           | can articulate how all the data you use is laid out in memory
           | all the time, you are majorly micro-managing the runtime.
           | 
           | Unfortunately, in practice, it's not possible to be oblivious
           | of the layout of data in memory if we want to write fast
           | code. The CPU/memory speed disparity graph [1] shows the new
           | reality for programmers: the slowest part of a program is
           | bringing data from RAM into the CPU registers. Fortunately,
           | modern CPUs have very fast caches that help amortize this
           | cost and it's the responsibility of the programmer to
           | organize data to take advantage of that fast hardware--the
           | compiler cannot do it. That's why two functions, with the
           | same algorithmic complexity, and which compute the same
           | result, can have an order of magnitude of difference in
           | performance between them [2]. The famed sufficiently smart
           | compiler that can do those transformations does not yet exist
           | as far as I know.
           | 
           | [1] https://gameprogrammingpatterns.com/images/data-locality-
           | cha... [2] https://play.rust-
           | lang.org/?version=stable&mode=release&edit...
        
         | fjfbsufhdvfy wrote:
         | Knowing how your data is structured in memory is a trivial
         | exercise for anyone working on a game engine like the author of
         | this talk. You don't even need to think about it. The layout of
         | every data structure used by the engine is known and chances
         | are you have implemented a bunch of them yourself.
        
         | jesse__ wrote:
         | FWIW, any reasonably competent engine programmer consideres
         | 
         | "I can articulate how all the data I use is laid out in memory"
         | 
         | super basic. It's something that you just know by
         | instinct/reflex at any time.
        
       | [deleted]
        
       | mkl95 wrote:
       | > Say it's Wednesday, you have a project due on Friday, and you
       | get some new task dropped on your lap. You think "I'll do the new
       | thing now, and make up the time for the original task by
       | Friday"... mistake! Communicate about the conflict on Wednesday.
       | Your product manager will help manage the timing and risk.
       | 
       | My product manager was fired a while ago and no one has replaced
       | him formally yet. A C-level guy is micromanaging my team's work
       | now and he sucks at it. I really miss being able to push back on
       | these conflicts.
        
         | eschneider wrote:
         | Assuming (yeah, I know...) new task is 'critical, it's usually
         | enough to go 'We can do that, but it'll push X out. Is that
         | ok?' And if it's not ok, reasonable management will either pick
         | a priority or get you some help to get them both done on time.
         | If you're often getting feedback that you 'need to get them
         | both done by Friday.' you might want to evaluate if your
         | management has their act together.
        
       | Test0129 wrote:
       | A little early in the week for a list of things written by an
       | executive about what engineers should do.
        
       ___________________________________________________________________
       (page generated 2022-10-10 23:00 UTC)