Woodworking as an escape from the absurdity of software
alinpanaitiu.com
alinpanaitiu.com
Most big companies are not good if you want to solve problems and build stuff. Especially "the enterprise", where software is seen as a cost center so the less of it the better. The effort of managing up eats a creative person's soul.
I want the clarity of being able to talk to "the boss/the customer" and solve their problems and get paid the market rate for my skills. Not prepare endless PowerPoints for my skip-level, who has no ownership but has to act in their own best interests in a swamp of principal-agent problems.
This is why I am very happy at a fast-growing small tech company where one can have honest conversations about the customer and the product. How do other people deal with this?
Of course you can go looking again. But why not look for a slow-growing or not-growing small company, so you don't need to go looking so often?
There are other issues with slow-growing or not-growing companies. When the company is not growing, people are incentivized to take a zero-sum approach to their work relationships. If the pie is not growing, you need to guard your own slice and take from others. This creates a toxic environment. If the company is growing, then collaborating on growing the pie can become the shared attitude.
With woodworking, you can just do the thing. OK, I don't do woodworking myself, but both of my parents do, and I know that they don't spend their time bikeshedding or homogenizing their work. The tools they use are intended to help them accomplish something and aren't there to prevent you from doing anything.
It's possible to do personal software projects however one wants, but one will no doubt be faced with the modern compulsion to want to "do the right thing" and add a bunch of time wasting tooling. If you don't, and you share your code, inevitably someone is going to want to add a bunch of rules and bureaucracy to your software that was already working and free of serious problems in the first place.
I absolutely agree that consistency, in principle, is usually a very good thing.
My objection is to the idea that it's always a good thing, which it's not. Treating code formatting as rules rather than suggestions, in my experience, is a waste of time and unnecessarily tyrannical.
In terms of mere code formatting, I don't buy that there's a meaningful difference between 100% consistency and say 95%.
It's far more important that APIs and other conventions are consistent. When constructs in the code aren't consistent, it can be an absolute nightmare. When code isn't formatted well, it's usually just annoying and can be trivially fixed with automation.
What I absolutely detest, is any kind of code formatting comment on a PR. If it cannot be enforced automatically, it’s not worth arguing about, and definitely not something to hold a PR up for.
I think you are contradicting yourself a bit with
> Programming should actually allow for creativity, and where you decide to add spaces and newlines can actually add subtle but important communication as to the significance of a particular part of one's code.
The point being that something small might have significance to one person but not the other.
And that consistency is probably important, but there is a difference between consistency of your stuff and consistency between your stuff and stuff of others.
So I think what it boils down to is that crafting hobbies are often more fulfilling not (only) because they have tangible outcomes, but because you can do them on your own and on your terms.
If you were to do woodworking where you craft one piece of a bigger thing (say a part of some larger furniture), you would also have to produce very homogenic and precise output. And it probably would not be very fun and fulfilling.
Yeah, that's totally fair. I think conversations can be had with such cases, and I think that trying to effectively eliminate the conversation is a bad thing, which relates closely to my overall objection. Ironically, it ends up in conversation anyway unless a developer is always a good little goober and never marches out of sync.
Maybe my mindset would be different if I saw great software around me, but I see mostly crappy and user-hostile software these days. I'm not sure whether strict formatting "standards" is of meaningful benefit for the users.
> If you were to do woodworking where you craft one piece of a bigger thing (say a part of some larger furniture), you would also have to produce very homogenic and precise output. And it probably would not be very fun and fulfilling.
Yeah, I guess you've identified where my thought in response to woodworking falls apart. haha If it were one's employment, it could indeed be as confining as being a programmer at BigCo.
Yes.
> If a rule can be written into a linter, simply have it automatically formatted and never argue about it again.
That is unless one believes to have good reason to violate that rule, in which case suddenly time is being spent having practically the same conversation in this part of the thread that I started.
If everyone doesn't follow the standards all the time then there are no standards.
Code is not art, it's instructions.
If you can't write instructions without adding your own avant garde whitespace brush strokes to it then yes coding for a professional company may not be your jam.
I'll slightly disagree here because code needs to be read by a computer and by your human teammates.
There are times when I'm frustrated because prettier is making a necessary but unintuitive choice and causing my code to become harder to read. But those are rare, and I would never trade them for the guarantee of readable code the other >99% of the time.
Again, maybe I came off as more extreme than I actually am, because I think that consistent formatting is a very good thing most of the time, but that last 5-10% that programmers in positions of power fetishize is where things can get frustrating and time can get wasted.
The worst is when linter rules are used for things that should be evaluated by a human being in code review. At a previous workplace, someone thought it was a marvelous idea to try and enforce things like functions having no more than 6 lines or some other poppycock. My current workplace is OK, but even then there are some stupid rules like not being allowed to assign `this` to a constant, even though the function in-scope is being re-bound by some stupid middleware making it impossible to use fat arrows or `.bind` (in JavaScript). Sorry, but I'll assign whatever the f*** I want to a constant that isn't escaping the current scope in any way. What's also funny is that I've never worked anywhere that didn't have `eslint-disable` sprinkled everywhere. In many cases, these rules should be warning instead of errors, but because programmers love errors for some reason, virtually every rule violation needs to be an error.
Well I'm quite proud of having owned a certain repo at work which takes exactly this approach. If I have to disable a rule more than once, I take a good look at whether we need it at all, so we have extremely few `eslint-disable` comments in the entire codebase. It's one of the cleanest and most transparent codebases I've worked in -- but that's also an artifact of me spending long stretches working in it alone and having little oversight of how I spend my time. So there's a tradeoff :)
But they don't see value in warnings. Either you have a problem that needs to be fixed or you don't.
I still don't think that makes it art and this is why: art can't be simplified. Code can.
Take that to it's extreme and you see that code can be simplified down to nothing without anything being destroyed. Art can't.
Maybe you could say that the act of programming (or simplifying) is an artform, but that's not what we're talking about here.
We're talking about the product of that process, which is just instructions to accomplish a task.
I disagree. The thing being destroyed is readability and common understanding with your fellow programmers.
That tells me that the code itself is not important; the task/instructions the code performs is the important part. Therefore code is a utility, not an artform.
Yes I want written instructions to be understandable to humans, so my code conforms to tool-enforced formatting standards 100% of the time, not subject to artistic interpretation.
This is one of the major differences between hobby programming and work programming. When you're writing code as a hobby, it can be anything you want: code can be art, instructions, math, beauty, a means to an end, an experiment... At work, code must ultimately be a tool that creates profit. It has to be manageable, consistent, and boring.
That's how I like to see code. I don't want to struggle to figure out what you're trying to do. I want to be able to read your code and understand it easily and get on with what I need to do.
The opposite of this, keeping the medical context, would be the orthopedic surgeon who was so excited about how badly my then 25-year-old wife had smashed her wrist. "I never see this much joint damage in someone so young. It's incredible." Not words you want to hear from a doctor!
How can it be a waste of time? The whole point is to avoid wasting time talking about formatting on PRs or seeing line noise on PRs because people have slightly different preferences or settings for code formatting.
But my issue with formatting, while great most of the time, is that sometimes I want to violate it, and tooling around automatic formatting and format validation is usually installed with the intention that it is 100% correct all the time. Sorry, but as a senior programmer, sometimes it really should be up to me to decide whether code belongs on a single line, and I don't want to fight against automatic formatting or the CI pipeline throwing a hissy fit when I desire that discretion.
Being a senior eng isn't about always knowing what's right, it's about knowing how to keep the team moving efficiently.
Shouldn't all the lines of code uploaded in a pull request be automatically formatted into the coding style preferred by the reviewer anyway? It should be like an automatic translation done by some bot or something.
It could obviously be done, but involves a yak shave that isn’t clear that it brings enough value to be worthwhile.
If it is formatted to the formatting rules before every commit, how can there ever be formatting opinions?
What am I missing?
For linting (e.g. eslint in the JS-space), this is also possible, however, most linting-processes tend to run just long enough to be annoying when run on every commit. In the monorepo I work on we created a command "prep-pr" which specifically addresses this issue - run it before creating a PR, and the CI-pipeline will mostly be green, at least in terms of linting/unit-testing.
If you use a programming language that affords some guarantees like Haskell or even just C#, people seem to be less interested in linters.
It’s not necessarily a weakness of the language.
Languages like Haskell, C#, and Java don’t have the same amount of expressiveness as js, python, or ruby, so they don’t benefit as much from a linter, though I know places that use one for C# to prevent usage of the ‘var’ keyword
And enforcing new lines on else or catch after the brace, completely different to the language guides.
It looks a fucking mess.
For larger projects however, not having tooling set up that enforces certain consistency is an absolute showstopper for me. I'll either introduce it or I'll quit; I simply do not want to waste my time with developers squabbling over arbitrary formatting-choices or irrelevant coding-style-details that can easily be enforced by some tooling.
Of course, developer-experience is paramount. Meaning, the tooling must be easy-to-use and generally not stand in the way. Otherwise it can indeed create a lot of friction which will annoy everybody. But once this has been set up (properly!), it will make a lot of silly discussions and choices obsolete.
Some consistency in a codebase is good. Naming consistency. Indentation. But people go too way far with it. Who cares if your JavaScript makes consistent use of semicolons? It doesn’t matter. It just doesn’t matter.
Right?
Carpentry isn't my jam, but I've taken up piano. I love it.
:deep breaths:
But I think the biggest thing as I move up and spend more time reviewing code than writing it...style preferences make it so much easier to review code. Linters have given back years of my life at this point!
I would not be a fan of commit hook auto-formatting.
Nice. It adds a bit of spice to your git-bisect bug-hunting, to keep you on your toes.. Who doesn't like a good challenge?
Symptom of nothing better to do, I have found ;)
Hard to picture someone who values their time blocking PRs on tiny stylistic nits.
And indeed that’s something I’d apply to software: both hobbyists and small companies are tempted to use professional tools (as in, intended for lots of engineers collaborating) for small projects or a low number of collaborators that don’t warrant such stringent rules.
Ignoring hand tools, which give you precise, tactile control ... I'd still argue with this.
There are tools for specific things and they're meant to reduce error. But a router (woodworking) can be used to do half the stuff you want/need to do. A table saw can make straight cuts, rabbets, joinery.
The tools themselves (outside of specialty ones) are generally multi-purpose and allow for experimentation and creativity.
OP's complaint is about syntactical differences and that's just because his team doesn't agree with him.
And tbh, to me, the fun creative part in programming lies in architecture, not how I space my code. With woodworking, the creative part is how I put it all together but not the actual cutting part.
Trying to de-romanticize it means you have absolutely no idea what motivates most of us.
Signed, someone with restored antique Stanley wood planes, Japanese saws and who drools over Lee Valley product reviews.
I spent a lot of time searching for and restoring old tools. I finally realized I was spending way more time on the tools than actually using them.
If you had a Woodcraft in town you’d only go to Rockler for things you can’t find at Woodcraft. Which is largely cabinet-making and air handling equipment.
Lee valley and veritas are mostly making reproductions of golden age Stanley tools before the race to the bottom (what the kids call enshittification) started, with a few omissions or improvements. They aren’t garbage, they’re low volume. That makes them less appropriate for people being paid by the hour or piece.
I went to rockler this morning to get a reamer because the only reamers at Woodcraft are for pen making. With the exception of big brands like festool or powermatic most of the tools they sell at rockler are not great tools. This reamer is not great.
OP complained about all the strict rules software engineers have to abide by, while woodworkers get to have all the fun with sharp tools, nobody telling them how to use them, and generally freedom at how they do stuff. But that’s precisely the perspective of a highly compensated person doing manual labor for fun, not the one of a professional woodworker. It’s like someone cooking fancy once or twice per week saying chefs have such a great job because they get to dice the onion the way they like. Ask any professional chef how well that works.
Something you do as a hobby will always seem more fulfilling, because it’s a hobby. Anyone doing it professionally very likely also has strict rules to follow, you just don’t know about them - because you’re not a pro.
Isn't this part of the problem? If the purpose of code is to be understandable, the important communications shouldn't also be subtle. Your intention that the extra empty line before a block of code signals "This is the important part" is likely to be entirely lost on a reader of the code (especially in a codebase where the formatting isn't consistent so those spare lines are littered everywhere). Much better to leave a comment saying "there's a subtle but important thing going on here".
Sure, but don't let perfect be the enemy of the good. Well-meaning engineers frequently don't document their code at all. It's why I advocate programmers at least use descriptive variable names and function names; what I call "self-documenting code".
It still falls short of well-documented code but, as I say, gets you "good".
Code has its own flow and natural groupings just like human language, and adding spacing to match makes it easier to understand even though it is subtle.
Thank you for that: "linters" (but as a person's role, not as a tool).
Pretty sure that contributed to my early retirement from the industry. It didn't used to be that way — perhaps because there were fewer cooks; perhaps because of a more cavalier, cowboy-style approach to coding.
I definitely preferred the days of the open range....
I don't think wood working per se gives you more flexibility than building software. It's wood working as an individual, not part of a team, so you can make your own decisions and not answer to anyone. If you were a one man software consultant you would have the same amount of autonomy.
Not that they can’t find at work. It’s actively taken away from them.
You get to choose the problem spaces and teams, which is a degree of autonomy. But it is not quite so free as “making your own decisions and not answering to anybody.”
I'd like to mildly disagree. Using whitespace to group functionality together in "paragraphs" and aligning the horizontal indentation in the clearest possible way is not too far away from editing a short story to make it flow better.
Earlier today my linter rearranged multiple "key: value" one-liners into two-liners and the end result is both objectively and subjectively worse.
Like, in Prettier, adding a trailing comma to a short list of items will tell the formatter to put each item on it own line, while removing the trailing comma will keep each item in a single line (if the line length is not too long).
I do not think that word means what you think it means
Sure - perhaps not plumb to within +/- 0.001 radians, but there’s still an expectation that the wall needs to be vertical within some error tolerance band (even if not specified). Error correction happens real-time - the cabinet guy compensates for the wall error, and so on.
That’s also why I find residential construction so shoddy (the US at least) - electrical junction boxes are always a little off-angle, cover plates aren’t flush, etc.
This is a take I don't think I've seen before. Is someone actually mad prettier is changing their single quotes to double quotes? Are they mad some line is breaking at some word?
Certainly I've never been. I use linters / formatters even when I'm working solo because the mere concept of having to think where to break lines is meaningless disruption from the actual goals I have.
If you _really_ want to break a line somewhere, just add a comment in between and your linter will comply.
Yes, both of these.
Obviously there are huge benefits to auto-formatting in large teams and popular open source projects, but some people also find benefit in having control of alignment, line breaks, indentation etc.
Before back-tick strings in JS, it was useful to employ both single/double quotes for strings -- you'd use one most of the time, and then if you needed to embed a bunch of that quotation mark in a string literal, you'd switch to the other one.
'my string'
'my other string'
"insert values ('foo', 'bar', 'baaz')"
A formatter with naive "single quotes only" rule would obliterate the last one to: 'insert values (\'foo\', \'bar\', \'baz\')'
unless you remember, before you hit save, to add a directive like: // linter pwease preserve my qwotes
I still use linters and formatters every day, and on balance I think they're good to have, but it's ridiculous to pretend they don't have downsides, or that there isn't room for the occasional dash of human intervention in the automation; hence, the linters which have // linter pwease directives.Linting is a bit of a different beast, because linting includes changes to the code behavior itself, not just syntax. In JS there are so many footguns, that linting can often be pretty involved/strict. I think most of the people who don't like linting in JS either aren't aware of the footguns, or don't do very much code review and haven't worried themselves much with "what sort of bizare and unusual ways can this fail" sort of a thing.
The only formatting that drives me up the wall is people using K&R braces in C# or Java. It's not 1970 anymore, and we're not all typing on green-screen terminals. It's like people fetishizing vim or emacs over modern IDEs.
All these are configurable (and not enforced by default but you can definitely do so with .editorconfig).
It is also fairly popular in C# to use expression-bodied members where they have just a single expression/statement e.g.
class Test {
public int Property => 42;
public void Method() => Console.WriteLine(42);
}AFAIK there is no rule in K&R requiring no braces for single-line blocks. In that situation, braces are optional.
The K&R style was hugely influential on Java and many other languages, it has nothing to do with green-screen terminals (I used those, as well as white and amber), it is just a style. I also moved on from vi, and use IntelliJ and Sublime most of the time.
The only difference between K&R braces and Java braces is that they combine lines on if-else. The Java guys did it because it enabled them to fit more code on to overhead slides. Overhead slide projectors predate green-screen terminals BTW...
These days they are pretty good at preserving vertical separation if it already exists and adding it if it’s missing.
Also it's helped keep unused garbage out of the codebase also, which people tend to leave in there otherwise.
Also prettier has helped in me no longer reviewing MRs where every single line shows up in a file because their local machine has a different tab indent set or a different way to handle newlines (like with or without carriage returns, IIRC).
Sure it styles some things that aren't my preference, but I don't have to do it myself, it just automatically changes it all, so I can deal with it.
And if something is especially annoying or causes issues, I can usually get an exception added to the configuration, at least on my current team.
They would if their woodworking projects spanned decades and involved thousands of other woodworkers.
For hobby or artisanal pursuits, homogeneity isn't the goal. Often the uniqueness is a feature. But for mass production or large coordinated efforts, uniqueness is a bug. You don't want your car to be manufactured by someone who just felt like a 3mm panel gap felt more right than the 4mm gap the specs called for. Standardization makes coordination easier and that's why some products are better when they are homogenous while others are better when they're allowed to be "creative."
This is why woodworking is actually a poor analogy for software development. A better analogy is carpentry. And when it comes to carpentry, it is much more important to ensure whatever you're building is extensible or follow certain specs. The cabinets you make, for example, need to fit into a certain space under or over the counter, and need to be homogenous to a large extent.
Consistency is dramatically overrated. We all read through comment threads on HN where each is written in it's own style and nobody has a problem understanding it. I read through open source repos all the time, which all have their own styles and which are often not self-consistent; my comprehension is not impaired. I have worked with teams that enforce linting with a religious fervor and teams where anything goes. The anything goes team is probably more productive and with a comparable rate of bugs (but I don't have the metrics to prove it). Personally, I don't feel like my comprehension is better or worse in one setting or the other.
The difference I do notice is that when there are no linters, nobody wastes time trying to figure out how to work around it for a few lines. A great example is Eigen matrix initialization through the stream operator overload [1]. You really want to manually format that so each row is on it's own line. If you use clang-format in such code, it will be littered with
MatrixXf mat(2, 2);
// clang-format off
mat << 1, 2,
3, 4;
// clang-format on
which adds a ton of unnecessary noise which does impair reading.[1] https://eigen.tuxfamily.org/dox/group__TutorialAdvancedIniti...
That's not true. Walls of texts get ignored or complained about. Grammar nazis show up if you use the wrong to/too.
If your typing on a phone autocomplete more or less enforces grammar and punctuation.
I want to have my cake and eat it too.
Everyone does some level of selfish things; trying to shape work so that you find it enjoyable (and therefore likely something that others would also find enjoyable) is an acceptable form of selfishness to most.
Daring to work at place that does not suck is not the worst offender to the world fairness, I think.
But there is something to be said that some people are born into situations that force them to adopt a very risk adverse posture. If you don’t have any safety net, “daring to work at a place that does not suck” takes on a different risk profile and doesn’t necessarily generalize well as a strategy.
I thought it was a good reminder to have an attitude of just seeing what needs to be done and doing it.
It gives you more opportunities to find that combination of work you find meaningful, coworkers you mesh with, flexibility, and decent compensation, than any other time in history I'm aware of.
It's still not easy. Just easier than in the past.
The non-boring companies I've worked for have had problems of wanting to work you at 150% of your schedule, quite often illegally. It is insanely rare that you'll get a job that keeps you busy (only) 8 hours a day constantly. Either the place is always on fire and has 12 hours of work a day, or you'll have it better managed and work will be bursty with the majority of the time under utilized. Spend that extra time being taught stuff on the company dime.
Thankfully I had an alternative and went back to startups. I could absolutely never accept dividing my brain like that, steeping in cognitive dissonance and just letting myself rot inside. Once you’ve felt the good life - where work is play and learning happens all day long - there’s no amount of money that can be accepted to lose that.
Thankfully I quit and the new job has been great.
It sounds cliche but happiness is truly a state of mind. You don’t have to wait for something in the future to be happy now.
By saying you want to be happy, you’re already telling yourself there’s a gap between your state currently and that you wish to accomplish
“I’ll be truly happy WHEN”
When comes and goes, rarely have I heard someone say “well I said I’d be happy when this happened, it’s happened, and now I’m happy. All done”
Fully agree, it’s a state of mind.
I’d also add most people who say they want to be happy don’t seem to be looking for happiness but rather contentness, but I digress
I've heard this, but only from people who had been in an very shitty situation and then got out. Happiness is a state of mind, but misery is a set of circumstances, and the latter precludes the former unfortunately.
The privilege of having pixels be the most stressful part of your life... it's actually really nice to read that. Having perspective from hardship is good, and everyone will have at least some perspective at some point in their life when hardship is forced upon them. But hardship in and of itself isn't good. I'm happy it is being completely eradicated from life, at least for some of us.
I've cleaned McDonalds bathrooms, worked in a plastics factory where the chemical stench left my nose nonfunctional for weeks, hauled heavy sacks of shingles up onto a roof in 100+F degree summer temperatures.
I am utterly grateful and consider it a lucky privilege to now be typing into a computer in a climate controlled office, where my biggest stressor is a deadline.
I will say: I don't necessarily like to say "lucky," or even "privileged". Luck incites tricky emotion because there's an implication with luck that you didn't deserve it. A gambler who won at the slot machine should have lost his money -- luck carries that "should have" connotation with it. Likewise, privilege carries a zero-sum connotation, because we always mean someone is privileged in relation to another, which introduces almost an adversarial tone to it.
For me, a better term is fortunate. I am fortunate that I have a job in a nice office, solving interesting puzzles all day, getting paid (relatively) a lot of money doing it. Fortune has come upon me. I work hard, although not really harder than any other reasonable person. I was born in the right zip code, to the right family, had access to an amazing education, had the stability in my life to pursue it. Fortune.
I will never look down on anyone who is fortunate. I wish most people could have fortune in their lives. If the price we pay is a few complaints that the soda machine is down today, so be it!
edit: different strokes for different folks, i don't want to sound too presumptuous. For some people what i described is exactly what would bring them joy.
I grew up in poverty myself but my partner and many of my friends at bigger tech companies grew up the way I discussed earlier. Most of them were pushed through their parents' social circles into a tech career and never were wanting for money. They feel the grind inherent to being paid for your time as opposed to volunteering your time and think of it as an injustice. My partner and friends complain constantly about tech and their jobs but other than a handful who briefly worked service jobs in their teens, they have nothing to compare it to. I spent my summers as a teen moving heavy boxes/furniture, often in 100F+ hot weather, and being paid in cash (hoping to become a cabinetmaker!) barely making ends meet and I know what it's like to keep a job a job.
I left Big Tech (I had joined it as a startup and ended up staying much longer than I expected) so I understand the complaints about heavily bureaucratic jobs where most of your time is spent coordinating rather than building, and while I'm always unhappy at something or the other with my job, I know how good I have it. I do a job that I don't hate, working with generally smart people, alternating between a cushy office and my home where outside of my work I mostly just complain about minor office perks. It's fantastic.
I know I'm luckier than most humans on Earth, but still hedonistic adaptation is a thing, even if you grew up in a poor family.
Backbreaking manual labor sucks. The heat. The cold. The shit. The frost. I'll format my fucking code any way you tell me to to avoid farm life. Like I give a shit. A week in and I won't even notice. Ah Christ, the smell of cow pus ...nyaagggggh.
As for woodworking: You will get cut, there is no hope of avoiding it, and no telling how bad it's going to be. The next day, we will see how serious your woodworking gig really is. You gotta be out there, bub. Get it stitched up and keep on cranking out the pieces.
To the OP: When it sucks a lot, try singing. It really, really helps. Throw your head back and let it out of you on the way home.
Also there is the problem of having to deal every day with "professional managers" that don't know anything about IT, but make decisions based on magic 8 ball and their career interests. Similar to illiterate politicians in many countries.
If you were comparing salaries, either your company was compensating you with extra prestige, job security, etc. or you were underpaid.
The former is tolerable for many, the latter usually isn’t for long
I work for a large company , and I love people I'm with and had some great challenges and accomplishments, but yeah... There's still a creative urge that's left not completely filled. So I ran a photography business for a decade!I loved interacting with happy and involved clients, and creating something that brings them immediate joy :). I don't have time anymore to do it professionally but I still do it for friends and family ( while I work with my therapist to survive my day job :)
I'm trying to start my own business now without going down the consulting route. At the very least I tell myself that the spoils of the hustle go to me. Let's see how this phase goes.
Cheers! Nonsense is tiring, nonsense breeds detachment, and I daresay most humans will detach from sources of constant nonsense. (As well as from economies of constant nonsense. See: advertising, social media)
> endless PowerPoints
We can agree that PowerPoint is a lossy encoder for instances of Conway's Law.
But to your point about Small versus Large entities...
> ended up unfulfilled in their jobs.
There are many well-travelled roads to Unfulfillment in the software business. Both Small and Large entities have the problem known as people.
Although it's true that corporations tend towards uncalled functions and structured madness, small shops can amplify the oddities, mistakes, and loyalty-antipatterns of principal's exclusive control. And people at a small shop will often work longer hours just to sort these problems.
> people [...] who pursue creative/crafting hobbies
These people are lucky and are doing what is healthy. They are the tool-maker sort of person and are fortunate to have the time to extend their skills and knowledge.
I am very good at designing and creating software products from scratch. Was doing it for few years a an employee of smallish company that served numerous clients. I then went on my own and kept doing the same. I have my own product that brings in some money. Also I design and develop software product to various clients. I've had ups and downs but in average am very happy, not overworked, have more than enough time for myself and like my job which is basically a hobby paid for by the clients. My client are usually small to medium size that are not really in software but for one or another reason software runs their business.
"Even" Chris Lattner (of LLVM and Swift fame) which I as an outsider at least would say have a fulfilling job dabbles in the occasional woodworking: https://nondot.org/sabre/Woodworking.html
Depends on the industry. I've been doing iOS for over a decade. You're right in that there are different dynamics with enterprise that can wear you down. I find that to be less so the case with jobs in the retail sector. Things are always fluid and changing there.
Still, this is a very subjective statement. As someone in my middle ages, I've come to appreciate and understand how views change over time. The 20-something me would have jumped over to new jobs every 2-3 years. The 40 something me recognizes value in work/life balance, stability, and a more defined and often opportunistic growth path in larger companies. And it's at this stage that while I may not fully comprehend the occasional stubbornness of 60-something devs, I can at least approach their way of thinking as not wrong. When you have a spouse, family, and mortgage to support, the potential upsides of a smaller, more nimble company just don't overcome the peace of mind of being in the corporate world.
Side projects and meditation supplements.
Each year passes and O learn more about myself so hurray growth?
I've only ever worked for small start-ups. Including my own which paid the bills for 15 years.
Working for start-ups does not solve the problem for me.
The problem for me is that I need to give a shit about WHAT I'm creating. And I find that after 25 years of working in the tech industry professionally, as an end user the older I get the less interest in modern technology I have.
It's hard for me to not see the negatives. I want a car that I can maintain myself and that does not talk to a network for critical functions. I want a fridge that just cools my food and doesn't come with an app or "smart" features. I have zero interest in AI. I love writing code, and I'm already over-burdened by poor code quality that I've inherited and that was written by inexperienced devs. I don't need AI generating code for me that I then need to review and refactor. It's faster and more fulfilling for me to write it myself. I never got on the smart phone bandwagon. Yes, I own one, but I often forget where I left it and when I find it the battery is usually dead because I haven't touched it in days. I don't want a "smart home." I'm not a gamer.
So in my off hours, I find that I spend my time doing things that don't touch modern tech at all.
So yeah, I find myself constantly planning my exit strategy from the industry. I enjoy coding, making things and solving problems but I don't enjoy modern technology the way that I used to. And making products that I wouldn't use myself is what I find soul crushing.
Will take one of those instead, any day.
But, as in my last big project, I'm building something well that makes a concrete difference in people's lives, internally and externally. In my previous project, the software we delivered saved hours a day for clerks who were typically very overworked, and we received grateful emails telling us that they'd been able to sit down for lunch for the first time in years. In the current project we're bringing GIS capabilities and full accessibility to a gov't online service--we have a mandate to ensure it works properly with screen readers, and we're actually doing new work on making map features accessible to the visually impaired.
So much of the motivation for geeks is technical satisfaction that we can miss many other forms of fulfillment in our technical jobs. Having worked on the web since the late 1900s, through multiple hype waves and "oh, we're doing this again" moments, I find the non-tech, more people-oriented rewards much more satisfying.
Also, I'm building out the wood shop I want. :)
Guilty (although retired now). When I could apply creativity to my job, I did so, but I think I prefer to have had the outside-work activities to have been my creative outlets.
The application to express creativity in software is fairly narrow in comparison to other activities and, as was pointed out in this thread, physically creating with your hands (rather than virtual creating with your keyboard) is ... real.
This really struck me because I'm realizing it is soul destroying but have gotten competent, and even good at it. I was involved in my family's small business and some of my own startup attempts and consulting, so I remember those feelings.
What grinds my gears is failing to solve problems I’ve already solved. At some point you have to convince others that a plan is good. Your arguments might not work on a new team. You might not know what the secret sauce was that got you consensus last time. Or after years of getting your way you may forget some of the arguments for an idea.
Because mastery is, at the end of the day, converting an intellectual process into intuition, so you can go faster. Once a decision process is successfully ingrained, the intellectualized path is dead weight.
There’s a lot of vaguely intellectually lazy, cheap instead of frugal thinking, and ethically challenged people in or around our industry, and the collective weight of it causes pushback on progress.
That's where you write a blog post, a company note, or a book if you got the time. The best proof of mastery is teaching because that's when you got confronted to the problems from another perspective (the other may not learn it as well as you do). And you won't have to repeat yourself that much if your arguments and process are written somewhere.
Simply adoption something that worked in a previous place isn’t a way of usually making decisions, imagine a company with 100 engineers where they all came from different companies and have different ways they solved the cicd problem - how do you move forward from that ?
Decision making can be complex - can also be very simple, depending on the company ..
> very happy at a fast-growing small tech company where one can have honest conversations about the customer and the product
Right. Why is this getting harder to find? Engineers are feeling like their labor is increasingly becoming unimpactful vaporware; their work life is increasingly subject to the whims of nontechnical people; product complexity is going beyond the amount that's just natural in software and getting disproportionately bad.
It's because the market is driving people to the software world like tourists to a national park that's gone viral on social media. The mass of people trying to make a buck off software are unknowingly degrading it. The park's land is still good - just a little too good for its own good.
As long as software makes it easier to reach many eyeballs and wallets at once (which is "always") people will flock to it. What's less inevitable is what makes fluff and snake oil rampant in other industries, like health: a deadly combo of unbridled capitalism and masses of uneducated people.
This makes people, including many software engineers themselves, view software engineers as natural resources you can just endlessly extract from, instead of people with biological limits and dreams of making cool things with their hands.
The remedy to this - people democratically owning the means of production, and providing each other with reliably good schooling - might seem like a pie-in-the-sky idea but will be common sense in 100 years if we're still around.
people, including many software engineers themselves, view software engineers as natural resources
I’ve said this a million times on this forum.. the little trick whereby people who were once employees became merely _human resources_ has done more to damage work-life in this world than anything else I can think of.Its natural to exploit resources to their fullest. Labeling humans as resources is inherently dehumanizing and desperately needs to end.
It really got my blood boiling and I've said something very similar to: "No we don't have a resource on the call, we have engineers, colleagues, employees, humans and friends on this call. Resources are air, water, memory, cpu and time, please don't call people like that". This followed by silence, and a lot of red faces.
Couple of weeks later, had a talk with my manager who is a true and true programmer I really respect. And then he says something with that "resource" referring to our team members...
I have experience across various industries, and many professions think very highly of themselves. But over here I have seen the working population be so easily manipulated, self-effacing, and self-abnegating. Most of the time bad managers just say "jump!" and engineers just ask "how high?".
The thing they kept saying was "We'll run it through the machine." Meaning "We'll hand that off to our software team and have them complete it." Of course today, the one who stayed in tech might be salivating about running software requirements through an actual machine to produce code.
You can keep calling yourself whatever you like, or more to say, swallow whatever little pride you still have. But I don't subscribe to that and I won't be called a tool/object/resource in my presence.
Companies would rather overwork 1 person than pay 2 and have both slightly under utilized
The departments where people were casually putting in 4 hours per day mostly got axed during COVID and again during the 2024 recessions. There was a period of time where a lot of teams accumulated a lot of people so they could spread the work thin. Eventually management started catching on and put an end to that.
> I want the clarity of being able to talk to "the boss/the customer" and solve their problems
I finally identified that at my last job, and have begun actively working to make that happen. For example, I transitioned internally to a "platform" team so that I know my customer—my fellow product developers at the company.
This has resulted in me being MUCH happier with my day-to-day work.
Not everybody is like that, even in software. I mean sure, creative aspect is very cool, but its fraction of any senior job, including most bigger startups from what I've heard. Even my current corporate job which started 12 years ago was pure dev in the beginning, now its maybe 20-30%. Responsibilities, personal growth, but also business grew in complexity and IT landscape and various regulations governing it exploded and keep exploding. I know stuff very few other do, so I get involved continuously into tons of efforts.
As they say, if you work manually hard work rest with mental challenges, and vice versa. Wood working must be cool since you create visible results with your hands and there is certainly some physical effort. I don't seek further creativity TBH, I look for extreme/adrenaline sports, be it climbing, ski alpinism, paragliding and few other similar (but also super chill diving to cover all elements and balance intensity). And ie in climbing, finding out how to climb some new route that is hard and scary for you is extremely rewarding, a literal creative ballet on vertical rock face.
Till kids came, this was making me properly happy and fulfilled to 120% since I was doing something every evening, every weekend, every vacation combined with 3rd world backpacking. Plus it made me super healthy and more focused on healthy eating too, became quite attractive to women since all this changes visuals but also confidence and overall persona for the better in aspects many women notice.
With small kids, and few non-horrible injuries I am now somewhere in the middle now, but kids are top priority, rest are not that important now (folks who keep going the same way/pace after having kid(s) I don't respect, it shows later on those kids in all kinds of bad ways). I know I have skillset to show them later some pretty awesome places and activities, but will let them go their own way. Just managing maximum possible off screen time since thats cancer for young soul and sugary stuff since thats cancer for body, now its easy and they follow our examples so they happily much some bio carrots and ignore cakes.
There are many levels to "build stuff", so it's important to introspect what kind is important to you.
I love to build quality code. Production code that is quite efficient, fast, secure and maintainable while being full-featured.
Having done five startups now, this is very difficult to do in startups.
(There was one startup where we had a great team of like-minded quality-driven people and it was awesome, but it was the exception.)
"Building stuff" in startups usually means throwing together a mess of half-baked code and holding it together with chewing gum and duct tape and immediately moving on to the next thing that sales promised a customer yesterday but hasn't been started. From a business perspective, that's not wrong. It's a startup, you need to grow fast and add features at lightning speed to capture some market. But if you crave to build quality, this isn't it.
It's only in larger companies with some stability and steady revenue that there is some possibility of finding the environment to build things I can be proud of. Of course, most large companies also just build junk. Finding a good one is hard, and is an exercise left to the reader.
(If you know any please share!)
Less is more? Oh you are painting such a rosy picture of enterprise IT.
My experience is the opposite: you can usually chill at big companies, while startups need money fast and attracts the worst managers. I know it's not the same experience for everyone, but I'll never work for a startup ever again.
Nobody believes me when I tell them this. Software is so thoroughly corrupted by the low-trust managerial paradigm, where massive hierarchies are built to justify high-paying managerial positions that end up reducing the efficiency and productivity of great programmers, that it’s simply taken for granted: We should never trust engineers to make independent decisions, to schedule their own pursuit of tasks, to pick the right tool for the job, to do this all with customer value in mind.
Who knows? Maybe I’m the exception and engineers don’t deserve to be trusted. In which case we have a very, very big societal problem. All I know is that our software team performs very esoteric group interviews, and our style seems very good at sniffing out pretenders and exploiters.
They were certainly very good at coopting the agile „movement“ in this manner.
One of the worst faceplants I've seen in my current role was when my team was developing a solution to integrate some third-party data. Our PO reported to a Product Manager who was tapped as the "I talk to the end users" person and he completely fucked it up. The team was siloed off to do this for multiple quarters, and at the rollout we literally got laughed at and told "we can't use this." But God forbid my team actually, you know, TALK and DEMO to the end users once an iteration like you're supposed to in Scrum, as opposed to plugging in some drone from corporate who it turns out doesn't know what the hell he's talking about.
The ticketing firewall has been a net boon and we've been able to overhaul a number of ailing backend systems, while adding features that were in demand for going on two decades. Turns out, most of the features being requested were easy to implement given the right choice of languages and architecture. We went from constant fires to downright quiet in our office. Most of the ongoing project work is aspirational and would vault us back to industry leadership, instead of the constant remedial work that was bogging us down.
My experience is the opposite. Startups i've worked at were mostly 'boys clubs' where if you weren't part of a 'core group' then you were merely a mercenary. So you are in the same situation as in 'big tech' without the safety or prestige. You still have schmooze and 'manage up' to get into that core group of decision makers. Startups aren't immune from human nature.
startups as meritocratic wonderlands of creativity is not an idea based in reality.
It's no surprise you can end up feeling empty and unfulfilled in a career like software development, or any other modern career, you are putting energy and emotional involvement that you would otherwise have put into the search for physical necessities. I think this is particularly acute for those in software development because it is so abstract and disconnected from the physical world. Biologically speaking fulfillment should come from satisfying your physical needs (i.e. surviving) not from the pursuit of some made up goal.
In his words "the pursuit of sex and love (for example) is not a surrogate activity, because most people, even if their existence were otherwise satisfactory, would feel deprived if they passed their lives without ever having a relationship with a member of the opposite sex."
IMHO it's a classic example where "the author is excellent at identifying problems, not good at identifying solutions." Unfortunately almost nobody reads the first (identification) part because the solution part is so unpalatable and unacceptable. For anyone who doesn't know, Ted Kaczynski was the Unabomber and his solution to the problem of technology was basically to destroy the entire system by wiping it out in a way that leaves no ability for humans to resume technological progress, and violence was his way of beginning the societal destruction part. From a purely theoretical/philosophical view it makes logical sense, but for most people who have a sense of compassion and empathy the costs are extremely unpalatable.
I imagine there are tons of philosophers who have said similar things.
Here's a comment recommending Jacque Ellul and Lewis Mumford - https://news.ycombinator.com/item?id=4015488
Another one - https://news.ycombinator.com/item?id=24658601
(I haven't read them)
But we probably don't remember or cite them because their manifestos weren't published on the front page of newspapers.
That was due to the serial violence of the author, and it was subsequently talked about for decades.
That is, the notoriety of his crimes could be the reason that you read and recommend his work, rather than somebody else's work -- as opposed to it being a coincidence
> Did the Unabomer have any ideas you couldn't read elsewhere?
> I imagine there are tons of philosophers who have said similar things.
I would imagine the Unabomber isn't the first or only, but it is the first place where I encountered many of the ideas/analysis. It absolutely felt like it went very much against the grain of acceptable writing of the day. It amounted to outright heresy in some cases, which I find fascinating and engaging. People who challenge the status quo are the ones who IMHO change the world the most. I'm by no means equating Kaczynski with many of the greats of the past, but they all had that same trait in common: challenging the assumptions and status quo of the day with at times heretical ideas.
In particular, his observation/separation of the three different power levels in which humans can operate deeply spoke to me and resonated with me. His identification of how operating in power levels 1 and 3 can be so profoundly different than how our brains evolved to be and therefore unfulfilling and unsatisfying struck me with the same sort of intellectual force that Immanuel Kant's Categorical Imperative did the first time I understood it. Then he builds logically on that to identify/describe how with technology we are essentially being pushed entirely out of power-level 2 and into levels 1 and 3, and it becomes very easy and simple to understand why he believes technology to be so disastrous for humanity.
> But we probably don't remember or cite them because their manifestos weren't published on the front page of newspapers.
> That was due to the serial violence of the author, and it was subsequently talked about for decades.
> That is, the notoriety of his crimes could be the reason that you read and recommend his work, rather than somebody else's work -- as opposed to it being a coincidence
Absolutely, I very much agree. Although if none of those other works ever made it to my attention, then they don't have the opportunity to influence me or give me the feeling of intellectual nourishment that I got from Kaczynski's manifesto.
This strikes me as a very similar problem to the medical knowledge gained by Nazi scientist from doing horrifying experiments on Jewish prisoners. Do we disregard the knowledge gained because it was gained in such a disagreeable and reprehensible way? Logically, disregarding it makes no sense, only providing emotional satisfaction. Using it can benefit our future, but not using it does nothing to change the past. We could say "incentives" but that has to be addressed through punishments/repercussions to the people who did the experiments.
But regardless, those other sources have reached me now, thank you! I'll be reading them :-)
27 years in the slammer to clear up some ideas means there is A LOT of additional reading material from him in form of letters, essays and books.
It seems the longer he thought about it the more he could not find a path to stop technology progress but figured we just need to ride through it until collapse, if that happens.
But you equating his manifesto to that makes me think you didn't read it, or at least didn't do so with an intent on understanding it. There are millions of shallow/lazy summaries online, so if you read a summary or blog post about it, you've done yourself and the text a disservice.
It's the very much not "crying about" what he calls "leftists" which I'm guessing you are translating into "SJWs," particularly in the current sense. He goes into significant analytical detail about why he thinks what he thinks. You also have to consider his background and experiences, from being severely isolated/deprived of human contact as a child due to the medical advice of the day, to his experience as a rare math prodigy and one of the youngest professors. From wikipedia[1]:
> In late 1967, the 25-year-old Kaczynski became an acting assistant professor at the University of California, Berkeley, where he taught mathematics. He assumed the position as the youngest assistant professor in the history of the university.
Think about the different environment that was than today! This was the late 60's. Leftists then were very different than they are now, and he was at Berkeley. If you're unaware, there was a significant cultural development going on at Berkeley in the late 60s. Further[1]:
> Without any explanation, Kaczynski resigned on June 30, 1969.[35] In a 1970 letter written by John W. Addison Jr., the chairman of the mathematics department, to Kaczynski's doctoral advisor Shields, Addison referred to the resignation as "quite out of the blue".[37][38] He added that "Kaczynski seemed almost pathologically shy", and that, as far as he knew, Kaczynski made no close friends in the department, noting that efforts to bring him more into the "swing of things" had failed.
This period undoubtedly had a huge impact on his life, and not considering this when evaluating his text is a mistake IMHO. Also there is so much more depth to this than what I've said here, but I'm unfortunately out of time for the moment.
It's pseudo-profound, but not really insightful at all. It's the kind of writing that seems brilliant to people going through difficult times in life or edgy teenagers who are angry at the world, but to be blunt it falls flat for people who are well-adjusted and thriving.
That's the crux of that type of writing: Ranting about the world in pseudo-profound prose is always going to feel brilliant to people who are struggling with something and want to identify with others who are also struggling, but that doesn't make it insightful or good writing.
> For anyone who doesn't know, Ted Kaczynski was the Unabomber and his solution to the problem of technology was basically to destroy the entire system by wiping it out in a way that leaves no ability for humans to resume technological progress, and violence was his way of beginning the societal destruction part. From a purely theoretical/philosophical view it makes logical sense,
Treating his writings and actions as two separate, unrelated things is really downplaying the manifesto. The fact that he took the ideas he wrote down and came to the logical conclusion that violence and destruction were the way forward should tell you something about his writings. Specifically, that they were hyperbolically incorrect.
To be honest, the way that you're identifying with his writings and thinking that even his actions make "logical sense" suggests that you may need to take a step back and reevaluate. It seems his prose got its hooks into you, but it's not actually brilliant content.
You basically just said, "That guy's not all that smart, and if you think he is, take a hard look in the mirror!" Maybe you can say more about why you think his writing falls short and who you'd recommend to read as a counterpoint?
You don't actually engage with any of the ideas Ted Kaczynski brought up or offer a thorough critique, so ironically you yourself are engaging in writing a "pseudo-profound" comment, which boils down to a giant ad hominem. Ad hominems aren't wrong because of moral turpitude, they're wrong because they are devoid of information.
If you really did want to critique his worldview, you'd understand pretty intimately Kaczynski's intellectual influences, and you'd be able to identify and articulate which parts you agree with and which parts you don't. It's telling but unfortunate that you opted not to do that and instead reached for the lazy ad hominem.
My advice to you: if you truly do vehemently oppose the actions of this individual (as do I), it's even more incumbent upon you to inform yourself their worldview and influences so that you are equipped to intellectually oppose its potential resurgence. If you aren't willing to do that, you have no right to judge others who have.
Quote: It is no measure of health to be well-adjusted to a profoundly sick society ~ Jiddu Krishnamurti
That's one of the most absurd hyperboles (or the most detached-from-realiy statements) I have ever seen. That would mean only one out of 100,000 people is doing "real" work. Or if you spread it evenly, less than one third of a second per working day.
What makes you think think that your definition of "surrogate activity" is an interesting distinction? That only "growing your own food" is going to make people fulfilled, biologically? Is there any evidence of this? That hunter gatherers, or that farmers in history, were somehow happier?
As far as I can tell, most people throughout history worked really hard, but tried as much as they can to do anything but what they had to do to survive. Every single human culture has music, art, science, etc.
Water food and shelter are not all there is to a comfortable life.
Or is it what the "legendary" comment in the original link calls attention to: That the pay is good? As a result, you technically only need to spend a minutes per day, if that, working on software. Everything else is fluff. This seems to match what Kaczynski is talking about.
Take a job developing software that just barely covers the cost of your survival needs and I expect there is no chance you will feel empty about it.
I think this level of hyperbole only feels correct when you've been trapped in the kinds of companies where everyone is at least ten steps removed from the customer. When you're sitting through meetings and pushing around abstract "work" to achieve artificial goals all day, it can seem like modern work is all made up and arbitrary.
But step outside one of these absurd corporate jobs and you'll see plenty of people doing "real" work, and doing a lot of it. It's eye opening to go from a corporate behemoth to a small company where what you do actually matters to customers. Once you see the effect your work has on something up close, it makes a lot more sense.
Every time I read an HN comment where someone is romanticizing Ted Kaczynski's writings, it feels like they're coming from a place of being just a bit too chronically online and a bit too disconnected from how the real world works outside of the internet and corporate life.
I only code as a hobby anymore. Burnout destroyed my career and now I design PCBs and write embedded software without LLMs.
1. Learn basics of electricity, learn to use oscilloscope, logic analyzer. You don't necessary need to have knowledge to design complex PCBs (that's a separate skill and not easily attainable) but you need to be able to understand existing design on high-level and do some debugging. For example you wrote code which does some SPI to talk to some device but it does not work. You need to analyze electricity to understand what's going on in the wire.
2. Learn basics of assembly. You don't need to write your software in assembly, but you need to read it and write some little snippets if necessary.
3. Learn to read data sheets.
Modern MCUs and devices are really like libraries. You're using some interfaces, calling some functions and get some responses. Data sheets are library documentation.
4. Learn C, learn build tools (at least make), learn debugger (gdb), learn linker.
Then it's only matter of time and experience. Most vendors supply their terrible libraries that you're supposed to use. Most vendors support some bad IDEs that you're supposed to use. Often you're forced to use Windows because not everyone supports Linux or macOS. It's not fun part and sometimes you can avoid it, but sometimes you can't.
Learn to read documentation in general. It's shocking how many people seem incapable of finding answers that are in official documentation but not on Stack Overflow.
This is especially true from a security standpoint. Many analysts are worried about XSS attacks and other such high-level techniques. C has an entire different class of vulnerabilities such as buffer overflows. And beneath that, there are countless vulnerabilities by exploiting properties of the physical hardware. Most industries choose to ignore these problems, because they’re very expensive to mitigate.
Regulation will force you to replace your car for EV and with more technologies for monitoring the driver and surroundings.
Cuzebox as the emulator:
Seconding this; I recently wrote a game for the GameBoy Color in C and it was one of the most enjoyable things I’ve done with coding in a while.
The word "amateur" has negative connotations, but should really be interpreted as "not your primary pay cheque", not that you suck.
> A person attached to a particular pursuit, study, science, or art (such as music or painting), especially one who cultivates any study, interest, taste, or attachment without engaging in it professionally.
(Wiktionary.) It just also can be used to derogatorily refer to a "low" skill level (Someone who is unqualified or insufficiently skillful., same), but the non-ad hominem definition doesn't have that connotation.
E.g., in the ballroom dance community, the "amateur" category is filled with people incredibly talented, I'd estimate with like 8-10+ years of experience. They're amazing to watch.
The negative connotations is a more recent development:
> The meaning "one who cultivates and participates (in something) but does not pursue it professionally or with an eye to gain" (as opposed to professional) is from 1786; often with disparaging suggestions of "dabbler, dilettante," but not in athletics, where the disparagement shaded the professional, at least formerly. As an adjective, by 1838.
* https://www.etymonline.com/word/amateur
It comes from the from the Latin amatorem, "lover": someone who does something not for any practical reason, but simply for the enjoyment / love of the activity. How well one does it does not necessarily come into consideration, as long as there is enjoyment.
Indeed, the Olympics is technically supposed to be an event for amateurs, while also being generally perceived as the peak of competition for each relevant sport.
And then you have NBA players on the Olympic team:
* https://www.nbcolympics.com/news/lebron-curry-durant-embiid-...
See also NHL/MLB players.
sometimes much-much more involved - paycheck-less - than just "next pro"
I really love physical things I can do with my body as a counterbalance to working on the computer- weight lifting, woodworking, and sailing add a lot of value to my life, and have gotten me outdoors and in shape. I'm currently building a wood sailboat in my garage together with my son, using ancient woodworking tools I inherited from my grandfather.
Has the curve on the creator/consumer axis shifted in recent times or has it always been skewed toward consuming? Or is there instead a social axis that has been waning recently? I'm thinking of the once popular Bridge card game or bowling leagues as examples...
Maybe it's become easier to consume incredible amounts of content for free recently, but it's also never been easier to make things if you want, either in terms of access to cheap materials and tools or instructional content. Perhaps the one thing that has waned a little is closer-knit forums that have been replaced with endless Reddit.
And then there a collecting based hobbies* which have been ruined by being able buy rare things from anywhere in a click. Now getting a stamp collection isn’t a pursuit, it’s just an afternoon on eBay with your credit card.
*one exception here is birdwatching, which I’ve anecdotally seen a huge increase in. Almost all my friends are aware of Merlin and many Hanna the habit to stop to ask “what’s that” if they see an unfamiliar bird
Social media totally shifts and ruins our experience of things: it becomes a performance to impress others rather than actually fun itself.
Once I realized that- I realized the people everyone envies online aren't even having fun, or actually enjoying the hobby. That person doing extreme camping on Instagram with the most glamorous photos: it's 100% fake. They're lugging camera equipment to remote places, and likely bringing a professional paid photographer. They probably tore it all down and slept in a hotel after setting up camp for the photo.
I grew up on the computer since I was a preteen. My dad moved 2000 miles away when I was 11. Every job I've ever had since I was 14 was web/software related and I am nearly 39. I feel like I have no practical skills outside of computers and the idea of building things with my hands or using power tools just fills me with anxiety. I wish I knew how to break out of the mindset.
Watch a YouTube video.
Plan on failing a few times in ways you don’t expect.
Remember that this is a hobby so the stake are low.
Nowadays, I'll set everything up, cut/buy the metal, etc. and usually for under $100 have someone come over and do the actual welding for me.
Keeping the tungsten from touching the bead is harder than it looks.
The thing with welding is that it doesn’t give you any time to figure things out in the moment. Sort of like tennis in that way. You hit it wrong and you gotta go get the ball. Start wrong with welding and gotta get the angle grinder and restart.
But he taught me crude woodworking like framing in houses- almost none of the tools or skills translate into fine woodworking required for building things like furniture or boats. Until the last year I didn't know how to cut with the grain, what a planer was for, etc.
What my dad really taught me was the confidence that I can learn what I need as I go, to do almost anything. I'm not afraid to start big projects where I have zero idea how to do any of the steps required at first, and am expecting to learn them one at a time as I go. My dad would regularly jump into things like buying a car with a blown engine and expecting to rebuild it without any clue where to start- and then follow books and advice, and do it successfully the first time. So I learned to also do that.
YouTube has been a huge boon- anyone can learn almost anything for free, without needing someone to teach them first. Also tech like 3D printers allows people to get into making things without the physical skills previously needed.
Part of it is that they pushed me towards skills they thought would help me more, like computers... my dad liked to brag he had one of the first computers on the block, and that he put me in front of the computer as soon as I could sit up. They pushed me towards getting good grades instead of knowing how to work with physical objects.
Part of it is interest, like I wanted to do my own thing instead of my parents' things, once I had the choice. That's partly because my parents just weren't very kind or patient teachers, they were hypercritical, exacting perfectionists. Partly because my friends weren't working with physical objects much, so it didn't seem like a good way to connect with my peers.
But yeah, my parents were extremely present and they still did not pass on their knowledge.
1. Don't require you to interact with screens 2. Require your full attention (e.g. if you were listening to a podcast while doing it, you wouldn't remember a single thing they were talking about) 3. Has a social aspect, but is also possible to do on your own 4. Preferably physical 5. Preferably has some level of "controllable danger/risk", e.g. mountain biking is good because you can walk down hard stuff or stay on easy trails, vs. road biking you don't control the risk of getting injured / killed by a driver.
Some that fall into this category are climbing, skiing, mountain biking, surfing, windsurfing.
There's the other category that this post about woodworking scratches: building things and developing new skills and mastery doing so. However, these don't often come with an easily-accessible, accepting community; it's usually just you alone in a garage. Given how important social connection is, and how isolating a lot of tech jobs can be, this is a void that a lot of us on this orange website need to actively pursue.
If you're in any "tech city", there's definitely a climbing gym nearby. Climbers are almost always amicable, and for the socially anxious, it's a great pretense to interact with someone (because they have to be on the other end of the rope anyway). The amount of capital outlay to get started is low (e.g. shoes, belay device, and a harness will cost <$300 total if you get nice stuff, albeit sticking with the non-expert shoes!), and you can pretty much start having fun right away (vs skiing takes at least a season to get confident enough to truly start having fun and not "surviving").
I think people often turn away from sailing because it's seen as an expensive elitist thing for wealthy people, but the truth is the polar opposite of that- most people in the sailing community are working class and often have either small dinghies or older boats you can get for a few hundred dollars and easily maintain yourself. I paid $800 for my first working sailboat, and the first yacht club I joined had a literal garden shed full of rusty hand tools for a "clubhouse."
Agree. With zero background in wind-sports I joined a crew. The yacht owner mostly just wanted someone that would turn up reliably - we had one guy who was terrible on the boat but he was reliably there. Good mixture of backgrounds of the crew.
I really enjoyed being part of a team sport.
The main cost was committing to one day a week. I got cheap gear (jacket, gloves) and currently I use a summer wetsuit to stay warm and dry (cold water in our Banks Peninsula harbours).
> climbing, skiing, mountain biking, surfing, windsurfing
Suggested by previous comment. But they are not team sports. I am a developer and those sports are good and social but they are focused on your own personal skills.
The tricky part for team sports is coordination with other folks. I can bike out my backyard and hit a 90 min XC loop to clear my head without needing to agree with anyone else on time. I also only have to coordinate with one other person for climbing (or often 0, if there's already a critical mass of folks I know who are there as often as I am).
I do agree that the specific dynamics of team sports are desirable (e.g. figuring out how to socially get along in pursuit of a common goal vs. a bunch of individuals going about their own pursuit...together), and often the social force towards not letting one's team down by ghosting or not practicing can be a motivating factor for a lot of folks on this site who might need that to ensure they keep showing up each week.
One thing I may add is commitment and responsibility, as in, if you are careless, people may die, including yourself. In most software work, with all these tests and reviews and backups, you don't have that, for very good reasons, but it kind of feels like what you are doing is inconsequential.
I mean hell there's plenty you can do that doesn't require learning at all.
You can also download his follow-up, "The Anarchist's Design Book", free here: https://lostartpress.com/products/the-anarchists-design-book
Between those two, they will teach you what tools you need and how to build simple furniture by hand. Start small.
I've also replaced the starter and replaced the default head unit with something modern that includes GPS. Most of it was intimidating to get started, but none of it was what I would call difficult. There's too many very specific guides around showing you exactly what you need to do. And developers are used to following guides and running into inconsistent documentation and troubleshooting from there. Most of them would be right at home stumbling their way through auto repair.
Last year I epoxied my garage floor and got very good results thanks to my YouTube studies. My YouTube internship has also lead to me re-modelling my entire kitchen. I designed everything in sketchup and am in the middle of building the custom cabinets. I'll end up mixing and pouring concrete countertops myself as well. I've repaired my dishwasher twice and my dryer three times by looking up symptoms online and ordering the most likely parts and just digging in. Every time there have been videos with the specific model and the specific problem that I can follow along with.
Again, none of this is what I would consider to be difficult relative to some of the technical problems I've had to face at work. It's all very well documented processes and combined with the ability to troubleshoot and the budget to not have to fight your tools all the time and most things seem to be very achievable by non-experts. I still don't consider myself to be "handy". But I know I can fix pretty much anything in my house or on my vehicle with enough tutorials and time.
I didn't have any experience in any of these before and I was not particularly athletic. You only need to find something you want to try, and if you like it try to commit to it for a couple of years.
In my example, I started running when I signed up for a 10k race as a team event when I joined my company, and realized the racing experience was actually enjoyable (regardless of my performance). And for woodworking, I signed up for a 6 weeks course to make a simple box at my local recreation center, and ended up making a couple of furniture or decorative pieces that are not fancy at all but still a lot more interesting than IKEA stuff.
Awesome hobbies are awesome! But they require time, and in some cases, financial resources.
I used to buy/sell/repair cars as an undergrad in college both for fun and spare money, and did it on the side of public roads, and outside in a low budget apartment parking lot.
For many equipment-intensive hobbies, you can also take classes, e.g. at a local community college or community center, which are taught in places with all of the equipment provided.
The obscene idea is that whatever hobby you pick up you must master, be great at it. Fail a lot at your hobby and learn from the mistakes. Perfection in your hobbies comes from the time you spent failing. This is the time you should long after a hectic day, week or month, a time to fail.
Once in a while you will create something you love, it probably won't even be good. It doesn't matter. Your not making a dollar on your hobby(do not try to), your carving your mind and body into a better person.
After work, after kids, after exercise, I've spent many nights just carving wood into what ever I feel like. Spoons, forks, etc. Many of them suck, many have been used to keep me warm on a cool night, none have expected anything from me, its always there when I have time and the will.
I've also suggest some cut gloves as well, you need your digits for the next time you decide to pick up your hobby.
I find plenty of time to do my hobbies despite being a single dad, and having a high stress academic PI job. I have every weekend and evening free, and I use them. I also involve my kid in my hobbies- we do them together, so it's also parenting time.
I think most people aren't short on time, but short on energy because of poor physical and mental health- things that can be solved/addressed. For me, the hobbies themselves are a key part of staying healthy enough to have a lot of energy. But also not the only thing- I had serious medical problems that caused fatigue, which I needed to treat to have the energy I now have.
I also usually find a way to do hobbies cheaply, or even make money at them. For example, with cars and boats I get cheap ones that need work, fix them myself, and usually sell for enough more to keep the hobby self sustaining.
Ultimately, the most important thing is to just do it, even if it seems too expensive/inaccessible/etc. Take a leap/risk and find a way to overcome the barriers, don't come up with excuses to stop before you even start.
when I was a kid, when my dad was repairing the house or car I was always "holding the flashlight" or he would actually teach me to use power tools and do the repairs myself while guiding me along.
The larger projects would often span two summers. He also did not contribute to his projects on Sundays because he is religious.
If the prerequisites for having awesome hobbies are, "Having a garage," "Inheriting tools from one's grandparents," and "Having the time do something with both," there would be your answer.
I actually felt a little stupid accepting these tools and setting up a space for them, when I later realized that I already had free access to several local community woodshops through a few different mechanisms... I am thinking about getting rid of some or all of the tools and using those instead.
I think it's pretty easy to make excuses for why something is impossible, but if people really wanted to, almost anyone could do it. The average teenager in the USA buys themselves single outfits of clothing that cost more than the basics to get into woodworking. Most Americans have streaming and Amazon Prime subscriptions that cost a lot more than I spend on woodworking- and I don't have any subscriptions like that.
I built many things at my desk or the kitchen table in our flat with very simple tools. Even a single Swiss Army knife can be used to achieve a lot. And you don't need a lot of time to make small things.
It can be easy to be jealous of the DIY YouTubers with massive workshops (I'm jealous!), but I find it more satisfying to take inspiration from the kinds of simple things people make/made in simpler societies/civilisations.
I get more enjoyment whole-assing one thing than half-assing many, in my case. Not to say hobbies aren't cool - I know somebody that built an entire guitar starting from wood - but I'd rather spend that time going even further in my main thing. "Majoring in the minors" or whatever.
I hope it doesn't come across as some sigma grindset stuff, it's not that I suppress my urge to have fun hobbies - I just feel happier and more secure incrementally building on my main career than creating a new persona for an activity I'm indifferent to.
I find it very hard to relax by just chilling on a beach, or reading a book in the afternoon. I just want to work on a project.
What I find really fun is that often when I'm working on a project, my 5 year old daughter will get in to a project mindset herself, and will be working on her own thing (sticky tape, cardboard, etc), while I'm fixing a bicycle or building something. It's a really fun companionable time, where we're both working on our own thing, but in each other's company.
> don't understand why more adults don't have awesome hobbies...
Pushing back on this a bit. We see promises and people working on this. But I haven’t seen anything definitive yet, and LLMs have their own existential threats around amount and quality of data. Recent article involving trying to get LLMs to reason about law required very fine task decomposition to get move forward. What we don’t know is whether doing this and then handing it to an LLM is as beneficial to humans in speed/quality/feedback as simply doing it yourself. Have already seen people saying that copilot’s interaction loop short circuits actually thinking about the problem.
Regardless, hobbies outside of work are absolutely essential in this absurd time. The author made some beautiful things.
Software is in a race to the bottom because users have little market choice. LLM's are just the excuse, but in reality late stage capitalist economics demands that this happen somehow. Wether it be in the form of cheap labor or automated labor. You need to have political and physical leverage over the corps to force them into being sustainable.
That said, I've always described the "Maker" movement as "Geeks who missed shop class", and have argued that the world would be a better place if the Sloyd system of woodworking as a basic constituent of education was prevalent:
https://rainfordrestorations.com/tag/sloyd/
>Students may never pick up a tool again, but they will forever have the knowledge of how to make and evaluate things with your hand and your eye and appreciate the labor of others.
(I'm the Geek who hated shop class, and thank my locking stars I can make a living writing software, decades later.)
Shocking!
Now I have a garage full of woodworking equipment (and wood), spend my leisure time watching youtube and building things.. sometimes I wonder if I would have ever made it to software professionally had I taken that shop class. Might have ended up making cabinets :D
I have a small issue with the way the people who get into these hobbies are so bitter. Every job has stuff like this, we aren't special.
And many jobs have much worse stuff like danger, filth, hard manual labor, no social standing etc
I find DIY to be similar - you get a physical result, you use your hands to make something, the satisfaction is almost always about pleasing your own sense of what you want. Ok there's the wife too but ....
I also like feeling that I can cope with certain jobs even if not well. Also you do get better. Baking and cooking can be like this too. When you learn the "tricks" that make your bread turn out better or your skirting boards line up properly or whatever then it's a super feeling. :-)
I also find cooking (not necessarily baking) to be quite similar to programming: you follow steps and if some bug happens in production (too salty, too thick, not flavourful enough) then you go in and try to debug it and fix it (I guess the simile breaks down here).
But if someone is good at breaking down IT tasks, I believe they will be able to prepare a large meal with multiple courses, as I find it requiring a similar mindset to releasing a feature.
I worked at a bar when I was young, listened to the stories; the most annoying protobuf deserialization issues or 'Agile meetings' are freaking fun compared to the most of the stories you can hear.
This is just comparing apples to oranges. Woodworking or any other hobby that you enjoy will be more pleasing than any real job you will do. Programming is fun, that is why you started doing it. Working as software developer can be less so.
For some. I certainly started that way. But many of my friends at Uni started from a different point. I heard many describing how they choose computer engineering because it is perceived as a good career or because they heard it pays a lot. I'm not sure if those people have the same "Programming is fun, that is why you started doing it." to fall back to.
My preference in hiring is people that are drawn to computing naturally, they will be there for the long haul.
I think a lot of people are drawn into the industry these days from various online communities because you can enforce your particular viewpoint of social order in a small niche and basically be mini-tyrants. This is very western-world specific, but looking at the "communities" around Ruby, Node, Rust, Nix, etc, it looks fairly clear.
I put communities in quotes because I'm referring to those communities within the community that tend to label themselves as the whole community, write petitions to remove undesirables, etc.
The ability to create a space entirely of likeminded individuals that purges undesirables is highly attractive to certain kinds of people. Saw this happening on forums and bbs first decades ago and now it's the governance body of everything.
It's happened in tabletop gaming too -- one local game group I was a part of got co-opted by a guy just through starting a discord and hosting events. Suddenly a very apolitical community started being dominated by tankie politics and banning of members for wrongthink. We were just trying to game with some minis up till then. I got fed up and quit once the guy running the discord started ranting about how everyone in America should be forcibly relocated to cities and reeducated in more progressive values. I'm just trying to point plastic lasers at people and roll dice, my guy.
I'm assuming that by this you mean that most stories you hear around the bar are just the same stories with different characters and protagonists?
Alienation of the workers and all that. Profitable but psychologically damaging. We thrive when we get to be whole persons.
If they could hire fewer people who crank awesome shit out they would.
I don’t know this is true. My personal experience across a dozen jobs is that the only metric that really matters is “how low can you go?” Cost is the thing to minimize and quality is the absolute first thing to be considered optional and to be cut to fulfill the cost objective. Closely followed by “how fast can you go?” Not a pleasant way to work.
I mean, yes - work isn't fun. But I have coding side projects I work on, and it is fun for me, still!
You know what, nevermind, it's Saturday, why am I thinking about work.
When you don't have to suffer these, you can work long, cause it's basically a kind of self fulfilling game.
I think that you mean that a hobby (that you can pick up and put down as you please) is always more enjoyable than a job (at which you must work, usually on someone else's schedule, to make money), but, just to be quite clear, there's no reason that woodworking can't be a real job.
That said some domains are cleaner than others, just like small rivers have clearer water, I remember working in food stores or even mechanics and you don't get the same kind of fatigue as in software engineering. The stimulations are more diverse, a bit deeper (helps getting into flow in a way) and the culture helps (less discussion about shallow things like indentation). Fast food for instance, being a real-time thing requires tight planning and tight execution, no space for slack. It makes you sweat but you get seriously fast and good at your operations. Unlike coding where you can spin in circles for ages never get anywhere, and go home drained feeling useless.
I'll be 40 in a few months, so recently I've been a bit more pensive than usual, reflecting on where I'm at in my life. One of my biggest regrets so far is how much time I spent wishing I was somewhere other than where I was.
THere is a programmatic aspect, too: Fusion360's modeller has a Python API that lets you programmatically build and evaluate designs. I rarely use this, but it does come in handy. For one project, where I wanted to make a 3D topo-style map of California (basically this: https://www.youtube.com/watch?v=LZkQ8pA_TLY) it was a great opportunity to learn geo (using the great GIS package, "OS4Geo", especially QGIS), turn that geo info into a mesh, and then render it in wood.
Stay-at-home-for-COVID made my life a lot easier, as I could start a carving in the morning and let it go all day while sitting nearby and programming.
Before that I had an XCarve but it was just too big and not rigid enough. I owned several early Shapeokos, which were simply not rigid enough. The 4040 pro is the first router I've had that's actually worked the way I expected (and even then, it clearly has some issues) in the cost window I care about.
CNC brings challenges (and joys) that 3d printing does not have. You have to spend a lot more time thinking about the tools and their paths, mounting the work in the CNC, dealing with dust, etc, etc, but it's really reawrding to hand somebody a carving and see them blown away by the results.
There are things like the MPCNC ,and building your own design with OpenBuilds, but I don't recommend them unless designing, building, and maintaining is what you want to spend your time doing.
I find that a lot of people go to work thinking they enjoy it, and wake up later and realize it is just "work". This leads them to go off and figure out what they really enjoy, and they start doing that (they call it a hobby). Some of them ruin their hobby, by turning it into a full time job, where once again, it just becomes "work".
And it's not just "it's more fun when you're not doing a thing for money", I certainly plan to try and sell these things when they're done, and I've relentlessly optimized the way I work for being fun to do. It's just really nice to be able to look at a physical thing and know that you made it.
Said Kaimu: “Nothing yet. But when I touch a lit candle to the oil I sprinkled from my lantern during our crossing, he will learn the reason to plan for the absurd, the virtue of rebuilding in stone, and the wisdom of not insulting your customers.” - 0
It took twice as long as I thought. It cost double what it would have cost to buy one of Etsy but it's still one of my favourite things I've done in ages. My son still gets excited when he see's it sometimes
There's definitely a different type of satisfaction/reward you get from finishing something you put a lot of time in when you can feel and see the thing. I guess it aligns with why I enjoyed front end dev more so than backend enterprise stuff. Its visual.. With woodworking, its not only visual but a physical object. You see every inch of it, every corner, every joint, everywhere where you fixed something, where you took the time to perfectly sand a surface to ensure it looks just perfect in the end.
I also usually put on an audio book or music in my buds. Its a great way to disconnect and immerse yourself into something that isn't tied to anything else at that moment. No deadlines, no PRDs, no tests, no dependencies, just you and what you're working on... Its relaxing..
Sorry.. I lied... there's tons of dependencies.. Those happen to be all the right tools for the job that you don't yet have and every time you do something, you have to decide whether you'll invest the money to buy said tool, or build said thing to help you get from A to B, or if you'll go the other way around and wing it by hand, taking much longer and hopefully not too much of a worst result..
It's maddening, annoying, and 99% of the time, not worth dealing with if you can help it.
I love software development. I love building both simple and complex systems. But users often suck, and honestly sometimes even the people you're making software for suck. I just want people to be grateful for what I'm doing and I honestly find that lacking a bit in our field.
I have friends who are restaurateurs and people are often extremely ungrateful, demanding and straight up mean.
Most don't earn a lot, margins are slim and people are late, you have to perform 100% for each dish, then people don't show up, get mad when arriving late, want well done when they say rare, or think the chef can just magically change the recipes to accommodate bizarre allergies or lifestyle choices when juggling 20 dishes at a time with a kitchen that off course has been prepped to the max and a few dollars on the brink of bankruptcy.
Ie. people are just people. Better get used to it, same with employees.
I have so many insane stories about this personally.
I once made a PDF processing tool for a company that saved them a lot of time, was pretty expensive and worked brilliantly until it "definitely broke" and i used 1 stressful month back and fourth figuring out why until i saw it was an employe that always "personalised" the PDF's with cute emojis, saved it before sending it further up the chain actively corrupting it so TOC and links were destroyed because of an old version of Acrobat Reader - this was after i asked 10 times if anyone tampered with it in any way.
It's always some human process, organisation, idiosyncrasy or politics taking up 80% of the time while 20% is spent on the actual work.
By and large, we are not doing a good job, and we are not often allowed to actually do a good job. Modern software frustrates me to no end, and in the last few years I've been noticing more non-technical folks getting frustrated. Everyone expects apps and websites to randomly fail in stupid ways or do things in ways that are not intuitive. I barely want to tell anyone I'm a software engineer at this point because it's embarrassing.
"When you’ve been conditioned to believe rightly or wrongly that your value as a human being is derived from the economic value you provide to those around you and all barriers to producing work have been removed by an unprecedented upheaval to social norms, it felt like there was only one path forward and that was working as hard as possible every day."
I am in part drawn to software development and programming, because it's logical and comparatively rigid (at least programming itself is, if you take away the environment/ecosystem/cults that develop around the idiosyncracies of different languages). I find programming very far from absurd.
I am therefore surprised to see software programmers claiming that software development is absurd - and that woodworking could somehow be less so.
The grass is always greener on the other side. (And I still can't accept that programming itself is absurd.)
But that’s only a very tiny part of the art… what breaks the camel’s back for many of us is all the BS around it coming from management, investors, clueless middle managers, political business people, overcommitted salespeople, and the constantly changing tooling so that something you wrote 6–12 months ago won’t run today anymore without a variable amount of change and effort. Not to mention the layers upon layers upon layers of abstraction that make the whole thing inscrutable.
I think that’s what a lot of us are fed up with and mean with “programming has become absurd”
Oh, boy, I can relate. Every three months, I think our program increment planning meetings can't get more ridiculous and, yet, they do. Most recently, we were told that we should just treat story points as days of effort.
Story points are dumb because they always are just a bad proxy for time.
Really though, the right solution is time plus confidence. Instead of "4 days" it should be "1-8 days" or whatever.
Unfortunately a large number of people simply can't comprehend this, and also no tools support it, so I've never seen it actually done. I imagine management wouldn't like it either because then they can't pretend they have a perfect plan with no uncertainty.
In any case, there should be absolutely no problem explaining why it took 8 days if it really did.
The fact you even had to say that part points to the management problem at hand. Not only are you trying to keep idle time low, you're trying to estimate essentially unknown timelines, and you have to think about whether people are even telling the truth or padding hours where they feel they can.
I just think the range is too wide. Sure anything can be a 1 day task (potentially just an easy solution to add in, or some variables/settings to change, etc). And any 1 day task could be turned into an 8 day task (anything from refactoring unnecessarily, all the way to just walking the dog too frequently). I'm left wondering, how long should this task have taken?
> Not only are you trying to keep idle time low
Yes... I'm paid to work.
> you're trying to estimate essentially unknown timeline
Yes. The exact amount of time the task will take is unknown. That doesn't mean I have no idea how long it will take. The point of the estimate is to tell other people my idea of how long it will take. Even if I only have a rough idea it is probably a better idea than a lot of people.
Incidentally I've found that a lot of people don't understand that, and I have a hack! If you find yourself in a situation where you're waiting for something... let's say roadworks, and you say "any idea how long it will take?" and they refuse to give an estimate, even though they clearly have a better idea than you... What you can do is suggest an outlandish number, and then they'll say "oh no no not that long. More like x".
Worked every time I've tried it.
I can't parse your second paragraph at all.
It's a half-assed reimplementation of PERT charts, which were invented in the 1950s and used successfully for many decades, until everyone decided that everything old is terrible.
I love coding. And I love woodworking too: there are so many videos out there to help you get started. Learning to use dowels was quite the revelation for me.
Still very scared of the table saw (Don t have one yet).
But it's great to have other passions outside of it. To get away from your main occupation. To reset and to get a perspective.
And woodworks seems like a good choice. You're still making things, physical ones and you can hone your skill.
I've made a handful of things in my life (e.g. two simple custom beds for my home) without any prior knowledge of wood working at all. They weren't great, but good enough. And I couldn't have been prouder.
So thanks for sharing your story. I might get back to tinkering in my garage more often!
Including the questioning of the tools you use, and people telling you "you're doing it wrong".
I'd been on the new project long enough to fix a couple major logistic issues with code-build-test cycles, and to get a page that took 30 seconds to load down to 3 seconds with five lines of code, and they were starting to trust me.
One day I'm in a conversation with the architect where we are about to spiral airing the things that suck and he starts talking about how some of these seem to be intrinsic. He ends a sentence with "and the only way to solve these problems is to open a flower shop. If you sell someone flowers they don't come back in five days telling you they were the wrong flowers."
From then on, every time the outlook got dark or just spicy, we would joke about opening a flower shop together. What's the best month to open a flower shop? Most of the sales are for Valentine's Day, but how long do you need to be open for brand recognition ahead of VD?
The only downside to seeing this connection is that you’re constantly tempted to use idioms from woodworking to explain programming problems, which just confuses most people.
Feels like a very outsized reaction to have to something well-intentioned, useful, and not-ridiculous.
It's just that estimating well needs people with training on how to do that, and then it takes substantial time to make good estimates. And there will still be significant error bars (if the estimate isn't a range, it doesn't count as an estimate). But it's certainly doable.
To narrow down the estimate to what they want would take just as long as just doing the work.
It’s this sort of disinformation that perpetuates the contingent of software developers that cry bloody murder whenever they’re asked to say if something will take a day or a year.
You never get handed a task which is "write as much of a prototype of a system which would do this, so we can estimate how much more work we think is involved".
And then when you do have enough knowledge to reasonably estimate, people just declare with no evidence that it should be quicker anyway and then are surprised when it is not.
Using time tracking, I was able to discover I only spend 2-3 hours per workday actually programming, the rest was all interruptions and such. Thus I can estimate that one day really equals 3-4 workdays. Then my project manager throws in another 3-4x on top of that to deal with scope creep, rework, bug fixes, etc... and we're usually on-target ~50% of the time.
An SDE1 was expect to spend 4hr coding a day; an SDE3 about 2.5hr coding a day.
That’s normal for a job, eg, apartment maintenance (my college job) would have us actually wokring about 4 hours a day, between setup, cleanup, breaks, travel, miscellaneous tasks, etc.
Convincing other SDEs to assign points to stories based on that (4hrs of coding per point) was surprisingly hard.
The non engineer types won't hand you that, but I've had some success with proposing that when there's a lot of uncertainty.
Sure we can, it's always one of:
- A couple of minutes
- Today
- A week or two
- Probably around a month
- I have no idea, could be any of the above or more
The most common problem with estimates is hidden or forgotten complexity, which makes both time and "effort", whatever that means, go up.
> software engineers can't estimate how long something will take with any kind of accuracy.
This is both irrelevant and wrong.
It’s irrelevant because t-shirt sizes, story points, and other abstract measures, are - intentionally - not measures of time. It’s a measure of effort, benchmarked against other units of work. Yes, this can, sometimes, give a vague indication of time. It’s also useful for other reasons, too, like weeding out whether or not everyone is on the same page with regard to what needs to be done in the first place. All of this is explained in literally any primer on the subject.
You’re wrong in saying that software engineers aren’t capable of estimating effort (or even time) with any degree of accuracy. They can. I can tell you that my Python hello world script will take less time and effort than rewriting the Linux kernel. None of the “research” and “experience” that you so confidently refer to says what you think it does. It says that there are big limitations to the degree to which timelines can be estimated. This is entirely true. But there’s nuance to it. You’re so desperate to find a shortcut to being smart on the internet that you’re spreading blatant disinformation in the process.
Software engineers can't estimate how long things will take: https://www.sciencedirect.com/science/article/abs/pii/S02637...
They're wrong, 60% of the time by overestimation and when underestimated, so vastly wrong it's terrifying. I remember this one time I merely had to update a component in prod. Everything went fine in staging, then when I pressed the "button" in prod ... all hell broke loose. We spent the next 4 days fixing it.
I never wrote that software engineers can't estimate effort, I said they can't estimate time, but you're accusing me of the former.
If you're working with a system where your staging environment is not sufficiently close to your prod environment to be entirely predictive of behaviour, that's a "known unknown" and should be in the estimate.
The time/work to investigate and fix it probably wasn't considered (or shouldn't have been, at least) part of the work on the component you were changing - that was just delayed, same as it would be in scenarios like "Dave got hit by a bus and he's the only one with the prod password" and "Our CI service suddenly went out of business and we need to migrate everything".
I've written TV apps and in that world I've often given estimates that are 5 days of actual work but, because Samsung's QA process can take 6 weeks and spurious rejections are common, "deployment" will often take literally months.
Time to release and time for development can be totally different things and it's arguable whether "waiting" time should be included in any individual estimate at all. (You're adding 4 separate features and doing 2 bugfixes in one release, which one gets +2 months? In reality "submit/release" becomes a different ticket/task.)
How would we measure that?
Of course, the business still needs time estimates, so someone will somehow attempt to turn them into time estimates. But that can't be helped.
Yeah, when put as an estimate of effort or complexity, we can be good at estimating that. But that isn't how it was put.
> so someone will somehow attempt to turn them into time estimates.
It works until it doesn't. I would estimate manually entering data as "pretty easy" but it won't be done in a day no matter how much you pay me. I can only type so fast. There are many tasks that are easy but take a really long time, and many complex tasks that take a very short amount of time.
Software engineers, when pressured by managers to provide low estimates and/or to provide estimates quickly, will estimate inaccurately. (It can also be deliberately high as well as low, based on previous experience of having their estimates chopped in half.)
Whether you use SP or T-shirt sizes or whatever, somebody is translating that into days because days (and thus dollars) are what matter to the business. If someone asks me for an estimate, I'll give them a range in days/weeks, and they can turn it into whatever nonsense unit they like.
I'm sure some people are significantly better than me at estimates, but I haven't met them. Estimating the unknown without serious research that borders on just doing the job is nigh impossible. And we're just an in-house dev team, so we never, ever do the same thing twice.
Estimating how long to put up another wordpress site is a lot easier than estimating a new project with new requirements and new tools. I typically find that people who think estimating is easy are just doing the same things over and over for new clients, rather than doing new things all the time for the same client/employer.
There are simply too many unknowns in other libraries and systems to be accurate.
A hobby gives me enough distance from work problems to come back to them with a fresh perspective and more energy.
Often when people are asked who they are, they respond with their job titles.
I grew up further North in a region where every house had some tools for working wood. It was natural, some people were really good at it, some mediocre, but using a manual wood planner or a wood chisel was almost routine for any man or kid. I am no longer living there and I am not working with wood, but I find it escaping to do some work in the garden, put some pipes for irrigation or fixing something on the vise. It is a different world than the craziness of the software industry, especially in the corporate world.
Lovely phraseology - this definitely resonates with me, and is one of several reasons why any interest I might have had in working in tech has evaporated.
I am currently happy at my current job that pays well enough writing proxies. The team and leadership are great with tremendous internal training. It just feels military, which is fitting since it’s at a military organization.
If this line of work doesn’t work I will still not go back to software. I would rather be unemployed and lose my house.
Some ppl simply dont have money to start:
- woodworking
- sailing
- skying
- buying motors
- building boats
- renovating cars
Be happy you are in 1% of the richest ppl on the Earth.
Most of my friends are happy when they can get by in given month.
If you're only in it because it pays well, you've got the wrong idea and will run into those "throw the laptop out the window" urges and are likely to burn out fast and take up woodworking, or some other thing.
I think it's working for a huge corporation vs a tiny one.
If you feel drained by all the bullshit of your current development job, I'm guessing you work for a huge company. Start work at a <10 employee company, and see if you can find more job satisfaction there.
I dunno that it's a midlife "crisis" per se. I think the older you get the more aware you are of the time that's left, and you ask "why are we doing this" instead of assuming there's time to do anything.
Actually, these solutions are just two different ways of working toward the same goal: absolute power
This attitude will fail you. The meaningless work must be done as carefully and joyfully as the meaningful work. Think of it as building the foundation for serendipity, something very difficult to see from the present moment.
I do a lot of programming, some wood working (a little fine stuff but also timber framing), stone work, and (ornamental) gardening. I find all of these things very similar. Building, guiding things that I don't quite control towards an end I want. Open-ended and creative. I find all of them very relaxing.
> software dev as we know it is about to disappear soon
circa 2006 my father begged me to not pick Computer Science as a major. He was certain by the time I graduated there would be no jobs left.
> And I got so tired of everything being online, immaterial, ephemeral and lonely, like indie development tends to be.
Ah well, it's good he's not gardening!
Tools-wise I bought a used bandsaw for cheap. Added a riser block and made it a pretty awesome tool. I bought a jointer from someone down the street, again for cheap, replaced the knives and it's pretty good. You can get started for reasonably cheap.
There, fixed it for you.
People are the same just pay sucks way more.
I wholeheartedly endorse woodworking as a meditative hobby to forget about your day work but as a career path you are going to have some very rude discoveries.
Looking at their projects it's mostly basic carpentry level as well. Fine woodworking, the projects where you can charge five figures for a dining table (and you spend a few months making it full time), needs much more design vision and years of practice. Those 10k hours required to master a skill seem about right.
Been through a burnout 20 years ago, had to take a year off and then discovered that if you place correct boundaries and don't let people mess with you, our trade can be pretty enjoyable.
The best way to avoid turning a meditative hobby into a job is to resist the urge to monetize it.
Your basic carpentry diss is unwarranted IMHO. I enjoyed reading about and seeing the projects produced with simple tools and some work. The author is clearly very creative and resourceful and I bet this inspires a few people look for a creative outlet of their own.
This is exactly what I meant. However OP started off talking about switching careers.
As a hobby they are doing great, producing stuff they need and having fun doing that. No-one can criticize this.
> Your basic carpentry diss is unwarranted IMHO.
If it's a hobby sure, absolutely. I think the stuff they are doing is fine.
But as a new career this is going to be very tough if they don't up their game into some direction that is either very efficient volume production or high quality design and craftsmanship. There are obviously also education and youtube paths but both have also tough requirements.
Even famous fine furniture makers are complaining that it is very tough to live off commissions.
I didn't really mean "switching careers" although I see how that can be read that way. I meant more like leaving the current app income stagnate until it goes down, and in that time I would eventually find a more physical job to support me. Not necessarily woodworking.
I watch youtubers that work their asses off to earn thousands of dollars on a piece they've worked months, and like I said there's no undo. A mistake can set you back a lot. I know we have it good in software.
I don't know if I'll ever have the skills to create wood things that I would be able to sell. I'm thinking maybe I could do that with Kavals, there's less expectation and competition there. But furniture.. I don't know, I will probably end up in the same state as with software.
It's really satisfying to see stuff grow, to learn how to tend to plants, how they compete and cooperate.
It helps me to preserve some sanity.
It blows your mind, if you think about it for a moment.
The lesson: Woodworking is physically dangerous, do not cheapen on tools and protection.
I enjoy the former. I enjoy collaborating on my craft and doing something fun and cool. I like the people I work with and enjoy helping grow and build other people’s careers.
Then there’s the reality of navigating a workplace - the “career” has the silliness of managing narcissists aspiring to be the next Steve Jobs. It’s generally lucrative, but that money attracts its own absurdity and egotists, putting more into advancing their status in an arbitrary org structure than building. The older I get the less energy I have for these sorts of politics.
Let me tell you, there is nothing more joyous than going outside 3 days after planting new seed varieties in a recovered-soil hügel-bed, and seeing brand new leafy life reaching for the stars. I get the same sort of buzz out of watching seedlings push dirt out of the way, as I used to get from checking for PR's on some of my repo's, lol ..
Its at the point now where I have to have a desktop garden, or else I just don't feel complete as a human being. Lucky, there are tons of things I can take from my new hügel-bed's to plant on the desk, herbs, spices, salads and things .. its just so rewarding.
So yeah, garden, programmers. Garden. Its so good for you. And you can get a buzz from the methods, just like you do with code, too ...