|
| troelsSteegin wrote:
| "Code has mass". Following from that, attention is force and
| understanding is acceleration.
| dokem wrote:
| I think understanding would be velocity. Acceleration would be
| change in understanding, which is proportional to attention.
| nh23423fefe wrote:
| No I dont think that follows. Forces don't cause accelerations.
| But attention is required for understanding.
|
| > Every additional line of code you don't need is ballast. It
| weighs your codebase down, making it harder to steer and change
| direction if you need to
|
| So code as mass is the scalar part of the momentum. So the
| directional part is where this code is going in "purpose
| space".
| kqr wrote:
| Code has mass has another interesting corollary: large enough
| collections of code tends to almost gravitationally attract
| more code. This results in god classes and those huge libraries
| of diverse functionality that usually go by the name "misc" or
| "util".
|
| The mechanism for this is fairly obvious: it is usually
| convenient to put new functionality next to existing one
| because it allows you to reuse things that maybe should not be
| reused. The more diverse a big lump of code, the more potential
| future functionality is convenient to add to the lump.
|
| This is a reason to be very vigilant against this type of
| accidental reuse and incohesive modules. It's a reinforcing
| feedback loop that needs a balancing mechanism.
| kderbyma wrote:
| Always leave something unfinished at the end of the day
|
| --
|
| definitely helps me get focused the next day
| lysecret wrote:
| Really enjoy the fearlessness. I wanted to share my main guide
| for programming, my dad always told it to me it comes from
| KentBeck: First, you make it run. Then you make it right.
|
| It is a bit connected to fearlessness, because you need to be a
| little fearless to start something without knowing where it will
| go. I think fearlessness originates from a trust in oneself, and
| maybe the universe too haha
| civilized wrote:
| A lot of really good stuff here, for example reaffirming YAGNI
| and a focus on customer value. One part I think falls short:
|
| > Negativity begets negativity
|
| I think this is coming from a very common and fundamentally
| misguided premise - the obsessive focus on emotional valence, on
| whether we're being positive or negative. The real problem is not
| whether we are being positive or negative, it's the rush to
| attach emotional valence to things we have not adequately
| understood or described. As C. S. Lewis said, "the human mind is
| generally far more eager to praise and dispraise than to describe
| and define. It wants to make every distinction a distinction of
| value." This rush to emotional endpoints is the root of both
| toxic negativity _and_ toxic positivity.
|
| Instead of taking positivity and negativity as endpoints, take
| them as prompts to better understand your surroundings. You are
| feeling bad about something - why? What about it makes you feel
| that way? Would improving it cost more than it would benefit? Is
| it the least bad of the alternatives?
|
| A willingness to feel and acknowledge and investigate your
| negative emotions is a superpower. It gives you x-ray vision into
| things that very few other people have. They look away from
| problems and let them fester because they've been taught to be
| allergic to negativity. The ability to look at problems is
| inseparable from what the author points out is a very important
| trait, the ability to roll up your sleeves and get stuff done.
| AnimalMuppet wrote:
| People are emotional, at least to some degree. Most people find
| emotions contagious. If you're surrounded by people being
| negative, it's _draining_ , even if you don't give in to the
| negativity.
|
| One think I would say the article is wrong on, though - snark
| doesn't have to lead to cynicism. At my place, we talk a fair
| amount of smack, but it's just entertainment. (One difference -
| the smack is self-directed at least as often as it's directed
| at any particular other person.)
| misternugget wrote:
| Author here. Just wanted to add that I don't think all forms
| of snark, sarcasm, and cynicism are bad. Or even negativity!
| But what I learned the hard way is that there's a time and a
| place for this and often it's not "your team & whenever
| something pops in your head". I very much agree with the GP
| here in that I value mindfulness when it comes to negativity.
| civilized wrote:
| I just wanted to say I loved your post and I think this is
| a very hard thing to articulate in our culture. Because
| you're absolutely right about the social impacts of many
| forms of negativity. But "negativity" seems too broad of a
| term for the thing we need to avoid. But then, what is the
| more precise alternative? I guess "mindless negativity" is
| something closer, at least.
| civilized wrote:
| On the other hand, if you model productive negative thinking
| and communication, people will be relieved that they have the
| space to express their problems, and you will accelerate
| genuine team bonding and psychological safety.
|
| I have success stories from my personal experience doing
| this.
| chrsig wrote:
| I think some big things to consider is what the negativity
| is trying to accomplish, how is it presented, and is any
| solution presented?
|
| Is there vindictiveness in the negativity? resentment?
| superiority? smugness? irritation? is it directed at a
| person, a process, a project?
|
| Is the negativity being brought up just for the sake of
| complaining? to solicit empathy or solidarity?
|
| Is the negativity specific? actionable?
|
| Those may be valid feelings, and great things to
| examine...and then probably keep to yourself, and find
| productive ways to either soothe/cope or change the
| environment/root causes.
|
| I say this as someone that endeavors to do what you've
| described in your initial post, but also as someone that
| struggles with adhd/depression, keeping it to myself can be
| it's own struggle. And then I worry that I've rained on my
| coworkers parade, or that I've worsened their work
| environment.
|
| People have something of a battery when it comes to this
| sort of thing, and it can definitely be drained, so it's
| important to be conscientious of that.
|
| Mindfulness exercises and meditation help me a great deal
| with all of the above, by doing what you suggest, and being
| inquisitive about the feelings. And also being aware of how
| the body is behaving during those feelings.
| civilized wrote:
| Yeah, doing negativity right isn't easy! It's essential
| to look inward for how the expression might impact
| people.
| ilrwbwrkhv wrote:
| This is very well said. I am trying to practice this myself as
| I find myself to be very mercurial. I have been going through
| the book living untethered by michael a. singer to guide the
| way.
| derekstride wrote:
| > Look at that little program go, holding the internet together,
| despite the 17 TODOs in it.
|
| This hit a little too close to home.
| ctvo wrote:
| > Fearlessness is undervalued
|
| Being technically fearless is also a trait I've identified in
| engineers I enjoy working with. It's hard to quantify how you
| gain this. I think it's a combination of strong fundamentals and
| deep curiosity. It forms when things stop being magic.
| robervin wrote:
| Absolutely agree, but I like to think the magic bit can stick
| around as wonder. Perhaps that's bundled into deep curiosity.
| humbleMouse wrote:
| This is what I tell anyone trying to learn programming or any
| computer related craft. The first step is to not be afraid of
| the computer. Only then you can learn.
| albertzeyer wrote:
| I observed that many people are really afraid even of basic
| things. "I don't want to click here because I don't know what
| it does. Maybe it breaks my computer or deletes all my stuff."
|
| Maybe it's because I started using computers as a child (~9
| years old or so) but I always had the mindset to just try
| things out. You cannot really break the computer or delete
| stuff. Every tool will always put a very clear warning before
| you do sth stupid. And if you are really unsure with some
| action, just make a backup before. Reinstalling Windows every
| so often was anyway the norm in my youth.
|
| And just trying things out, clicking through the menu, through
| the actions, just playing around, make some dummy playground,
| this is often how I discovered the functionality of most tools.
| This is a very effective way to get familiar with most tools.
|
| But others, when they say they don't know how to do X in tool
| Y, they never have just tried around. And when I ask them why
| they have not, they tell me that they are afraid of breaking or
| deleting sth.
|
| With coding, it's very much the same. And now that we have Git,
| with some backup somewhere remote, and hopefully a test suite,
| maybe even with CI, it's even much less of an issue if you
| break sth because it always can be undone and you normally
| should notice with the tests (or if you don't, you can blame
| the incomplete tests).
|
| Btw, regarding reading other code bases: I very much can
| recommend that. You will most likely learn a lot. And there are
| many great open source projects where you can just dive in.
| kqr wrote:
| It goes deeper than this. It's not just about trying things;
| some people do the opposite: they try too many things at
| once.
|
| The real skill lies in trying things systematically,
| carefully, querying your mental model of the system and
| invalidating hypotheses along the way.
| gombosg wrote:
| You mostly can't break computers, except when stuff actually
| breaks in production and it hurts users/customers a lot. And
| thus we have engineers responding to incidents and writing
| postmortems. :D I have learned a lot from alert and incident
| management!
| jrvarela56 wrote:
| I think it's a mix of curiosity, lack of deadline pressure -
| and something else I can't put my finger on.
|
| An example is being comfortable reading a dependency's source
| code. Once you realize you can do this by going to Github/Gilab
| - or even navigating to where a function is defined via your
| editor - you realize it's all layers 'down' and you can go in
| there as far as you want. Another example is using dev tools to
| prettify the code (but it's rarely readable).
|
| Another thing is the payoff: how often can you deep dive and
| make changes to solve your problem? This determines if the
| reading through a huge library is worth it.
|
| Starts with curiosity but requires lots of time available and a
| bit of confidence that the endeavor could lead to a solution.
| ctvo wrote:
| > I think it's a mix of curiosity, lack of deadline pressure
| - and something else I can't put my finger on.
|
| I'm not sure I agree on lack of deadline pressure.
|
| There's a virtuous cycle somewhere if I squint that's
| fundamentals -> makes it easier to find where the problem is
| -> makes you more willing to dive deeper -> leads to stronger
| fundamentals. In parallel maybe, curiosity -> dive deeper
| reading other people's code / learning about software ->
| stronger fundamentals
|
| This all leads to things like "I bet this is a network or
| protocol level issue in this dependency" -> even in someone
| else's large, open source codebase, I can quickly track down
| the problem without needing to understand the entire
| structure, for example. But gaining that ability to intuit
| takes time, especially for newer engineers.
|
| Edit:
|
| Technically fearless though isn't really the above example
| for me, it's more, if the business needs it, and we want to
| allocate resources, there's nothing I can't build or learn
| how to build in a reasonable amount of time. When you're
| layers and layers of abstractions up, you're constrained at
| each layer on what you're allowed to build. Perhaps a simple
| definition of being technically fearless is the ability to
| drop down layers of abstraction as needed to solve problems.
|
| I think John Carmack[1] is technically fearless, for example.
| Known for video games, but I would hire John in any domain
| and have no doubt he'd be successful.
|
| 1 - https://en.wikipedia.org/wiki/John_Carmack
| afarrell wrote:
| That definitely relies on a lack of deadline pressure...
| which is really about knowing that your team lead trusts
| your judgement in how you allocate time.
| gombosg wrote:
| Awesome article!
|
| > Typing can be the bottleneck Agree! Learning touch typing (at
| 30 :)) was a big relief for my fingers and wrists. Also it's
| important to have a good mechanical or scissor keyboard so that
| typing actually feels good.
|
| > Hiring is hard And it's like dating: you only get to know the
| people who you actually hire and never learn what would have
| happened to the people that you have rejected. That is some
| selection bias in the system.
| danielvaughn wrote:
| The point about other people's code rings true for me. What I've
| been trying to do is gather a collection of good code I've
| written over the years - solutions that can work for a variety of
| problems. They're like my own little npm packages, except I have
| full access to the source and completely understand them inside
| and out. I can also completely explain how they work to my team,
| and how they can make changes to the behavior if need be.
| gryn wrote:
| A lot of the time it's not characteristics of the code itself
| but the business mission it needs to fulfill.
|
| good code can give you a lot of headaches if the external
| business environment sees qualitative changes while that sloppy
| code over there is has being going hassle free for the last 6
| years because the end-goal and patterns that it needs to
| fulfill didn't change much during that period.
| calderwoodra wrote:
| Amazing post, thanks for putting this together.
|
| Three points I think are undervalued in my experience:
|
| > Typing can be the bottleneck
|
| > The most important trait in developers: rolling up their
| sleeves because it has to get done
|
| > Nothing really matters, except bringing value to the customer
|
| I often feel the code needed to deliver value is not that complex
| and most senior folks can do it, but in an effort to "save time"
| on typing, they try to design something complex and debate
| endlessly, when what's really needed is rolling up your sleeves,
| getting it done, then saying "oh that? I finished coding it and
| it works, let's ship it already"
|
| (edit: formatting)
| terrycrowley wrote:
| Great article. The point about fearlessness resonated. Ray
| Tomlinson (wrote the first inter-machine email, picked the @
| symbol, helped design TCP) was one of the best and most fearless
| engineers I ever worked with.
___________________________________________________________________
(page generated 2022-05-19 23:02 UTC) |