Hacker News new | ask | show | jobs
by ctvo 1491 days ago
> 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.

4 comments

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.

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.

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!
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.

> 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

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.
Absolutely agree, but I like to think the magic bit can stick around as wonder. Perhaps that's bundled into deep curiosity.
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.