218 comments

[ 2.8 ms ] story [ 200 ms ] thread
Another of these is: amateurs focus on code, professionals focus on the data model.
Amateurs would disagree
Clever architecture can almost always beat clever coding, languages and frameworks.
Speaking as a pro, or so I like to think, I'm not sure what you mean by data model. Are you simply talking about data structures?
Um...I think his point is clear? First, you understand your data, and decide how to represent it. Only then can you write code to work with that data.

Poor programmers dive into methods and algorithms, and then try to force their data to match. Which almost never works.

Pretty much. A manager early in my career would say “get the data model right and the code will write itself” and I’ve found that to be mostly true.
It wasn't clear. If he meant data structures then say data structures. If he meant something different or broader by 'data model' then I don't know what that was.

I value plain, simple code and equally plain, simple writing. I am becoming dismayed at the trend towards fancy labels on basic things. A while back someone talked about 'affordances' in C# which sent me into a tailspin because I thought there was some significant area of the language I'd never encountered. Turns out he just meant attributes and methods.

"Data model" isn't a confusing term, and "data modeller" is a profession. They work on data models.
"modeling your data" is terminology that I encountered before, not sure why you find it unusual /shrug
@pessimizer, @SuperCuber - So educate me. Let's base it on something I've actually done, a code analyser. For this you parse the code into an AST, and to deal with lexical scopes of declarations of procedures/variables etc. you have a stack of symbol tables.

So we've got a tree (the AST), we've got a symbol table for the current scope (a hash table of <id, info> pairs), and we have a stack of symbol tables (a stack).

A tree, a hash table and a stack. Those are data structures. What more needs to be added to this definition to turn it from "data structures" into a "data model"?

Firstly this is a serious question, secondly I have a great deal of experience of defining data structures to solve problems, so I can't see what adding an abstract term is doing.

You could say that the extra something is the specification/maintenance of the correct interrelationship between those data structures (and I'd agree), and there's a word for that: it's called 'code'. I genuinely don't understand what you're getting at and I'd genuinely like to know.

And no answer :-( It does rather defeat the point of discussion here if people say things they won't back up. I don't know if I've changed your mind, you certainly haven't given me any reason to change mine, so why post?
Unfortunately HN doesn't notify of replies need to go digging for then in "threads"

I'll give you an example from a ongoing side project of mine: https://github.com/SuperCuber/facto_rs/blob/master/src/model...

Hopefully the Rust syntax is not too much of a distraction here, but enough to focus on the `struct` and `enum` parts (an enum in rust can be "one of" the variants, like tagged union or sum type in other languages, or | operator in typescript). The project is a live wallpaper/screensaver that is a simulation of something like a combination of the games Factorio and Mini Metro.

I had in mind what I wanted to happen - a grid containing a rail network with trains running between different nodes.

What I call the model is the representation of the things in the code: I could store the train's position in terms of [float,float] and a facing Direction, but instead I choose to store it in terms of List<[int, int]> of grid tiles that it plans to go through, then an int for its current position in the list, and then a single float between 0 and 1 representing how far into the tile it's moving.

The two possible solutions have pros and cons, and there are other solutions as well that are equally valid I'm sure. In my mind, the process of "modeling your domain/problem space" is about deliberately thinking about these things and choosing what you think is the best.

I completely, fully get what you're saying and I've done this trade off between various data structures for a very long time, but my question wasn't about that, but the difference between data structures and data models. Put simply, it was a question of terminology used rather than technique applied.
I guess in the way I use it, choosing a data structure is about the complexity/performance of operations you're going to do with a collection of objects, and choosing a data model is more about the meaning of fields, and what entities and relations between them you have in the first place, sort of like `CREATE INDEX` vs `CREATE TABLE`
I think this statement is actually much more true than the titles' statement (for programming).
Yes! And amateurs focus on tools, pros focus on execution/getting it done.
Good data model means less code
What's wrong with being an amateur?
Nothing. What's wrong is choosing through arrogance not to rise above amateurhood.
Having a healthy mistrust of your work is good.

Thinking the next tool will make a difference when your customers don’t care what language renders the html and JavaScript can have it’s place.

People making comments on the code editor you use before using the mouse to select text like monkeys.
The number of times I've intervened on HN with someone for whom functional programming is God's answer[1] to everything and anything procedural suxx, it gets you down a bit.

[1] used to be OO but God moved on I guess

At the end of the day, it's about solving problems with the budget you have. You need the appropriate discipline to allow for maintainability and growth, but not to over-engineer.

Boring CRUD is faster and more sustainable than an abstraction that cannot be modified for new requirements. Or understood by future (perhaps misfortunate) maintainers.

One day your thing will become the tech debt for your organization. Write in a way the custodians of the future won't curse your name.

I've inherited systems where the original authors tried to be "smart": over-use of functional programming, "cute" abstractions, "powerful" mixins, layers of lazily-dispatched decorators. It's almost ways caused nothing but headache and pain.

(comment deleted)
I agree. And the budget also limits the time you have for thinking about a really good design rather often unfortunately. Choosing the right or sometimes no abstraction is key to making something that is extensible, readable and maintainable.

That said, starting out with the simpler concept, usually results in better composability of parts. This is especially true for pure functions vs classes which are not really classes but namespaces artificially made into classes because "OOP". In the end math wins, if you wanna call it like that.

Having started in functional programming before ending up in OO, I always noticed the web was more functional than object oriented and a great deal of work was expended extrapolating languages to the web though frameworks to often achieve such an effect.
I learned this lesson: focus on mastering the language and understanding the fundamentals of networking instead of chasing new shiny web frameworks.

Web frameworks come and go, but the language and network protocols are here to stay.

Learning the fundamentals does pay off in the long term. I've not worked on web apps for a long time but this week helped some junior colleagues set up a web proxy to do SSL termination and explain there's these things called caching servers that can vary and probably solve a lot of their performance issues. I didn't know or really have to care what frameworks they are using.
Ignore the framework wars, learn:

- data modeling - domain modeling - system design - managing complexity - syncing state - teamwork

Those never go out of style.

So true. Design of systems inherits and overrules in the long run, if there is a long run for a codebase.
The best frameworks are just formalizations of what worked for some people.

The worst are formalizations of what some commitee hopes will work.

Haha.

Understanding software based on it’s origin story is definitely one overlooked aspect.

Most developers could t hold themselves back for a year or two to see how much of a framework boils away or can be generalized more elegantly. It’s one of the best lessons I’ve ever learned.

It is not necessarily best to learn them in that order though. I think you need to model the domain before the data at the very least.
What are you going to master if you don't know your tools?
The things that are the same regardless of the tools like the fundamentals of breaking down the right problem to solve in the right way before seeing what the technology footprint to solve it might Need to look like.
An amateur obsesses over using the best web framework, a master can write a great website n any framework.

Of course whether this is an actionable insight is an entirely different question. The master at least partially has this ability because he has tried lots of different tools. But if you ever phase analysis paralysis over tool choice it's worth remembering that in the end the choice might not matter nearly as much as you think.

If you look at the best photographs of the 20th century, a great deal of them were taken with cheap point and shoot cameras. Then you have the legions of middle aged men with $20k in gear that are incapable of shooting anything other than trite cliches.

You also have out of shape middle aged men noodling along on $10k bikes. It's worth it for an elite cyclist to obsess over their gear, every small optimization is material to them, but until you're pushing against the upper limits of your fitness the gear isn't the thing you should be losing sleep over.

Reminds me of a friend who always goes overboard. $400 in drills and levels to hang a couple pictures in the living room. Doubt he's touched any of it since.

He also spent $1,200 on an DAC, amp, and headphone combo, then bought a $150 pair so he doesn't wear the nice ones out.

Amateurs obsess over writing blog posts. Pros over code.

The blog post is not wrong. It's just a tweet-length insight HumanGPT-expanded.

"Pros over code"? Was that deliberate? If so, nicely done!

(For those to whom English is not a first language: "Pros" is one letter away from "prose", and the parent is complaining about people who focus on blog posts. And "over" can be taken as "they are writing prose in preference to writing code". It's a beautiful twist of language, if deliberate. If not, it's a very nice coincidence.)

I dislike these generalizations. There are pros and cons to both approaches. Engineers who have used the same tool for a long time will often fail to admit there may be better tools out there to solve a specific problem.
> We obsess over these tools, treating them like a crush—a fleeting infatuation that momentarily captivates our attention. All of this is wasted effort and delusion.

Amateurs obsess over forcing binary choices. Pros over integrating the best of what is available into the continued mastery of their trade (I actually really dislike this kind of generalization/framing, so my tongue is planted firmly in cheek here).

I think there is some truth in the general message of the post, and agree that complete fixation on tooling is a sign of a lack of focus on what matters.

But I'm curious how the author believes the "tried and true" gained that designation, if not by trying things that don't work and returning to the things that consistently do.

There's a different failure mode involved in a complete dedication to sticking to the tried & true: blindness to the moments when real step changes occur resulting in something that is truly better than what came before.

I'd argue that a pro does spend time obsessing over tools, but is differentiated from an amateur by knowing when to stop. I'd also argue that framing these behaviors as things characteristic of "amateurs" and "pros" is not useful.

I like that specific loment of learning when you are using your usual tool but at one point you ask yourself "is this tool really neccesary? I think I'm using it because habit more than real utility"
> I'd argue that a pro does spend time obsessing over tools, but is differentiated from an amateur by knowing when to stop.

Well put. A more general statement (but less catchy) would be that “pros” navigate the search space more efficiently when evaluating tools.

I’ve noticed with myself that I prefer fewer tools now, and value maturity a lot more. When I was younger, I thought tool makers were near-perfect, and the few imperfections would have no impact on lowly me. Then I realized that tool makers are just regular people and that their tools are often poorly made, or too blunt, or too specific.

Now I know tools come with pain, so “looks nice” or “cool” is no longer good enough. Instead, the tool needs to be more useful than the pain it causes.

Which is considered important by interviewers?
Problem solving and approaches to it is pretty highly valued
Grinding Leetcode, it seems.
False dichotomy and flatly wrong, on both counts. Further, my favorite line: "It is real alpha to ignore the allure of novelty."
Anyone posting amateur vs pro is lost. Playing the same hype game.
This guy is clearly a pro. He quotes Seneca and Bruce Lee.
I bet Seneca could have beaten up Kareem Abdul-Jabbar.

Edit: actually now that Kareem is a writer, it would be neat to read him and Seneca writing together about how to beat up Bruce Lee.

Amateurs post sweeping generalizations about what's right, pros learn the nuances.
Just like the good writers, who hedge and qualify their every statement. It's the amateurs who make the bold claims!
> The true magic lies not in the guitar itself, but in the virtuosity of the musician who brings it to life.

Arguments like these are often used to defend unpopular technology choices, like (insert disliked programming language here). "A true master can use any tool!" And yet, I've never seen a professional guitar player use a cheap shitty guitar.

Not "shitty". I presume it wasn't cheap, either. He custom modified it to be exactly what he wanted, not to save money.
EVH Built it pre-success, when he was poor and the neck was bought as a binned factory second.
> Van Halen bought the body and maple neck (which was a factory reject) for $130 [...]. Van Halen was able to purchase the factory second body at a discount price of $50 due to a knot in the wood. The $80 neck had jumbo fret wire, and its truss rod was adjustable at the heel.

That seems to be pretty cheap. I agree he didn't do it to save money though.

Jack White was famous for using inexpensive guitars in The White Stripes.

https://www.guitarplayer.com/gear/i-always-look-at-playing-g...

Manufacturing is so good these days that even the cheapest guitars are pretty good. Justin Sandercoe is a well known guitar teacher on YouTube and he did a series where he bought the cheapest Amazon guitar ($60 IIRC) and went through a full setup with it. He and the guitar tech. were both impressed with how good the instrument was.

https://www.youtube.com/watch?v=-0SHE_xooyU

I guess that doesn't really contradict the GP, though, no? They said "cheap, shitty guitars". Sounds like Jack White used cheap, but not shitty*, guitars.
The second part of my comment argues that there are cheap guitars, but maybe the era of shitty guitars is over.
Nah, they were categorically "shitty", since they were not well made and a bit difficult to play.

"I’ve been playing the most difficult guitars to play all my life. But with all the changes I had to deal with—people I never played with before, two days of sessions in New York, two in L.A.—I didn’t have time to monkey around with antique guitars in that moment."

https://blog.evhgear.com/2018/06/jack-white/

I'm not playing guitar now, but from what I've heard, the knockoff Les Paul or Strat is almost as good as the real one.

Plus if it's stolen you just buy another.

>Jack White was famous for using inexpensive guitars

Which is pretty good evidence that generally professionals don't use cheap/shitty guitars. You don't usually become famous for doing the completely normal thing.

Parent means he was a famous example of doing that.

Not that White became famous because, or in any part due to, using inexpensive guitars.

And he was a particular prominent example, because he didn't just do it, he advertised doing it as part of his philosophy.

And he is not in any case the only example, tons of famous guitar players use cheap guitars, in stage and on records. They just casually use them, they don't make a point of it, unlike White.

I wouldn't be so sure.

The current nostalgia-driven market of guitars might distort our views of what constitutes a "cheap" guitar, and also what quality really means.

Lots of famous guitars had a "cheap" phase where nobody wanted them and they were left to rot on pawn shops before being rediscovered by some famous musician and becoming coveted again... that happened twice with the Les Paul (first with Clapton, then Slash), and then with the Jazzmaster/Jaguar/Mustang (thanks to hundreds of indie musicians).

Also, there were plenty of famous people playing student models: The Gibson Les Paul Junior/Special/DoubleCut played by Keith Richards, Johnny Thunders, Billie Joe Armstrong, Leslie West. Joan Jett played the even cheaper Melody Maker model. Also Danelectros made of kitchen countertops were played by Jimmy Page, Syd Barret.

Kurt Cobain had a Univox Hi Flyer era, and then a Mustang era. Always played cheap Japanese Stratocasters instead of the more expensive American ones.

Almost all of those guitars above were considered undesirable, antiquated and hard to play sometime in history. Especially in the 80s era of superstrats. Now they're expensive because they were played by rockstars.

This phenomenon still happens with almost every piece of gear. Josh Homme of QOTSA revealed in an AppleTV show that he'd play a cheap low-quality Peavey Amp an now this amp costs 10x what it did.

Bruce Springsteen has used the same 'bitza' guitar which he bought in 1973 for almost the entirety of his career.

[1] https://www.rollingstone.com/music/music-features/bruce-spri...

He's a singer-songwriter though not a virtuoso guitarist.
That wasn't the position of the goalposts.
Which is irrelevant, and wasn't part of the original claim. He still made his livehood singing and playing guitar to tens of thousands of people at a time.

Besides, virtuoso guitarists also use cheap inexensive guitars all the time. Some examples, out of the top of my mind:

Prince, a big virtuoso, favorited his "Madcat", a Tele clone he bought for like $50 dollars.

Eddie Van Halen often used cheap Teisco guitars.

Mike Rutherford (the Genesis guitarist) used mucho-cheapo Squier Bullet guitars (Fender's cheapo line) for Generis 2020 live tours.

Marillion's Steve Rothery also uses a Squire as one of his main axes.

The Beatles were also known for using cheapo guitars like Epiphone Casinos.

The hivemind advice is to use a cheapest tool for learning when you're just getting started.

...and I strongly disagree with it. I think if you are serious about learning, you should get a reasonably good one from day 1 (if it doesn't hurt you financially, ofc).

Shitty tools can sometimes waste a hefty amount of your time. Anyone who ever paint watercolor on papers that are not for watercolor knows what I mean. All the time you could've spent on... guess what, practicing.

I've seen that advice about (electric) guitars too, and it's so wrong. A cheap shitty guitar will feel awful to play, have problems staying in tune, etc.

If you're at all serious about it, I'd go straight for one of the $1000+ flagship guitars. Go to a shop, figure out what you like, but absolutely don't waste your money on garbage.

Genuine question, when did you learn to play? Even 10 years ago entry-level solidbody guitars where quite good, and they keep getting better. Things like CNC manufacturing, tighter tolerances etc. really improved the quality of the average instrument.
I think you’re basically fine with anything $500+ these days tbh. I say this as someone who owns multiple $1000+ guitars. You might get incredibly marginal gains in playability, sound, etc, at that price, but realistically my $500-$1k guitars are all completely capable instruments.
For a beginner a $500 instrument is way overkill. An affinity squier, yamaha pacific, or a variety of epiphones are available for half of that, and are more than capable for beginners.
I can’t really speak to the other brands, but the Epiphones under $500 start to, in my experience, suffer from pretty meaningful playability issues- and I’d argue that’s even more important of a problem for a beginner.

I’d definitely not recommend going below $500 if possible. That’s price as new, btw. Used guitar is a great option.

I agree in spirit, but the $1000 price is wrong.

There are brands like Harley Benton producing amazing €200 guitars.

I have one that I like as much as my two Custom Shop Gibsons... and it is vaaaaaastly superior to my Gibson SG Standard in terms of quality and playability.

Also the $1000 price point is a very awkward price point, IMO. Not that much of a quality jump compared to $400/$500 guitars, and proportionally not as good as more premium instruments starting at $1500 and up.

Due to manufacturing variability, a cheap Squier can be quite good or quite bad.

If you have the ability to tell the difference, you can get a quite good Squier by playing many Squiers in different shops and picking the best one you find. You can save a lot of money this way.

I think a lot of people tend to stick to the cheapest tool for far too long. However, starting cheap is a great idea. I've tried things for a few weeks that didn't stick, and was happy not to have spent the money.

Instruments and art supplies are a good example of this: a $100,000 violin is a lot better for your playing than a $50 one, and a professional miniature painter I watch on YouTube likes brushes that are $50-100 each (over a 40 year career, that can easily mean 6 figure spend as those wear out).

IMO once you can hear/feel the quality difference (or worse, spend time rectifying it), you should switch. For some things, that can take weeks or months, while for others it can take years.

In instruments, going for the absolute cheapest one is almost a recipe for disaster. I don't know about violins, but I had piano classes a decade ago and now I'm with clarinet classes. In both cases, the cheapest option would have push me away from the instrument. In pianos, the cheap electric ones are very crappy, usually don't have the full key range, the weight of the keys is non-existent, and sometimes even the size is wrong, not to mention the sound. For clarinets, you can find ones for less than 100 dollars on Amazon, but they sound like crap, the keyboard is fairly bad and they fight you when you want to make a decent sound. If you buy one of these, the most likely outcome is that learning is so hard and unrewarding that you end up abandoning it after a few months.

Usually the best idea is to start out with the entry level range of established brands. I'm not up to date on pianos, but for clarinets that's $500 minimum. Yes, it's more expensive, but if you have at least a basic commitment to learning it's going to pay off. The other option if you aren't sure is getting a loaned or rental instrument, but please don't buy cheapo instruments because that's just throwing money down the toilet.

I am a pianist, by the way. My current instrument at home is >$50k but I play a lot. My starter instrument years ago was $1000, and was a great starter upright.

If you're learning the piano don't get a keyboard. Just don't.

Depends on your age:) My dad lent me a beat up old car to go to college and I smashed it to bits over the years. I took very good care of my first car when I bought it with my own money.

Regarding tech, it’s good to go with the industry standard, learn why it’s the standard, and go from there.

Jaco Pastorius famously played a Fender Jazz Bass from which he removed the frets with a butter knife, then sanded down and finished with marine epoxy.

Then it got broken so he had it restored and kept playing it.

Many touring or pub musicians play a plain old mass produced guitar, because if anything happens to it (for example, when flying) they can just pop into any music store in whatever city they are and get another for a reasonable price.

Was a Fender Jazz Bass a cheap instrument, or just a non-expensive instrument?

I think there’s the gap between the most overpriced gee-whiz prosumer device that they’ll try to sell somebody with more money than skill, and an actual professional device.

I also think there’s a space far below the actual professional device, the space of brands that the professional might not even think about—stuff that exists to trick people who just stopped by the store or who are shopping for their kids.

Which gap you have to worry about falling into depends on the type of device.

No idea about Fender's quality range in Jaco's time (although to be fair, Fender was the original electric bass and there were fewer options overall in the 70s), but nowadays Fender basses vary quite a bit in price/quality depending on what line you're getting. At the cheapest end you have their Squier line, and then you have MIM/MIJ (made in Mexico/Japan) Fender basses, and at the top of the line are American-made Fender basses, which have their own price variations. But even the most expensive Fender basses pale in cost compared to like, a Wal.

I think what's notable about Jaco is less that it was a Fender and more that (the story goes) he DIY'd his fretboard with a butter knife. So the point of comparison would be between someone today, who feels like they can only get a good fretless tone if they go out and buy a fretless Wal for $10k, versus buying your own Fender for less than a tenth of that modifying the fretboard yourself—just like Jaco did.

Of course it was a good instrument, and it was made in the US with good materials, so it couldn't be the cheapest. It wasn't a Sears or Silvertone bass.

But it was still an off-the-shelf instrument that was mass-produced in order to be less expensive. I bet that virtually every instrument used in a professional orchestra at the time (except the tiny stuff) was more expensive than that bass.

Robert Smith and his Woolworth's Top 20 electric guitar.
I don’t know if you’ve over qualified to the point you can’t lose (“shitty”), or if this[0] counts. I thought Peter Buck (of R.E.M., most associated w Rickenbacker) might have worked w a Sears guitar too (he might have, but I couldn’t find a reference), but he apparently used a Sears Silvertone amp as a regular piece of his gear[1]. Is buying from a Sears catalog good enough to qualify as “use any tool”?

This is also glossing over the garbage and hand-me-down crap that many grow up with on their way to becoming experts.

[0] https://www.guitarworld.com/features/pro-guitar-players-who-...

[1] https://equipboard.com/pros/peter-buck

>And yet, I've never seen a professional guitar player use a cheap shitty guitar.

Professional guitar players use "cheap shitty guitars" all the time. From the Beatles to the biggest stadium bands, not to mention people who make it a point of pride to do so, like Jack White.

Electric guitars (and basses) are pretty simple instruments, there are only 3 things that affect the sound you get out of it: the pickups (and how they're placed), the strings you are using and the setup. Everything else is quality-of-life improvement rather than sound improvement (assuming the instrument is at least mostly competent and doesn't have frets placed incorrectly or some internal signal processing that destroys the sound). However, for acoustic instruments, you certainly get what you pay for. You really don't often see professional violinists or classical guitar players using cheap instruments, as the quality of the instrument affects the sound to a much higher degree.

Most tools are quite similar to this, professionals know what they are looking for and don't need to get the most expensive or advanced tool, except in cases where it is absolutely necessary for optimal performance. They know the key things to look for to get the best performance out of the tool and the other characteristics they choose according to their preference or customize as needed.

https://www.youtube.com/watch?v=n02tImce3AE

If you're interested, this is pretty fascinating - he shows experimentaly that the guitar itself has little to do with tone.

Other than that better made instruments could (no promises!) hold their tuning a little better, but you can cheaply buy locks or spend some money having that re-done.

More than this and I have a hard explaining what a "pro" guitar could do to help an amateur. You get the same tones out of it, pedals and amps have much more impact on sound anyway.

And seriously, unless you have musical training, you'll never hear the difference between epiphone and gibson, or squier and fender.

Kurt Cobain famously played cheap shitty guitars because that’s all he could afford but also the overpowered humbucker helped him develop his famous tone. He wrote some famous songs with them. Univox Hi-flyers to be exact. He went through a ton of them and they were about $100 each. He even played them after he was wealthy.
Yes, think about this when you hear the next discussion about vim vs emacs
It's a bit of a platitude, IMO.

You can find plenty pros that obsess over tools. Like look at Adam Savage's Tested youtube channel, in which he makes videos surrounded by a vast mountain of tools, many of which he made or customized himself. Recently he geeked all over the fractal vise.

The difference I'd say is that pros have a better understanding of what they need, don't expect tools to magically solve problems, and often customize or even make something from scratch.

I think you’re 100% on point here.
As an amateur my experience is that having the exact right tool for a job is way better than having the very best quality of the almost right tool.

Also for tools with consumables, the quality of the consumables matters way more than the tool that you put them in.

>Also for tools with consumables, the quality of the consumables matters way more than the tool that you put them in.

I fully agree. I wasted hours dealing with brad nails that didn't go in all the way, only to bend over when I tried to nail set them. Paying more for Brad nails fixed the issue almost entirely.

I'm not sure I agree. Eventually your garage is totally full of exactly the right tool for some job or other and you can't find anything because there's tools in the way.

It applies to software too. If all of the complexity in your project is placing the perfect tools and configuring them correctly, you end up with a codebase that's 90% tool-specific and even coders that think they're fluent in your language of choice have a steep learning curve if they're gonna work on your project because the complexity is no longer in the project's alleged language, it's now in 15 separate DSL's that they've never heard of.

There's a balance to be struck here.

I see this especially often in python projects with complex pre-commit configurations. It's like we secretly need that compilation step, even if our language doesn't strictly require it, and it just becomes a rug to hide overspecialized complexity under.

> I'm not sure I agree. Eventually your garage is totally full of exactly the right tool for some job or other and you can't find anything because there's tools in the way.

Frequently it means you can do the thing at all.

I will not use my snap ring pliers again this year. Or probably next. But I am never throwing those goddamn things out because trying to do tasks that require them, without them, is impossible. And I will not get a lot of forewarning when my planer decides it's time to blow a bearing.

But they're $10 snap ring pliers from Harbor Freight, not $50 Knipex ones. Get the tool to do the job, worry about the nicest tool if you do it every day.

Having a cluttered garage and having the right tool for the job are completely unrelated.

I’m not 100% following the discussion, though. Most software work can be done with vi and nothing else. Working with your hands, on the other hand, requires snap-ring-plier specific tools.

If your garage has room for 100 tools, and you do 101 jobs, each which requires a niche tool, they become related on the 101st job.

That is, unless you start finding other garages for your tools, but even then you're paying a too-many-tools overhead cost.

With hand tools it's a little harder to sell people on a tool that only does one job, so you'll reach that point more slowly. Maybe it's the 201st job. But if you look at the explosion of languages, libraries, an SaaS offerings for everything under the sun, it seems that the tech world is more than capable of overcomplicating your stack with a 1:1 tool/task mapping.

My solution to this problem was to join a makerspace collective. Now if I lack the perfect tool for a job there's a good chance the makerspace has it. If not, I buy the tool and leave it at the makerspace and my garage contains only the tools I use all the time.
I'd say an expert is the one knowing how to use a tool for multiple jobs, and do wonders with a minimal toolset - not needing "the exact right tool for each job".
Agreed. Pick 4 languages, 1 each for:

    - Front-end (JS)
    - Scritping (Python, Ruby, Perl, PHP)
    - Applications (Java, C#, Kotlin, Scala, Clojure)
    - System (C, C++, Rust)
That is all you need. A true master can do a lot with the 2 "worst" languages - JS and PHP.
Languages are turing-complete.

Tools are not.

Example: there are some shapes you cannot physically create as a single unit with a milling machine; they can only be created by additive deposition methods.

Or more simply, while you _can_ screw in a star drive screw with a very improperly used hex driver, you probably shouldn't.

Even more simply than that: if you need to unscrew a screw, using a hammer probably won't work well. Which is why that saying about a poor craftsman blaming his tools is BS: if you're given the wrong tool, you're not going to be able to do a good job.
I've never heard that saying used in a wrong way like that, about a tool that is just wrong; it's not BS if it's about someone claiming their nails are wonky and the surrounding surface marred because of the 'crap' hammer they used, for example.
Sure, but that's not what the saying literally says. It says "only a poor craftsman blames his tools". It makes no mention of the tools being actually fit for the purpose. They should have specified that.

And even if it is the "right" tool (a hammer for a nail), what if the hammer is a plastic kid's toy?

I think this saying makes far too many implicit assumptions about the type and quality of the craftsman's tools.

It's just to me this seems like taking issue with 'the proof of the pudding is in the eating' because sometimes what I'm eating isn't pudding, and some people don't like pudding at all. All sayings have some implicit context or scenario in which they're applicable.
I suppose so, but for some reason that particular saying rubs me the wrong way. With 'the proof is in the pudding', I can get the meaning, and you could substitute any food. It just means (if I understand correctly) that if someone makes good pudding, you can tell it by eating the pudding. Even if someone doesn't like pudding, they know some pudding is better than others, or can substitute some other food-of-choice here for the same meaning. I don't think the craftsman-tools saying works the same way. For instance, it leaves me with questions like: are the tools actually selected by the craftsman, or were they forced on him by someone else? The pudding saying just doesn't have all these complications as far as I can see.
A lot of pros also enjoy Project Farm's YouTube videos, which compare and rate tools from popular brands.
look at Adam Savage's Tested youtube channel, in which he makes videos surrounded by a vast mountain of tools, many of which he made or customized himself.

While I don't dispute Mr. Savage's acumen, I wonder what the number and complexity of his tools would look like if he worked in private, instead of the glare of internet fandom.

Most of the tools in his shop he had before opening it up to the fandom at large.

Remember: he’d been a pro at this stuff for years even before Mythbusters & the Tested stuff was (mostly) after that ended. He had 25-30 years of professional AND professionally-informed hpbbyist experience to build that collection

youtube is probably not a strong argument but the recent fireball tools video about his welding table and jigs was pretty comvincing, even though it was an undisguised promotional work designed to convince.

(He submits a basic job to 3 diffferent class of pro fabricator shops, and has one of his video producers do the same job with no help (supposedly) but with his tools, and that one is the only one that adhered to the specs.)

I would like to see that same experiment reproduced by other people because if it's true I think that is a very important thing to know which would change how you approach things your whole life. You could obviously chase after awesome tools right now anyway, but it would be huge to know that it's proven to be essentially 'best practice' to do so rather than just your unfounded feeling that no one else, like your boss, is obligated to consider.

I'd say there are two different types of "obsession" here. One is the attitude that that you need to use the best tools possible and by doing that you will get a good result. The other type is old fashion geakery. If you look at Adam, he is two things: a maker, and a tool geek. These aspects certainly intersect, but when he is making things, you do not see him reach for the most sophisticated tool in his toolbox. A great example of this is this video [0] where he geeks outs over his new measurement tool: guage blocks (and corresponding guage). The thing is, I don't think I have ever seen him do a build where he uses them, because they are simply beyond what his work demands.

I'm a similar way with programming languages. I'm a PL geek, and enjoy geeking out about the fine details of various programming languages, and pointing out flaws in langauges. But, at the end of the day, when it comes time to pick a language for a project, I typically reach for a combination of Java/C++/python/m4. There is nothing to geek out about those languages (except for how bad they are), but pragmatically speaking, they are typically the best tool available for very boring reasons.

[0] https://www.youtube.com/watch?v=qE7dYhpI_bI

Meanwhile if you look at someone like Ken Parker ( https://kenparkerarchtops.com/archtoppery#new-page-1 ) you see someone who does obsess over the best tools _and_ the best process.

Now, admittedly, Ken Parker is a lightning rod for disagreement, but you can't deny that he makes a well-made product.

For the uninitiated, could you please tell me more about him being a lightning rod for disagreement? I hadn’t heard of him before.
I had not heard of him either.
> Java/C++/python/m4

One of these things is not like the other. :) I'd love to learn why you included m4 in that list.

Because I've ended up using it in almost every project I'm involved in. By all rights, m4 should not be a good tool for anything. It has no type system, no syntax checking, no debugger, no namespaces, no real notion of atomic literals. But, it just kind of works for a bunch of situations. Basically any text based format you have can utilize m4 as a pre-processor.

Typically it comes up during integration work, where I am dealing with various technologies from various vendors for various clients in a single project. M4 ends up being a glue language for "compiling" configuration files. Where possible I prefer to use a more proper templating engine like python mako, but those are not always a good fit.

I've also used M4 as a way of implementing DSLs, which is great as long as you are fine with your DSL inheriting all of m4's problems. I've also used it to help write bindings and other highly repetitive files.

M4 seems to fit that niche in between gluing strings together and full blown Python string templating that works in a surprising amount of situations. I use it a lot, especially when templating config files in containers.
It’s the best size of machine screw
An overlap of the two obsessions: recreate something historical with only the tools available at the time.

Clickspring's ongoing recreation of the ancient Greek Antikythera mechanism, starting by recreating many of the original tools likely used to build it historically (and contributing to academic research on the details of the system as he goes along!), is an incredible example of this (and altogether an amazing channel): https://www.youtube.com/playlist?list=PLZioPDnFPNsHnyxfygxA0...

Adam Savage is also creating content, and you have to nod to the people most likely to be consuming content at times.
> There is nothing to geek out about those languages (except for how bad they are)...

I would go so far as to say that if someone doesn't at least somewhat hate the tools they are using, they probably don't know much about either the tools or how to use them ;P... regardless, at the end of the day, we still use our broken tools anyway; and so like, to me, if I see someone going on and on about how amazing their tool is, I immediately classify them as an amateur: they will eventually hit the limits and become sufficiently jaded to stop praising anything!

it's a great point and looking at various YouTube pros I think it's necessary to add a one more type of "obsession" to the list - a commercial one. Thinking about the way YT works a lot of geekery is either related to attracting sponsors or appealing to audience taste to benefit from the ads.
While I do not disagree in general – things not being black or white is probably correct – I think in Mr Savages case you could argue that knowing how to geek with/over tools is the mastery part.
I think there are two ways to "obsess over tools". One is to obsessively research and build your collection and sort of superficially admire your collection. Another is to bring in and master the tools one by one, driven by the needs of your process, and find meaningful places for each in your process. In essence, the former is cargo-culting the latter and they look similar from a distance.
For me, tools capture the experience of someone else in a way that typically expands my own skills. They include little features/details that I wouldn't think of on my own. That's particularly true with software tools where non-obvious edge cases are abundant.

I want tools that carry mental load for me, so I can focus on delivering maximum value.

This reminds me of a fascinating interview with Trey Anastasio (an absolute master of electric guitar tone and effects and loop pedals). His take was, while quality matters, you don't need the "best" gear -- but it's essential to really truly deeply know the gear you do have inside and out, so it can get out of the way and simply be an extension of your instrument.
I have found Gall's law to be a corollary of "mastery before tools":

"A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system."

i think the main difference is a pro can grab a cheap tool or make one from scratch to complete a task, whereas an amateur will hesitate to do a task unless he has the "best" branded tool
But who focuses on the adage?
(comment deleted)
From a pianist perspective, when I was in college I played at a restaurant with an old beat up grand piano. I’d constantly complain about how bad it made me sound. Then one day I went to hear one of my mentors play on said piano. He sounded great. It was a pretty vivid demonstration of this principle for me.

One thing though, is that this title doesn’t paint the idea of amateurs with a great tone. Nothing wrong with being an amateur since it really means to do something for the love of it. I think pros need to be careful not to lose their amateur mentality wrt to the love.

All my major successes in life have come from curiosity followed by perseverance.
I heard great name about tool obsession: “tool junkie”. , as I’m too guilty of it.

I suspect that for the brain the dopamine reward for spending time at more or less passive researching and coming to conclusion that zzz is the best is faster that grinding for becoming master

You must choose your tools before you can master using them, it's not an either or.

As an amateur woodworker, I can tell you that the quality of tools can make all the difference in your enjoyment. You absolutely will notice a difference in the quality of your tools. Quality tools feel better in your hand, almost like an extension of your body. They cut cleaner and with greater accuracy. They are less likely to strip screws. They are less likely to break causing you frustration and an unwanted extra trip to the store.

There is a point of vanishing returns. You definitely have to determine what level of quality you actually need, but Makita 18V cordless tools are a massive step up from their no name Walmart equivalents.

As a likewise amateur woodworker, this resonated - up to a point. When I started in the hobby, I spent a lot of time in the accumulation phase which mostly consisted of buying cheap or second-hand tools to unlock specific capabilities. Just having a table saw (even a cheap one) allowed me to build a lot more pieces, more quickly. This is a seductive step, as each new tool (router, bandsaw, jointer, etc.) earned me a whole new capability and new options.

After the initial excitement, I settled down into the optimisation phase where I started learning how to get the best results out of the tools I had. This involved a realisation that just having a tool doesn't automatically confer mastery with it, and that you need to put in the time. IMO this is the step where you learn the value of a "good quality" tool, i.e. you identify any friction or frustrations with the cheaper tools you have. You also identify which ones actually get used, therefore which ones are worth the upgrade.

I feel like the optimisation phase blends slowly into the "mastery" phase over time: you switch over to thinking about design instead of execution, workflow optimisation instead of "how will I build this", shop organisation instead of having as many tools as possible on hand. Mastery is the decision (conscious or otherwise) to get the best out of your tools, rather than having the right brand.

Amateurs don't get paid. Pros do.

Sometimes pros get paid for having automated minions generate content.

Was this short piece AI-written? There are lots of strange artifacts that I'd not expect from a human author. Like the fishing analogy with a goldfish.

It didn't sound like blogspam to me, while most LLM generated text does.