Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What was your most humbling learning moment?
532 points by spcebar 6 months ago | hide | past | favorite | 680 comments
I've worked on large products for large and small companies and written tens of thousands of lines of code across my career, solving complex, abstract, challenging technical problems in a variety of languages on a variety of platforms, sometimes under difficult conditions. I have often been a resource for my friends and co-workers when they have programming or technical questions.

I only recently learned how to correctly raise and lower window blinds--I had been doing it wrong my entire life. It was maybe the dumbest I have ever felt, and was a humbling reminder of how much I don't know about how much I don't know.

Have you had similar experiences?




Learning that some folks can produce so much value with crappy code.

I've seen entire teams burn so much money by overcomplicating projects. Bikesheding about how to implement DDD, Hexagonal Architecture, design patterns, complex queues that would maybe one day be required if the company scaled 1000x, unnecessary eventual consistency that required so much machinery and man hours to keep data integrity under control. Some of these projects were so late in their deadlines that had to be cancelled.

And then I've seen one man projects copy pasting spaghetti code around like there's no tomorrow that had a working system within 1/10th of the budget.

Now I admire those who can just produce value without worrying too much about what's under the hood. Very important mindset for most startups. And a very humbling realization.


I had a colleague who was old school and loved optimising, everything he reviewed come back with tiny changes that would save fractions of a ms. His nemesis was a guy who was arguably the best coder I have ever worked with. Things come to a head in one meeting and old school said if we did things his way our code would run quicker and the response was legendary 'If we coded like you it'd run quicker because most of the functionality would be still in the backlog.' I still think about that when it comes to optimisation.


The problem with optimisation is that you first need to decide what you’re trying to optimise for. Latency? Throughput? Overhead? Correctness? Time to market? Ease of ramping up new hires?


'Optimising' for simplicity would often be a good idea, though.

Optimising for speed of execution only matters some times.


Optimising for simplicity first is almost always the right thing to do. Even if it turns out to be too slow you then have a reference implementation to confirm correctness against.

In my experience it's rare to correctly identify the bottleneck in code while writing it.


Depends on your definition of simplicity.

Some view simplicity more as minimizing lines of code, e.g., less moving parts.

I view simplicity more as increasing lines of code, the goal being to make the code very verbose. Sometimes this means more moving parts, but smaller "movement" at each step.

There are other views of simplicity as well.


> In my experience it's rare to correctly identify the bottleneck in code while writing it.

Why? It is so easy, just think of the work being done and pick the big parts, those are the bottlenecks.

Only reason I can see anyone fail at that is that they don't know how long things take in their programming language, but that takes very little time to learn, and once learned you will know the bottlenecks before writing.

In so many cases the bottleneck is using bad data structures everywhere, that often gets you 100x runtime and doesn't show up in a profiler because it is spread out all over the codebase, that is the real bottleneck that never gets fixed and is why programs are slow today. To fix that you have to learn to know the bottlenecks as you write the program and not rely on a profiler. Profilers helps you find how long things take, they are really bad at helping you understand how to make the program fast.


Oh, I had situations in mind where I can quickly write a simple version.

But sometimes when I really torture my brain I can spend a few days of doing mathematical proofs etc to come up with a even simpler solution.

That extra effort is only sometimes necessary. (But can be lots of fun to develop.)


The steps in this witty quote helps puts things in perspective as what anyone should do first when in doubt: "Make it work, make it correct, make it fast".


And the 'fast' can be optional.

But sometimes you already have something that works, is correct and fast, but you still want to simplify: for example, when understanding _why_ that code is correct is too annoyingly complicated to explain and understand.


With AMD having 128 core CPUs with a 192 core coming soon... Depending on what you're doing, and how you're doing, there's a LOT of raw horsepower you can throw at a problem. For example, a classic RDBMS (PostgreSQL, MS-SQL, etc) over more complex No/New SQL solutions.


I deeply hate this modern attitude.

It’s factually correct due to hardware and compilers (néé transpilers) offering so much headroom, but part of me cries when you compare modern hardware utilization compared to how optimized-to-the-gills late generation PS2 games were.


I would argue that the fast part isn't optional for web apps (where "transpiling"), but it can be in many other instances.

I write a lot of data-pipeline code in Python that mostly runs once a day. Does it matter if it takes an hour to run instead of five minutes? Not really, as long as it's ready to go for the next run.


It breaks the flow of the quote, but it really should be 'make it fast enough'


Reminds me of a mantra I picked up from somewhere on the internet:

1. Make it work

2. Make it right

3. Make it fast


Once you realize this, you are actually invincible as a SWE.


The greatest trick Matt Godbolt ever pulled was putting gcc -E on a website. Probably produced more value worldwide than the whole rest of his career.


That's just a rude thing to say. If you all coded like him you wouldn't be having the discussion.

The issue is when you have people who do not code with efficiency in mind, and someone who does think about those things reviews the code.

Most efficiency gains are probably marginal and not that impactful. So you're probably OK ignoring it. And it's true that bringing such things up during code review and then going back and changing it will take more time.

But if people wrote the code with efficiency in mind to begin with they likely wouldn't be spending much more (if any) time while writing the code. Just have to use their brains a lil.


And then you get an in-memory SQL database that is used for cached settings with a text-based SQL query to retrieve every configuration setting (thousands of times during a login) and have a login that takes many seconds to run.

Literal example... replaced with a lock-free hashmap, and reduced the blink of an eye in terms of time.


I don't see the problem here: the original dev delivers quickly, the next dev gets to solve an interesting problems and gets to show off how much time they saved.


They could have used any hashmap or dictionary in the first place... The DB solution was far more complicated.


Delivering the over-complicated feature and improving the performance of the over-complicated feature both seem to get more praise than shipping the simple version to begin with.


Who cares? Do you do your job for head pats or to actually get shit done?


To make a living. Being acknowledged is good to keep at it, or so I heard.


This is it. People could write the code with a lean footprint the first time around.


As a good friend of mine often says: We work in a field of people who envision themselves as artists, when all that is wanted are painters.


No one wants to be a "programmer."

They'd rather be called "engineers."

With none of the licensure, mandatory education, and so forth. But the world needs programmers and technicians for most of the work we have to do. I do comparably little "engineering" and the little I have done that qualifies for such a statement I recall. Majority of the work is programming and technician work. Nothing wrong with that.


But other branches of engineering are also about doing a lot of repetitive work, exactly what "programmers" do.

Engineers shouldn't compromise on things like safety, security, legislation, budget, properly documenting, properly communicating with others, etc. Same as anyone working professionally with code should, no matter the title.

But there's nothing that says that engineers should only be doing groundbreaking or interesting work.

The "artist" analogy works much better.

EDIT: Perhaps the main difference is what psychoslave mentions below – engineers are expected to question the relevance and necessity of requirements, and work together with business, rather than just doing as asked.


Maybe not in the U.S. but in Europe, Software Engineering is often a field of engineering where one can get licensed.

i.e. in Austria many IT techs and devs are called (at the doctor's office or in formal settings) "Mr. Engineer" ("Herr Ingenieur") if they fulfill some formal criteria and get licensed. A further qualification is becoming a federally certified civil technician for IT (Ziviltechniker or Ingenieurskonsulent) - also something that public sector contracts sometimes mandate.

Software around the world is engineered - it just often isn't in California.


Here's a story for you: I was born and raised in Switzerland, but I live in Germany now. When I first moved here, I was working as a freelancer and needed to register as a sole entrepreneur (Einzelunternehmen, one of the legal entity forms here).

Now, there are several types of taxes you pay in Germany based on your income. One of them is the income tax, the other is called Gewerbesteuer (maybe best translated as "commmercial tax) - and the Gewerbesteuer can be significant (something like 12% of your income). Many freelancers are exempt from the Gewerbesteuer, and so are software engineers. However, I learned that you only qualify as a software engineer if you have actually studied software engineering or a closely related field. I had studied business administration. I tried to explain to them that I have been working as a software developer for over 10 years, literally doing the same job as somebody who had studied software engineering - to no avail. They woulnd't exempt me from the Gewerbesteuer.

I'm not claiming that I'm an "engineer" or that my computer science fundamentals are as good as somebody who studied computer science, but the tax exemption shouldn't be on some bureaucratic difference like what you studied a decade ago, rather on what kind of job you're doing.

Welcome to Germany!


Bizarrely enough, I always had "Software Engineer" written on all my documents here in Germany: my old Residence Permit, tax documents, contracts, the speedy authorisation from Agentur für Arbeit when I moved here, etc. As far as BRD is concerned, I am a software engineer.

But I never really studied software engineering or anything related, only Electric Engineering.

But nobody in the government knows that. I don't have my diploma papers with me and have no time or interest in going to my country of origin and ask my university for it.


It doesn't matter so much because with a degree in electric engineering you are allowed to call yourself an Engineer/Ingenieur, and that is the only thing that matters. It is a Ordnungswidrigkeit (administrative offence) if you call yourself an engineer if you don't have a at least 3 year degree from a university or university of applied sciences.

With a degree in computer science you are also allowed to call yourself an engineer in Germany, for anyone reading this and wondering.


Yeah, Germany is kind of a bureaucratic hellhole. And from what I know France is even worse.

As for formal education - I've seen dozens of people with an engineering diploma who barely can write a FizzBuzz, so it is not the best indicator and mostly people don't look at it when it comes to recruitment aside from big corps. Although that kinda changed lately as junior positions started evaporating and without experience the diploma is the main thing they check.


Yeah. I also never had problems getting a job or similar because of my non-CS degree.


I live in a country where software engineers often have engineering degrees.

What that means in practice is that they study math and physics for the first 2-3 years of their degree, instead of computer science or software engineering.

Does that make them build better systems than Californian devs? Based on company revenues and salaries, I’d say no.


> Does that make them build better systems than Californian devs? Based on company revenues and salaries, I’d say no.

Majority of silicon valley devs are immigrants though, they are good because they are sourced and filtered from all over the world not thanks to American education.


Many of the immigrant devs attended American Education like Stanford, Georgia tech, MIT, CMU, one of the UC’s, etc.


Yet almost every major piece of software or idea started in California and almost nothing noteworthy in the space started in Austria. I think that tells us something about the real value of a piece of paper granting you the right to call yourself an "engineer".


I'm sure there are many things which make this such an unfair comparison that it's not worth making. If there was a firehose of money spraying all over Austria as a result of being the worlds reserve currency I'm sure the shoe would be on the other foot.


What is the mechanism by which being the reserve currency sprays a firehose of money into the US?

Keep in mind that being the major economy also carries costs - the US spends many times as much as other countries on its military and has no realistic path towards spending less.

And either way, their economy has been wildly succesful since the 1800’s.


Plus primary spoken language (Austrian-style German) and size of domestic market explains a lot.


IrfanView?


> Software around the world is engineered - it just often isn't in California.

A gatekeeping organisation you have to pay to enter the workforce isn't the same as something actually being "engineered".


This "gatekeeping organization" is the federal government. They have you pass an exam to prove that you know about public procurement law and how to plan and oversee a software engineering project before they let you work on public sector contracts, where you have to responsibly handle tax payer funds.

For something like this to work there needs to be a strong and technically competent government that the tax payers trust. This is presumably why it works in Austria and not the USA.

You can enter the workforce as a developer here without being licensed or credentialed at all, it's absolutely no problem (legally speaking) - it's just an obvious sign of a commitment to engineering responsibility and quality.


    > they fulfill some formal criteria and get licensed
Can you tell us about the process to get licensed? Do you think it adds value for software developers?

And just to troll a little bit: Do they make you do any hard problems from HackerRank or LeetCode?


"Software around the world is engineered - it just often isn't in California."

Can you explain the difference between 'engineered' software, and the rest? I mean other than being created by someone with an engineering certificate or whatever.


I'm no defender of Degrees as a mark of quality

But, for me it implies that it gets Planned and Worked on formally like other engineering projects, Lists of Requierements, Detailed Propossals, Design documents, BOM's ,Gantt Charts, the whole shebang

The alternative being the ultra lean SV style, where a project is lucky if even the public facing documentation is not at least N-months out of date


Having any documentation it's pretty much a miracle.

Normally in startups it is very common to have the only available documentation be the code itself.


Lately I've come to understand the term engineer somewhat differently from this excellent video from the 'engineerguy': https://www.youtube.com/watch?v=_ivqWN4L3zU

He defines the Engineering Method as: 'Solving problems using rules of thumb that cause the best change in a poorly understood situation using available resources.'

In that sense a Software Engineer would not necessary need to know all the complexities of the complete system to make something work as specified. And I would equate a 'Programmer' more like the Scientist or Mathematician in this case.

Funny how there are so many different ways to look at a title.


Actually I call myself a developer. I'm not that good of a programmer, but quite resourceful as a developer.


Only reason I sometimes say I'm a programmer is because developer sounds like I work for an NGO


Yeah, developer is much more ambiguous. Could also be a real estate developer, or a business developer (fancy word for "sales").


I've come to understand the difference between programmer and software engineer, but what's the difference between (software) developer and programmer?


Maybe it's only in my head, but for me, programmers work 99% of the time with code, while developers also spin up servers, cicd pipelines, domain dns stuff, and more stuff that are not strictly source code.


Developers build software whereas programmers merely flick the switches on an Altair 8800 /s


I call myself an engineer- but the way I understand it is that I still have to know when to use a hammer like simply copy paste code and not some complex solution.


The problem in software is that very frequently you dont have a real hammer. You have hundred amalgamations of swiss army knives that do everything. Like what is the hammer when you want to add some nice dynamic content to a website? Is it just javascript or maybe react?, Angular?, Svelte? Or another example: you want to code a command line app, what language is a hammer here?: C++?, Go?, Bash?, Python?

This analogy falls apart the moment you apply it to anything in software.


Well, the engineer first move should be "do we really need this dynamic to achieve the global goal, or can we do without"?

Most of the time however stakeholders will prefer that someone unleash the last technical shiny tech stack (that no one master in the team and that is about to be dethroned by the even newest thing) to deliver a pixel perfect reproduction of the mock-up rather than question the relevance of the proposal.


I think I might actually like to do more actual engineering, using models and sound notations and planning, thinking about eventualities, not being told not to by management guys, trying to get it right the first time, instead of always being told "later", because otherwise people will suffer (or die) and all that.

I would perhaps even like there to be a license, because then we would maybe get way fewer people interfering with a technically sound decision process. As it is right now, every manager dude thinks they know better what to build than the actual programmers/engineers, even if the programmers/engineers work on the product for years already and have gathered experiences the frequently rotated managers lack. It is always soooo convenient for the manager types to defer good enginnering endlessly, so that ultimately it never happens and shitty products are made.


YES! Couldn't agree more. Although my title has always been Software Engineer, I never introduce myself that way (I prefer Software Developer or just Programmer, or I say "I write code at XYZ").

I went to an engineering school. Actual engineers design bridges and machines and biochemical whatnot, and of course require licensing. I push code around.

I even try to subvert company culture and say things like "Well developers will need to update that API" instead of "engineers".


I prefer the term "developer". In most cases, software is a craft discipline, not engineering.


Some of the best are in fact also painters.

https://paulgraham.com/hackpaint.html


It's the same in the creative industry, no? Teens fall into it practicing the techniques of artistic self-expression wanting to make a career out of showing the world themselves with expressive finesse, but the alienable value in these skills lie in using them to create a consistent brand identity etc.


This articulates something I've been thinking about quite a lot recently; quite nicely.


Tell us more! :)


To extend that further, most professional painters think of themselves as sanders.


Why?


It’s usually more than 80% of the work. Painting something is really fast with modern sprayers but sanding off the old layer is still a lot of elbow grease, even when you have sand blasters.


A Lot like development then, there is a lot of work before you write your first line of code, however like the original post you can do a simple sand down, no undercoat and have something that lasts a dozen years if you keep on top of it.


So we should put a bug in the room and if the painter whistles a tune while working, sanction them for slacking off?


I don't remember where I saw this quote, but... "It's okay to half-ass something, when all you need is half an ass".

EDIT: Totally agree about the 'important mindest for startup', I had a similar eye-opening experience, working in a startup with 'cowboy' code that was actually quite good, but I had to unlearn a bit of stuff I read as a junior/mid-level developper.

It was code that was well-architected, had well-concieved data structure, and had business value, but every "professional" coder would deem bad-quality, since it had no unit test, did some stuff unconventionally, and probably would have many linter warning.


Most scenarios only warrant fractional assing. Also this philosophy provides the opportunity to say “ok guys, this time… we have to whole ass this one,” which is always fun.


Some times you might even have to bring two whole donkeys to bear on a project.


Well-architected + well designed means you can go back later and fix the code if the project survives. I'm hitting this personally right now - the amount of code I can write is dwarfed by the amount of features needed to get something like a working demo out the door - I can spend time and make every thing perfect, or I can squint and imagine how I will implement fixes later and focus on making sure that I don't have to rearchitect.


Ask yourself: Will the amount of work it takes to "do this right" increase over time? (And by how much?)

I drew some quick placeholder art for a game I'm working on for fun. One day I might sit down and draw some good art, but not today. When the day finally comes to finish the art, the difficulty of creating that art will be no greater than it is now. In fact, with improving art tools, it may be easier to do later.

On the other hand, if I'm not quite happy with my database scheme and I want to change it, I can spend a day on it now, or I can spend--based on my experience--months on it in the future. In fact, there's a good chance if I don't fix the database schema now, it will never be done.


Exactly.


It was Gary Bernhardt in this talk: https://m.youtube.com/watch?v=sCZJblyT_XM



> "It's okay to half-ass something, when all you need is half an ass".

Going to mule that over.


Sometimes, in the interest of efficiency, you only use half your horsepower.


> Sometimes, in the interest of efficiency, you only use half your horsepower.

Or, in this case, half your asspower.

I think the asspower unit of effort makes more sense than story points.


or "If it's worth doing, it's worth doing badly."

Meaning that e.g. if you really need a ride, then a noisy, beat up old car will do.


> since it had no unit test

But aren't unit tests the half-assed solution? They are a wonderful help if you want to deliver something fast, but if you had more time you'd probably do something else.


It doesn't get said enough that unit-tests are not the ultimate in good code. There's a lot of shitty code with unit-tests, and there's a lot of really good code with no tests.


That's true, but a codebase without unit tests is apt to be deemed poor quality by professionals due to the time factor. Being able to release fast is an important quality of business software. Professionals don't look for perfect artistry, they want to see painter's tape in the right places to get the job done efficiently.


That's such a good quote, haven't heard that before


This is a false dichotomy. On one end, you have "overarchitects everything so much that the code is soon unmaintainable" and on the other end you have "architects the code so little that the code is soon unmaintainable".

Always write the simplest thing you can, but no simpler. Finding that line is where all the art is.


It's cliche, but I really do feel reading the Art of Unix Programming gave me a very good sense early on for how to walk this line carefully. Unix programs are high quality - but they're also, ideally, small, and written with an eye to compositionality with the rest of the ecosystem. The best architecture is in the middle, and often the best first draft is a simple series of pipes.

https://www.catb.org/~esr/writings/taoup/html/


(Honest question)

What is the difference between this microservice architecture that gets a lot of hate here?


I'm not the person you're replying to, but here's my take: even though the two look conceptually similar, Unix programs are just a lot simpler. All programs run on the same machine, they read their input, execute, produce output which is piped to the next program, and terminate. Want to change something? Change one of the programs (or your command line), run the command again, that's it.

Microservices are a lot more complicated. You'll need to manage images for each of the services, a fleet of servers on which the services will be deployed, an API for services to communicate together, etc. In many (most?) cases, a monolith architecture will be a lot simpler and work just fine. Once you reach the scale at which you'd actually benefit from a microservice architecture (most companies won't ever reach this scale), you can start hiring devops and other specialists to deal with the additional complexity.

What actually gets hate, I think, is not microservices themselves, but the fact that microservices are often used in contexts where they are completely unnecessary, purely because of big tech cargo culting.


We only think of Unix programs as simple because we have many more abstractions nowadays. But you should compare a Unix program with DOS programs (probably CP/M also but I never wrote those myself) at the time. Poking directly at the hardware, using segmented memory, dealing with interrupts. The idea that a program should be well behaved, should accept things an inputs, should push outputs, and should have a virtual address space are actually huge abstractions over what could just be a block of code run on a spare OS. I'm not saying that microservices are better than monoliths, just that Unix programs aren't as simple as we think they are in a world where we're managing servers like cattle and not like pets.


    > should have a virtual address space
I'm pretty sure that most of the GNU POSIX command line tools were written before virtual address space (VAS) was common. And, as I understand, VAS is hidden from the programmer behind magical malloc().


That's a great question. Some might say it's because of the network - that makes microservices messy and so on. But I dont think so, from what I remember plan9 (the os, successor of unix), Rob Pike wanted to make it so that there is no difference between an object being on the network or outside the network. In unix philosophy, things have the same interface, it's easy to communicate. For microservices it would be REST api which is unique to network things. I honestly see a direct link between these ideas. Unix here is projecting a much nicer, simpler image but nonetheless they seem to overlap a lot. The result in both cases seems to be a hard to debug network of small utilities working together. The saving grace for unix is that you are mostly using stable tools (like ls, cat), everything is on your system so - you don't get to experience the pain of debugging 5 different half-working tools.


Everyone wants to make network objects the same as local objects. Nobody's ever succeeded.


This is the first time that I heard about it. Can you tell me about other examples?


CORBA

https://en.wikipedia.org/wiki/Common_Object_Request_Broker_A...

This predated REST. And the rest is history.


Microservices provide encapsulation and an API interface, but are not composable the way Unix programs are when e.g called by a Unix shell on a Unix OS.

Either microservice A calls into microservice B or there's a glue service calling into both A and B. Either way there's some deep API knowledge and serious development needed.

Compare with a (admittedly trivial, but just doing that is orders of magnitude less complex than web APIs) `ls -1 | grep foo | sed s/foo/bar/g`, exit codes, self-served (--help&al.) or pluggable (man) doc, and other "things are file-ish" aspects, signals (however annoying or broken they can be) and whatnot. There's a whole largely consistent operating system, not just in the purely software sense but in the "how to operate the thing" sense, that enables composition. The closest thing in http land would be REST, maybe, and even that is not quite there.


>> Microservices provide encapsulation and an API interface, but are not composable the way Unix programs are when e.g called by a Unix shell on a Unix OS.

Because the Unix programs all use pipes as their interface. When you simplify and standardize the "API" composition becomes easy. Microservices are more like functions or modules each running as separate processes - if you use the same language for the services and glue you can just compile them all together and call it a program right?


My take:

Unix utilities are stand alone and used as needed for specific tasks. They hardly change much, have no data persistence, usually no config persistence other than runtime params, and don't know about or call each other directly.

Microservices are moving parts in a complex evolving machine with a higher purpose that can and do affect each other.


The problem is that they are microservices in name only. Where a unix utility does a few hundred or a thousand lines of C code for its entirety, a microservice will depend on a complex software stack with a web server, an interpreter, an interface with a database, and so on.

It's easy to forget this complexity, but it comes at a cost in terms of performance and, above all, technical debt. The microservice will probably have to be rewritten in 5 years' time because the software stack will be obsolete. Whereas some unix utilities are over 40 years old.


In theory, only the network boundary. Which allows you to independently scale different parts of the system

In practice, a way of splitting work up between teams. Also it makes it easier to figure out who to blame if something breaks. Also a convenient unit for managerial politics

So because manager X "owns" microservice Y, it's going to stay around so that they have something to manage. Over time the architecture mirrors the organization


If somebody created a complex system of one hundred small unix utilities that all talk to each other over pipes I am sure it would get abd deserve a lot of hate. Unix utilities are nice to do very small, simple things, but there is a limit.


Composability.

This does not mean "it's a small component in a dedicated pipeline". It means "this is a component that's useful in many pipelines".


Microservices require Kafka (or a Kafka equivalent)


You can do something like 0mq, but still need something to coordinate configurations on where service-x is, like etcd.


That's a really good book. Thanks for mentioning it


> Always write the simplest thing you can, but no simpler.

I don't think so. Time and time again the client will insist on stuff like "the customer only needs a single email address/phone number" but you're going to pay for that one later if you do the simple thing and add an "email" column.

Same for addresses.

And a whole bunch of other stuff...you need to normalize the heck out of your DB early on, even if you don't need it now. The code you can mostly make a mess of, just choose a good tech stack.


> You're going to pay for that one later if you do the simple thing and add an "email" column

You'll only pay if the project survives long enough for that new requirement to actually surface, which often it won't.


Go down the simple path to start, and refactor to a more complex solution when it makes sense to do so. If experience tells you the client is definitely going to ask for it later, add a “break condition” that tells you when you need to upgrade. You can put entry points into the code - comments, interfaces - to make it easier to do the upgrade.


In many many cases this doesn't work and it crashes and burns the whole project/startup company when its necessary.

Sometimes messing up your fundamental architecture means that you hit a refactoring your company won't survive (while your competition grabs all the customers who wanted that feature your architecture doesn't allow).

This is where experienced lead engineers earn their worth - they understand which parts cannot be fudged and fixed later and need to be there from the get go.


Normalise the DB from the get go (doesn't really require much effort), then charge for the fact that "actually we have a customer who has 2 email addresses".


That's not a "false" dichotomy, that's an actual dichotomy: it's a real thing. Reading your comment, even tho you don't say it, I get the feeling you'd be with the rallying cry, "Bikeshedders Assemble!" hahaha! :)


It's a false dichotomy because it falsely implies there are only two options. Better than either are the other options which lie in between.


Oh, I see. That's a good point. But I don't think hu3's comment was suggesting there's only two options, just illustrating some possible margins to describe the landscape.

Maybe stavros' was hallucinating that strawman reduction in there, is what I think. Like you don't have to say it's a false dichotomy unless that's the only way you read it. The existence of something between the margins, should be obvious. Anyway, haha! :)


Well, it almost always becomes an actual dichotomy soon, for sufficiently large values of "soon."


Yes, the compounding effects of previous architectural decisions, but not if you take a balanced path, guided by awareness of the two extremes. So it needn't. Hahaha! :)


> Always write the simplest thing you can, but no simpler. Finding that line is where all the art is.

As much as I love simplicity, optimising for peak simplicity isn't always a good use of your time.

Simple enough is often good enough.


IME, it's easier to fix the latter than the former, if only because there is a limit to how large the latter can be possibly become.

Small projects are easier to fix than large projects.


unmaintainable is a weird word used far too much. There are genuine ways it can become unmaintainable of course but the main use I have seen people use it for is "I don't want to understand it and would rather rewrite it"


There's a discrepancy that the top comments here say that "some people can produce a ton of value by not caring about code quality" and "I didn't care about code quality and got bit later on". And people discuss that incurring technical debt with bad code can sometimes be worth it and sometimes not be worth it.

The logical implication of technical debt having an interest rate (i.e. It costs more to fix something later than now) is that like money, features have time value. This is what makes it worth it to incur technical debt.

Thinking about the implied interest rate of technical debt makes it easier to rank what should be prioritized for a fix. High interest debt should be paid off first. But you might also focus on refactors that reduce the interest rate, such as by modularizing your code so it's easier to replace down the line.


Btw, if you like the financial metaphor, then technical debt is a bit of a misnomer. 'Technical debt' behaves a lot more like equity you sold than like debt you issued.

In the sense that the 'technical debt' is only something to worry about in the future, if your project goes anywhere. But if no-one ever uses your product, you don't need to fix the 'technical debt'.


Thank you! I like the metaphors because they allow me to think about related variables. What metrics would I use to compare different technical equity options? Is there an implied valuation of my project based on the % of developer time I have to spend fixing an issue related to the feature value?


I learned this lesson when working on very fast paced projects with way fewer developer resources than needed. to ship a feature on time, shortcuts in quality have to be made, but you learn to make the shortcuts in a way that are easier to go back and clean up later.

I became very fond of #TODO ‘s.


My manager gave me gruff the other day for adding a TODO that I had no intention of ever doing. TODOs are like a get out of jail free card. Don't want to do something the reviewer is likely going to call out? Just add a TODO.


That's why some people insists on having a name with each TODO, and some even want a name and a date.


some TODOs are actually WOULDDOs


I still find them helpful when the change is outside the cope of the current task. I especially like the ones that include both a reference to a Jira ticket (or similar), and an explanation of why, or any gotchas:

    # TODO: (CAFE-1256) Refactor steamed-liquid stuff to support non-dairy options
    #     We don't currently support non-dairy coffee additives, but once we do 
    #     we will need to ensure that the steamed-liquid transport 
    #     also alerts when users have a dairy allergy.
This is a lot of stuff to add for some things, so we might not want it everywhere, but it helps explain to a reader why we don't currently have it built (product doesn't need X yet), but also has hooks to existing (planned/canceled) tickets and is easily greppable (e.g. "non-dairy" or ticket name).


I agree with this analysis. Another important factor is: How likely will this code actually be used and drive business value?

If very likely, then you should invest in making the code high-quality. If unlikely, then you should half-ass the code strategically


I've declared quality bankruptcy. Decisions are now driven by user needs. Did I half-ass that feature? Yes. Is anyone actually using it despite crying it's essential? No. Then it's not getting cleaned up. Are they not using it because it's shoddy? I guess we'll never know.


My way of planning and writing software shifted a good bit after I went from working at a mid-size tech company to working for myself. Suddenly I cared very much about how long it took to reach a functional product and very little about developing sophisticated architectures.


Simple UX too. Early adopters are so much more forgiving of a boring but functional user interface than we want to admit. It doesn't have to look amazing out of the gate. It just needs to do something cool.

Plus a lot of our overcomplicated architectures on the frontend are because we shoot for a UI that competes with products that have been iterated on for 15 years now by teams of dozens or even hundreds.


Same here. This is what happens when business/developer interests align.


I can relate. I am now on a small team of half a dozen (2 front, two back, 2 devops). We've been smashing it for the last year, replaced a hodgepodge of systems with a configurable framework and a modular integration layer with third-party systems. As a reward our work the management are bringing in a consultancy we are supposed to train to replace us. That will be a very expensive and inefficient exercise. How do I know? Our small team was created to deliver what the previous consultancy could not do in 5+ years. That experience taught me once again that management in large organisations have no idea what they want to build, how to build it, how to maintain it, and that's where large consultancies come in, milk the client for all they can and leave a massive mess behind them.


The solution sounds simple: Refuse to train the incoming consultants. You can do this indirectly by quitting before the consultants arrive, or, directly, by telling mgmt that you refuse to train your replacements. Your experience sounds great to sell yourself into a new role with better managers.


I think one of the most valuable lessons I have learned in software engineering is that you can write entire projects with the express plan of rewriting them if they actually gain traction. If I want to prototype something these days, I will often write code that, while not quite spaghetti, would definitely not pass a proper code review. It's actually kind of fun. Almost like a cheat day on a diet or something.


Unfortunately, that rewrite step often doesn't happen. I can't count the number of times a prototype that was meant to be thrown away was actually put into production because "it's cheaper and faster than rewriting."


"There is nothing more permanent than a temporary solution that works"

I have no idea who said that, but I use it a lot at work when people want to cut corners with the intent to fix it later.


>I can't count the number of times a prototype that was meant to be thrown away was actually put into production because "it's cheaper and faster than rewriting."

Did the business make money, though? I think that's the law of the jungle


I’m working on a prototype now but I deliberately made it run entirely in the browser (indexeddb) to avoid the problem that I might be asked to put it in production!


Yeah, there is that. I guess this comes with the caveat that you have to have enough say in the project that you can mandate a rewrite.


"Phase 2 never happens"


I think the other replies miss an important part of your comment:

Some of these projects were so late in their deadlines that had to be canceled

Speed is really important a lot more often than devs like to acknowledge when a company is small and fighting for its life to get revenue, let alone become profitable, and the code debt is often worth it. Fixing the code debt itself doesn't need to be any more thorough than necessary either.


> and the code debt is often worth it.

This is something that I like about the metaphor of 'code debt', and which tends to go over peoples head: debt can be a perfectly fine instrument, and just like a real debt, it can be a good thing when leveraged wisely. The issue is more when debt is treated as 'free money', and is used carelessly.


At the same time, companies often fail to invest into long-term goals, like maintainability, increasing test coverage, or even bettering the internal UI, even when it’s their core, business-critical product.


And the other part is just the sheer amount of projects that can't deliver that "speed" after a year or two because shoddy, quick and poor decisions were made around code quality. Once you find out that your startup chose the wrong architecture because "we need to do it fast" and it needs to stop pivoting for 6 months to unfsck themselves, it's mostly too late.

Unfortunately people who create those monstrosities hide behind the same "keep it simple and quick" excuse than people who know how to prioritize.

It's interesting how many people here ignore that scenario - it's surprisingly common. Is it because most of developers jump ship at that point?


I have to kind of ask, maybe it's the design comitee that instead produces the sphagetti in that case? They are trying to commit themselves into decisions without much knowledge about the problem they are solving. I understand this is the reality of business and so on but let's not imply that this is good software design. The basic operation of abstraction (as this vague magical thing which creates concepts) is something that has to have something to abstract from. When we do abstraction in a bubble, not informed by the problem - like the design comitee does. What we get is abstractions made from abstractions: foundation less non-sense. Maybe it's this spagetti monster, the rogue coder, the guy that actually tries to solve the problem - the real designer.


This comment deserves more upvotes.


Exactly this - I've a colleague who just fell into "solution mode" and started whiteboarding a LLM framework he could fine-tune with RAG and some 3rd party vector database. It's six months later and there's still nothing working or even a deliverable schedule.

Compare this to another colleague, with an almost exactly similar use case, who just downloaded an open-source LLM, wrote some glue code and set it loose in production. It's not pretty but it (mostly) gets the job done.

As the old addage goes "Perfect is the enemy of good".


Like with all things in life, one need to find balance within the two extremes you posted.

There's overcomplicated, there's too basic, and then there's simple.

I think it's fine adding just enough complexity and abstraction to make something malleable and manageable in the future


I am one of those people who wrote a production system controlling a million-dollar business fifteen years ago that is now controlling almost a billion-dollar production system today. The auditors are the main reason it is being changed, "single man risk" and "Obsolete software" (Delphi/MySQL) being the two highlights from the Deloits IT team.

The code is not brilliant, it is full of technical debt (as thats what happens when companies grow and change) but is still perfectly maintainable.

I have been watching the herculean effort of three different teams to replace this system, carving off the low hanging fruit to NetSuite and React/Java applications while repeatedly delaying the core system while they agree on standards to use.

I stick around as I am quite close to retirement now and the employees and the company are good to work with and don't deserve me to abandon them. At this point I genuinely want the projects to succeed so I can move on as there are many small companies still out there that I can make a difference in even with my age, single man risk and obsolete software.


Having heard a variation of this comment many times, I keep waiting for an “aha” moment, where I see the light and abandon my obsession with minimalism and clean code.

But at least in science roles it hasn’t happened yet. Rather, I keep seeing instances of bogus scientific conclusions which waste money for years before they are corrected.

Being systematic, reproducible, and thorough is difficult, but it’s the only way to do science.


Literally the only thing I tend to worry about up front is deployment automation. I've worked in so many environments that don't have it, or have some byzantine manual deployment strategy that just gets irksome and difficult. I'm a big fan of containers, even for single-system deployments. If only because it always bites you when you are under the greatest time pressure otherwise.

Beyond that, my focus is on a solution to the problem/need at hand, and less about optimizations. You can avoid silly stuff, and keep things very simple from the start. Make stuff that's easy to replace, and you often won't ever need to do so.

Most software isn't about science, and isn't engineering... it's about solving real world problems, or creating digital/virtual solutions to what would otherwise be manual and labor-costly processes. You can shape a classic rdbms into many uses, it's less than ideal, but easy enough to understand. Very few jobs are concentrated on maximizing performance, or minimizing memory or compute overhead. Most development is line of business dev that gets deployed to massively overpowered machines or VMs.


But that's just the point, for most problems most people have, you don't have to be scientific. If your invariants vary and it breaks 5% of the time that's fine and nothing bad happens.


There's so much waste in the world, that it is unbelievable.

However counterintuitively, I have stopped caring about waste, and have been more focused on the value. Waste you can always optimize later if you want to, value creation is the difficult part.


So much this. But there is a fine line somewhere in there. I have seen and admittedly worked on such projects where time constraints simply do not allow you to polish all bits and pieces. That's perfectly reasonable during POC/early development stages and if anything, I encourage it: Writing hundreds of tests when all requirements change three times a day is incredibly counter-productive, slow you down and eventually burn you out. It may happen that crappy is much better than shiny, polished and over complicated if the project itself is not going to scale any further than it already has. And once you get a more complete picture of what the end goals are, then you can go back and gradually start doing things "the right way". But I've also been in another extreme. Take my old job for instance, which despite my at the time cognitive dissonance, I hated to a large degree because of this: relatively early stage with ever-changing requirements, endless dependencies, brutally unstable setup for development where deploying a single pod in minikube was a terrifying prospect because everything was hanging by a thread and rebuilding the cluster took hours. That was made even worse by dozens of forked open source projects that were patched left and right to fit the needs, lagging years behind the original projects, wild dependencies between repos, no real observability over what was going on, the version control was catastrophically packed with auto-generated code(like 80% or more) which was made worse by the fact that everything was git push --force so they don't have to deal with conflicts. Imagine having to explain that this practice should be avoided in nearly all cases. In a nutshell imagine crappy code and infrastructure which pretends to be and is sold as an enterprise grade software. I guess cognitive dissonance was a common theme in the company since everyone was under the impression that everything is perfect. Which couldn't have been further from the truth.


The lack of these design elements in a solo project does not define crappy code. More often, it's due to a codebase being modified by multiple contributors, each wanting to get their work done quickly without paying attention to the overall context or considering others' work.


Similarly, some entrepreneurs (non-tech)e who can produce a basic MVP that generates money from the start, sometimes to an insane MRR. They use something like Google Sheets, Bubble or pay a dev shop a fraction of a corporate project to get it done.

As a struggling solo tech founder, I'm in awe.


I can totally understand the move fast and break things mentality, but I'd like to stress it's equally important to pay back the occurring tech debts. I am working on a massive spring monolith that's somewhat of a huge pile of spaghetti, and when the higher management decided to enforce code quality in the pipeline, it became a living hell to work on.

I can't even add a logger without having to refactor the whole 2000 line class while writing a whole-ass unit test for it. It's been a full year and I still have to deal with this sort of crap on a weekly basis.

The most ironic part is that most of the devs that cooked the spaghetti are now either in upper management or in the same devOps team that's demanding us to clean the mess up.


I've come to the conclusion that you can't architect yourself out of this.

What you might do is write tests early, so at least you have integrated a test rig to build on if the system actually gets any use.

Most of the work on mature systems is like this, rewriting and refactoring stuff. If it is very concrete, non-abstract, it's generally easier to work with in this phase than if it was cleverly and abstractly architected. Even if it's a big spaghett.


You refactor and abstract later. A key principle absolutely no one observes. You have to let people turn out slop and then let them clean it up.

Instead it's combative code reviews where everything has to enter the code base perfect.

Makes me sick.


I’d argue that by definition, code producing value is good code. It may not be the best, but it has to be at least good.

Almost everything else about code is subjective, but value is objective.


100% agree.

JUST_DO_IT (add value, fast) <-----------------------------------> WHAT_THE_BOOK_SAYS (enterprise arch etc etc)

The BIG problem is the total misconception that:

> JUST_DO_IT = bad engineering

> WHAT_THE_BOOK_SAYS = good engineering

In reality, the quality of execution is independent of the development approach - you can make a complete mess of either approach, however, the WHAT_THE_BOOK_SAYS approach WILL cost you a LOT more time and money to discover your team has messed up it and WILL cost a lot more time and money to fix.

My experience is that, just as your product evolves & grows, your engineering strategy should evolve and grow. There's a good reason why fortune 500 companies will have enormous IT teams, using enterprise cloud technology... and there's a good reason why successful tech start-ups do the exact opposite.... but hopefully, the startup will become a fortune 500 company.


I wonder if you’ll still admire them when they leave and the burden of maintaining the mess they left behind falls on you.


I'm numb to it. It's just a fact of life because tenures are so short, quality is often very opinionated, and jobs are readily available, and you usually get a raise from the next job too. You do what you can to stay employed until you can get the next job lined up.

It has become overwhelmingly obvious that the industry is never going to reach a state where technical debt and bad code is exceptional and high quality is the norm. If there is a maximum amount of pessimism I could have, it would be for this.


I had only one job so far where code quality was a primary objective it was fantastic, but it was also extremely slow and expensive. Slower and more expensive even than what you're probably thinking right now. I was shocked.


Nothing to maintain because all the overengineered projects got canceled.


The team that prides themselves on "we'll take a bit longer to get things right" usually winds up takes much, much longer... and still gets it wrong.

By that point, the fast team would be on their third iteration.


That's not bikeshedding, but the product of these types:

https://en.wikipedia.org/wiki/Architecture_astronaut

...bikeshedding is when you have that all-day, all-teams meeting where marketing and design and management argue about whether to put X content in the header or footer.


So hard to resolve this in my head - unless it’s understood there’s a “detonate” button attached to the code, that it might escape, or worse, that it gets passed on or sold(!!) is a chilling thought.


Just leave comments for the most embarrassing pieces.

// really not the way to do this, but it works

// ideally, we'd do xyz, but this is good enough


This is how all modern software should be made.

Optimizing for 1M concurrent users, paying down tech debt, refactoring, and testing are all things that engineers love to cite that will somehow make everything better. The customer won't feel a single one.

Spotify uses 42 different versions of jquery (among a dozen other libraries) and it's working just fine (with >1M concurrent users).

Even electron! That crap is so heavy, its (lack of) performance is notable. But! Many billion-dollar companies built on its back.

I laughed when an exec at Evernote told me that every year they go to MIT to try to recruit the top 1% of cs grads. What a waste of talent.


Ohh yeah.

A few years ago I worked on a system that had replaced a previous system that was like that: a bunch of microservices with multiple instances, communicating via message queues, all in the name of scalability and high availability.

The actual nonfunctional requirements? Handle between 0 and a few hundred requests per day, and it would be just fine of they get delayed a few days as well.

The best part was that the overengineered previous system actually had far more outages and delays caused by its complex deployment and data model than the simple single-instance monolith that replaced it.


I always find these discussions interesting.

I've been working for the same company 10 years. When we built project A, I was surrounded by people who had built the same product for the past 20 years together. As a younger dev, I deferred to them as they were much older and had done this before. You would probably admire them. They pumped out code and delivered immense value. We had no over-engineering because there was no upfront design discussions. When we needed to use some service, we just wrote that directly in our normal framework code instead of using some over engineered abstraction. That's usually highly praised here on HN.

Years later, that project became an extreme maintenance burden. There is no separation of business code from framework code, so the first major framework migration took... years. When they completed the framework migration it was already 2 versions out of date. Subsequent upgrades were faster and given more priority, but still took multiple months. Onboarding new clients took whole teams. The code is fragile, lacks test, etc. The app is classic "spaghetti code". But they sure got to production quick!

Around 2.5 years ago, I was tasked with building project B. There was no development team. I worked with two domain experts, but ultimately the development of the product was in my hands. This is a product that will live on for at least another 10 years and will likely overtake our core product in revenue. There is no one to blame, but myself, if in 5-10 years this app becomes another unmaintainable mess. If you're in this position, what do you do? For me, all I could do is draw on my experience to try to avoid the mistakes I've seen made in the past. We made a lot of mistakes in project A, but I knew a big one was tying our business code, the core of our business, to the particular flavor of web framework that happened to be popular at the time the project started. How do you avoid that? Well, "Hexagonal architecture" sounds like a big scary buzzword, but it's a damn simple pattern that solves that elegantly. When we started, I basically received an indirect mandate that we use the same framework as project A. After we had written ~25k LOC, I had enough and we dropped that legacy framework and migrated to something much better. And we didn't have to change a single line of our business code. Our new framework allows us to iterate much faster than legacy framework. 2.5 years in and our code looks as clean as that initial POC I built. Hexagonal was a small bit of the initial architecture I did. I only point it out here as a counter example. But all the little things I've done which are considered "architecture" have paid off years down the road.


Interesting.

I'd like to think that, most probably, your job exists and is funded because those folks (and you) "got shit done" for the last 20 years.

In my experience (around 2 decades also), when it comes to small/medium projects, spending a bit of effort separating business logic from UI/database/server code is wise up to a certain point.

If the effort doesn't add too much code and layers of indirection, then fine.

However, DDD/HexagonalArch consultants tend to add soo much boilerplate and layers of indirection between between an HTTP request and a response that it becomes detrimental to productivity.

For example take a look at this article:

https://herbertograca.com/2017/11/16/explicit-architecture-0...

Specially this part (but the entire article is a gem):

> This means that Dependency Injection and Dependency Inversion are not enough to decouple components, we will need some sort of architectural constructs. We might need events, a shared kernel, eventual consistency, and even a discovery service!

Respectfully I'd like to think that it is satire. But it isn't.

With events your code is no longer linear. Stuff happens with triggers (events) that are not clear at first glance unless you fully understand the entire stack.

Shared kernel is just a place to shove interfaces under the carpet and pretend code is no longer coupled because you added extra 2 layers of indirection (interfaces and kernel) between 2 lines of code. Congrats now it became much harder to understand what actual code will be executed when I call this method.

Eventual consistency... Is that a good thing? We spent 4 decades maturing ACID compliant transactional RDBMS only for someone to come and disregard all these gains?

Discovery service... Yeah your code became so complex that you need more code to discover code. Because we can't have one layer calling another directly. Nonono, that would be coupling. And coupling makes it hard to change frameworks in a distant but slightly possible future. I'd rather pay a very expensive insurance from now on to safeguard from that possibility. Even though the insurance itself is so expensive that it alone can suffocate the project.

Sorry for the rant.


Haha, I read through the beginning of that article which focused on hexagonal. While it was an over-complicated example, it didn't look too bad. But then skipped ahead to your quote. It definitely felt like satire to me! (Or at least I hope it was!).

And that's where a balance is needed. No one seems capable of defining what good architecture is. We have plenty of posts about spaghetti code, architecture astronauts, etc. But there's few comments with success stories, especially about fixing a spaghetti codebase and what that project looks years down the road. And I think that's because the problem is multi-faceted.

It's not "just" a technical problem. From a technical side, it's primarily lots of little patterns that as a whole add up to producing quality code. But there's also the social side, to hiring, reining in devs, enforcing the code patterns and quality, pushing back on business, etc. I can give lots of examples, but this would be a long post. All of these factors ultimately determine the fate of the project, the quality of the code, and whether it becomes spaghetti code or an over-engineered mess.


In 1993 I was interviewed for an operating job in a power plant for a major airline, assigned to their data center. At my current job, I was working in a high rise office building with sixty-six floors.

The operating system computer was a JC8520, which was running a version of MS-DOS. All commands had to be typed in correctly or nothing would happen. While operating the plant, several commands had to be entered every shift, since the owners didn't purchase a very automated package.

In the interview for the data center job, I was asked if I had any experience with Windows. I didn't understand the question because I wasn't aware they were talking about a computer operating system! So, I replied at the office building I worked in there were outside contractors who cleaned the windows.

After my reply all seven of the interviewers were all grinning and I was aware I said something they weren't looking for. One of the men politely told me Windows was a computer operating system. My reply was, "Oh, I see."

When I returned home I told my wife what happened and we shouldn't get our hopes up. To my utter shock, a week later I was offered the job, which I took and after some training, learned something I didn't know before.


I work with Apache Airflow. But lead my sister to believe for a time that I had begun to transition to a career somehow related to HVAC and solving the problems associated with "patchy" airflow in certain places.


That's where Apache got its name; "a patchy" [web] server.

(It's since been backronym'd a bit.)


> While operating the plant, several commands had to be entered every shift

That reminds of the bunker from Lost.


4 8 15 16 23 42


Thankfully IRL no planes were at risk of falling out of the sky, I assume.


Definitely not the ones with the bouncy sound..


Not as good as your story, but here's mine:

First job out of school, fresh ECE degree in my back pocket. I was hired to be a Unix Administrator (SunOS, AIX, Linux). This was a AS/400 shop and nobody knew Linux, the last guy just left.

They show me a Linux terminal that was just booting to a 'LI' and asked me to fix it. I had never fixed a lilo issue at the time and my skip manager, a as/400 guru figured it out by reading the docs.

I felt like an imposter and an idiot in on day. But I learned that I didn't know sh*t and my learning was just beginning.


I was once asked about Slack, fortunately they were already a colleague


J. R. "Bob" Dobbs?


Man I really hope other people get this one, because it is awesome.


Perhaps you can explain the joke, and why it's funny for you..? I do enjoy jokexplainings, not as much as a joke I do understand, but even more than jokes that I didn't get.. ;)


You must have absolutely nailed the rest of the interview!


It was the early nineties. If you've touched a computer, companies would assume that any skill gap you had you could straightforwardly bridge yourself, on the job.

It wasn't like today where you have to be a perfect cinnamon roll of a candidate who ticks all of HR's required-skill checkboxes before you can move on to the grueling 5-6 rounds of interviews.


This is not an exaggeration. Those boom times, much like the discovery of gold on the Klondike, was the wild-west of information technology. If you had a pulse, and knew which part was the "mouse", you were employable. Granted, you might be fixing dial-up modems or troubleshooting email settings all day, but work was plentiful. And yes, your job responsibilities and "training" were one and the same.

And dear reader, if this has you thinking that the early internet was a planet-wide bird's nest of bailing wire and duct-tape slapped together by amateurs, you're paying attention. Huge parts of it were just that. We're all better at it now, but "better" is a relative term and not evenly distributed.

"Entry level" doesn't even mean the same thing nowadays and it's a crying shame.


This is so true.

I remember one of my interviews that went well in the end. In the middle of the interview, they mentioned using Java and building web apps. At the time, I was a C++ developer with no web development experience.

I said: "I never did web development," and their response was, "You do know how to write source code, don't you?"

I said: "Of course I do, but..."

They cut me off with: "You will pick it up, don't worry about it."


Maybe they figured knowing C++ was a sign of your general programming aptitude?

Also, how right were they?


I have seen a C++ dev. almost brought to tears when trying to fix a CSS issue at a previous job. Then he broke into tears of laughter when I showed him `yarn build:dev` and the tailwind config. and package.json files :D.

Better to laugh about it than cry about it, eh :].


I recall interviews from that era too, where the interviewers didn't fully comprehend the jobs they were hiring for.

"You know how to write source code, don't you?"

Answer: "yes, but I mostly prefer to write fully compiled code directly to disk. Much more efficient".


Real programmers use a magnetized needle and a steady hand...


> today where you have to be a perfect cinnamon roll of a candidate who ticks all of HR's required-skill checkboxes before you can move on to the grueling 5-6 rounds of interviews

HR does that so they can empire build. If it takes 200 hours of HR work to hire someone instead of 20, then the director of HR has 10x the staff and can command higher prices.


My first job (mid 1980s) was writing video games in Z-80 assembler for chickenfeed. I still remember that in my interview my boss-to-be talked a bit about the company, and then hired me - literally without asking a single question.

He knew I was doing computing at uni and that seemed to be enough.


I do remember seeing job listings around '96 calling for 5 years of experience with windows '95.


Very funny.

Did you ever bring it up with those people?


I did, the interviewer who told me what Windows was, Dave, told me years later I was hired because, in no particular order: my age (they wanted someone who could give them their monies worth after training (I gave them thirty years.), a former co-worker recommended me based on my experience, After they asked, I told them about my family (they knew I would show up everyday.), I didn't freak out or become agitated when I realized I accidentally embarrassed myself on the Windows question and I promised them I could work well with others. (A kind of weird question at the time that I fully understood after a few months on the job).


>a power plant for a major airline

an airline owns power plant?


A small-scale Cogeneration[1] plant could very well make economical sense for any facility the size of a maor airline hub.

[1]: https://en.wikipedia.org/wiki/Cogeneration#Industrial_CHP


Sure, why not. Delta Air Lines has a fuel refinery. Large air lines are quite the "at scale" operation.


>After my reply all seven of the interviewers were all grinning and I was aware I said something they weren't looking for. One of the men politely told me Windows was a computer operating system. My reply was, "Oh, I see."

That is how a conversation between mature adults should be. Contrast that the typical today's IT interview questions, all posed to prove that is the interviewer is of superior intellect.


In college, meeting someone that was better than me by every conceivable metric. You'd think that he beat me at one thing by neglecting another, but nope, the guy was excelling in every category. Perfect grades, involved in many communities, and generally pleasant to be around. There was no caveat, no excuse. Dude just straight up rocked.

I have met more people like that while travelling. I felt badass riding my motorcycle super far, but wherever I went, there was a greater badass riding along. Some of these travellers were on much longer journeys, on much smaller budgets, on a much worse bikes, riding offroad all the way, camping every night. Some were on bicycles, going around the world under their own power. I was just a rich tourist with a great bike who slept in hotels.

In a way, meeting those people was liberating. I will never be a world champion at anything, so I might as well play for the love of the sport.


I wonder if super-people like this balance their various activities so that doing each charges them up for some of the others, and then they can hit a resonance like state of being in-the-zone excelling at each one in turn. And not letting small interruptions derail the system. It would be the opposite of being stuck in a soul-sucking rut between unsatisfying work and unsatisfying non-work life.


They probably just like doing them.


It took me awhile to realize that some people can simply talk a really good game. They will genuinely pick up a little bit of a skill but can speak about it as if they’ve spent every waking moment thinking about nothing else.

I had that realization when an amazing-guy-“ at-everything said something at 100% confidence and 100% charisma that was quite wrong.

On the flip side, maybe we don’t give ourselves enough credit for the things we know. The above comment was a topic I didn’t consider myself an expert in, but in hindsite I’ve spent many hours/days on the subject and am quite interested in it. So maybe it’s not that I knew less but rather I lacked the ability to demonstrate that knowledge. (Which is its own, admirable skill).


> In a way, meeting those people was liberating. I will never be a world champion at anything, so I might as well play for the love of the sport.

Beautiful!


The Internet did this to me for a lot of things -- when I was an island, I used to think I was really good at a lot of things: Table tennis, Tetris, some other video games. And relative to my friends and sometimes even the people a few circles away from them, I was!

And then, The Internet. And I discovered that I am absolutely NOT good at table tennis. I am not even CLOSE to good at Tetris. And I am TERRIBLE at every video game.

Oh well -- so much for competition! Time to enjoy ;)


> Oh well -- so much for competition! Time to enjoy ;)

Some people reacts like this. And some react by doubling down and doing whatever it takes (even cheating, lying and harming competitors) to win. When I played soccer in a local league I meet a worrying amount of people that thought that dangerously kicking a better oponent, for example tackling to the knee, was perfectly reasonable. Elbowing someone in the face was OK it the referee didn't get you. My coach once warned me that I didn't have a proper rate of yellow cards for my playing position, so I should play harder for the sake of it. I fed up and left the sport at 23-25 y.o.

A lot of people is unable of competing with themselves ("I want to do X better than myself from the past year, so I need to practice"), and as long as they don't know about someone who is better they don't care to get better at something.


Competition has such a beautiful origin of the word "com-" (together) + "petere" (strive):

> to strive alongside another for the attainment of something

Not necessarily in opposition, how it is often interpreted nowadays, but in a shared endeavour to achieve excellence. Pushing each other to be better.


That’s a good life philosophy!

I think it’s also humbling to look at these opportunities as a learning experience. “If you are a smartest person in the room, you are in a wrong room!”


Step 1 is to realize you're almost certainly not going to be the best in all of spacetime at a thing.

Step 2 is to realize you don't have to be - you can just be the best in a given bubble, centered on the here and now.

Step 3 is getting comfortable realizing you get to choose the size of that bubble, any time you want!


The real step 1 is not trying to be good at anything and just doing it for the enjoyment

Attachment to outcome is very real and hold a lot of people back

For example I started getting really good at chess when I stopped caring how many rating points I lost or won today and completely forgot about ratings altogether


“Until a man is twenty-five, he still thinks, every so often, that under the right circumstances he could be the baddest motherfucker in the world. If I moved to a martial-arts monastery in China and studied real hard for ten years. If my family was wiped out by Colombian drug dealers and I swore myself to revenge. If I got a fatal disease, had one year to live, devoted it to wiping out street crime. If I just dropped out and devoted my life to being bad.

Hiro used to feel that way, too, but then he ran into Raven. In a way, this is liberating. He no longer has to worry about trying to be the baddest motherfucker in the world. The position is taken. The crowning touch, the one thing that really puts true world-class badmotherfuckerdom totally out of reach, of course, is the hydrogen bomb. If it wasn't for the hydrogen bomb, a man could still aspire. Maybe find Raven's Achilles' heel. Sneak up, get a drop, slip a mickey, pull a fast one. But Raven's nuclear umbrella kind of puts the world title out of reach.

Which is okay. Sometimes it's all right just to be a little bad. To know your limitations. Make do with what you've got.”

― Neal Stephenson, Snow Crash


But why does it have to be a competition, of thinking "I have to be the best at X, if someone else is better, I feel unworthy.".

I ask rhetorically, that sentence probably describes me more than my impression of you from 3 paragraphs.


I identify by the things I love and excel at. If being an artist is a big chunk of who you are, it can hurt your ego to meet q much better artist who is also good at many other things.

Imagine playing the bongos, and you meet some guy who plays it really well… and it’s Richard Feynman.


I cant help but chime in here because I used to feel this way and all the typical advice never felt right (ie that you shouldn't care how good you are at things)

Very quickly I will list the 3 main points that have helped me the most

1) the things you care to try to excel at is a statement about things worth excelling at and actual skill is often a minor detail. It's okay to identify with where the effort goes and how much you give rather than the result of it. In this way it is like voting, and there is no best person at voting. You identify with the tribe, not your ability

2) when being competitive does actually matter, the best in the world cannot be everywhere at once, so there is actually a lot of meaning behind being the best locally at something. Or even just not the worst locally. Identity is irrelevant on this one, but it does require you care and are self aware about how good you actually are at things.

3) how you relate to others is also a big part of identity. being in the middle of the pack on most things makes you much more relatable than being best. For some person who is better than you at everything, are you able to deeply connect with them or do you get distracted by comparison thoughts, insecurity, or ideas to use them for something self-serving? If not you, still how often in their life do you think that happens for them with others?


The reason why I can't relate to this much is that I play the bongos not to be the best bongo player, but because I like playing the bongos. I know that, for some people, the motivator is "being admired at X", but that's not what drives me, I usually just like doing X. Sometimes, I get good at it. Other times (like with tennis), I keep sucking, but I still like the process.


Not OP, but I will feel an internal sense of frustration at the cards I’ve been dealt with.

Edit: To add, the frustration is projected onto the other person, given they are a physical manifestation of what you are not.


Everyone has it, it's part of the ego which is part of being human.


Being great only matters if you need external validation. I want a life I appreciate. If there’s anything to win it’s the game of having a good time.

All of the suffering people impose on themselves, on their children, on their society, to be great and envied is wasted. Be successful as a means to be happy and have excess to share with others.


>> I want a life I appreciate. If there’s anything to win it’s the game of having a good time.

Thank you for this, I'm currently getting stuck seeing many people here developing their kickass project and feel like if I am not doing this kind of thing in my free time, I am not a valid engineer, this kind of pressure slowly eats out my passion, perhaps it's okay that I don't feel like doing this at them moment, I still love my job and technology, I just want to do something else in my free time that's all.


> Being great only matters if you need external validation.

Humans are social creatures. Seeking external validation is, to a certain degree, normal and healthy.


Sure. It’s good to be approved of. But you can ease things for yourself by finding people that approve of the version of you that you enjoy being.


This idea doesn’t come early, you have to die few times to get it. I guess that’s how human works, hardwired.


Or read Siddhartha, I guess.


Eh, some (friendly) competition is fine. Some people enjoy competing and it's (part of) their idea of a good time.

If you don't want to compete, that's also fine.


> by every conceivable metric

No, by every metric that you could conceive at that time.

Perhaps someone was looking at you and admiring something that you did that you didn’t notice.


I met people like that. I had the pleasure of later overtaking some of them in terms of (some) achievements.

Now I'm sometimes on the other side. At least I talked with some friends that confided that impression they had of me. It feels weird. (Especially because I am also very aware of areas where I absolutely suck. But they just hadn't come up with those friends or co-workers before.)


Oh yeah, very much the same.

I'd been interested coding and electronics since I was a young teen, and was very much the guy that everyone approached for such problems - it's easy to get cocky like that. In our first year we had a guy that transferred from econ (to electrical engineering). He had to take night classes to catch up with the math and physics, as he didn't take the required AP classes in HS.

Anyway, the guy was just a machine. He worked incredibly hard - studied 12 hours a day all week, on top of working in the weekends. The guy picked up everything so fast.

Got straight A's, and advanced much faster than the rest of us. We did have some informal internal competition, but this guy was just way up there - no one bothered.

He went on to get a Ph.D. in AI/ML, and got a great FAANG job.

But, there's never a guarantee. I've met similar people - just straight up rock stars, that for whatever reason didn't reach the stars. I can't help but to think "What a shame, talk about wasted talent" - but who am I to judge, they could be perfectly content with life.

Anyway, college is definitely a good place to meet people that are smarter than yourself. If you're the smartest around, you're likely not studying at the right place.


> I will never be a world champion at anything, so I might as well play for the love of the sport.

Dunno if this is a famous quote or one of your own, but I've put it in my list of things to remind myself of periodically. Thanks.


I met someone similar in a previous company, but was way more objectionable than your college buddy. Some ex-Google DevOps bozo who just made it his life to snipe at other people's code and projects and undermine them whenever possible. I was talking to someone this bozo just called out in a very public forum, and asked why he wasn't furious and the response was more enlightening than anything - "That's all he's got", which was true - the DevOps bozo had absolutely no other life outside his small corner of tech and needed constant reassurance of their own superiority through publicly critizing others work.

In the end, folks just ended up ignoring whatever this person said - talking it with a grain of salt.


> You'd think that he beat me at one thing by neglecting another, but nope, the guy was excelling in every category.

This is literally impossible. A person cannot be Einstein and Picasso at the same time. A person cannot be Steve Jobs and Pope Francis at the same time. We all have limited time in life, and it is only possible to excel in one thing by focusing on it and, as a result, not focusing on something else.

This is a beautiful thing. I watch the teachers in my kids' schools and they do a great job and I think "that's why they're teachers and I'm a lawyer." I watch a great play and I think "that's why they're actors and I'm a lawyer." I hope I'm as good at my work as they are at theirs. But I can't excel at what they do. I don't have time.


The point isn't that 'someone can be the best at everything'. It's 'some people can be better in every category than some other person', which is a heck of a lot more reasonable. I've certainly experienced it. Similarly to the poster above, I went from top of the class to middle of the pack in university, and in part that was because I didn't focus on the academics, instead working on student projects that were valuable but didn't improve my grade. But there were people working on those projects that contributed more to those projects than I did, also came top of the class, were substantially more athletic than me (actually competing vs essentially no exercise), more social (also not super hard, but still), and somehow also got more (or at least better) sleep than me. It's a thing that happens.


>and somehow also got more (or at least better) sleep than me

It must be better sleep, because these people also seem to only need 4 hours and yet are able to function at 100% the rest of the time, meanwhile I've been tired for 20 years no matter how much sleep I seem to get.


You just need to meet someone like that, they are rare but they exists. It doesn't means that they are good at everything, just that they are better than you in every way.

I had a colleague like that. She was super nice, super smart, very good looking, was well-balanced emotionally, and dated a professional athlete. The kind of person who has a very good career, and then train for the marathon on the weekend. Even her name sounded cool.

I know it sounds like jealousy, it isn't, I'm honestly happy for her, but it's just a reminder that sometime people can be more advanced than you, and that you shouldn't place your self-worth only by measuring yourself with others, cause people like John Urschel[1] do exists.

[1] An up-and-coming american football player who abandoned his career at the NFL to focus on his PhD in Mathematics at MIT.


>Even her name sounded cool.

I don't know why, but I found this hilarious. Was her name "Max Power"?


> just that they are better than you in every way.

Nope, I have never once met a person like that and am confident I never will. OK, so John Urschel plays football and is great at math. Are you telling me he is also a particle physicist, a statesman, a mountain man, a mob boss, and an astronaut? If not how is he good at “everything”?


Wait so you are a particle physicist, a statesman, a mountain man, a mob boss, and an astronaut?

Stop thinking global maxima (everyone in the world) and start thinking local maxima (you) and I promise there is someone that beats every local (you) metric you have.


Nope. There is no one that beats me at every metric I have. Does anyone know my family as well as I do? No. Does anyone know my staff as well as I do? No. Does anyone maintain my house as well as I do? No.


It is a painful admission, but in this world there are many people who are close to their families, close to their staff, keep a great house... and know technology better than you and have more impactful jobs that you and do more to improve the world and made more money than you and are loved (or at least needed) by more people than you.

There is nothing wrong with that. But it is a fallacy to expect that by some cosmic balance, it's impossible for anyone to best you along all meaningful categories.

It's probably easier to reason about this in the other direction (which is kinder on our egos): Do you believe that there is some individual on this planet who reads less than you, is lazy compared to you, treats their family and friends worse than you, contributes less to the world than you... and where at the end of the day, there's not any axis where they exceed you?


But there is someone who knows THEIR own family better than you know YOUR own family, they know their staff better than you know your staff, and they maintain their house better than you maintain your house. Again, at the metrics you care about, whatever they may be, there is someone better.

Of course you are the "best" version of you, but there is only one of you, that's not the point.


That is a bit of a reach. You are defining the categories very narrowly.

If instead of saying “knows your family” it would be more natural to compare how well you know your family with how well they know their own family. Similarly about their own coworkers and their own house.

But of course you can define the categories that narrowly. In which case you are simply not talking about the same thing others are, and you are willfull missunderstanding their point.

Also, good luck being the best in your own private game. I hope it makes you happy.


Assuming you're all of those, then one day you might meet someone younger than you who does all of these a bit better than you, and also is good at piano. And he or she will be nice and graceful about it, too, so you won't even be able to hate on them.

It's not a personal attack against you, it can happen to (almost) everyone :D.


It sounds like there is a misunderstanding here. Two kinds. You are taking too literally the “every category” part and your bar for “excelling” is higher than it is commonly used.

In your comment you talk about being the best of the best. “Excelling” doesn’t have this connotation. You could say that someone is “excelling” at business if they have a nice, well-run pizza shop. They don’t have to be the literal Steve Jobs. Excelling in classes would be someone who effortlesly gets good grades, not someone who has a Nobel prize. Much lower bar.

Also the “every category” is not the same as “literaly everything”. Just everything the commenter cared about at that point in their life. Probably popularity with others, popularity with girls, academics, sports, something creative like music, maybe dressing, humour, etc.

I would not, unless otherwise qualified, would assume that the person was literally excelling at neurosurgery, and astrodynamics, and crystalography, and parliamentary rules and customs. But since those topics don’t just naturally come up in real life the commenter had no way of knowing that.


This is what your parents tell you. I reality some people are good at anything they touch. Unreal at maths, writing, music, drawing, taste, music, spirt and very nice people. Not many. But I have known people who are known for their sporting achievements but I know how good they are academically. It is a downer at first untill you grow up.


I’ve definitely met people whose stats are juiced. Probably not as good at scrolling tiktok as me tho


Then you see their feed one time and cry cause there’s no way to copy it to your account.


I seem to get way more interesting (and weird..) ads from Google than most of the people I know.

But maybe that's just because Google gives me things I find interesting?

It's stuff like a three story tall Diesel engine for a container ship. I'm not really in the market for that, but I would totally want to be someone who's casually in the market for that.


Person A spends their 8 hours playing sports, reading books and socialising

Person B spends their 8 hours only playing video games

I would expect Person A to be better than Person B in every notable category, except for video game skill.


> I would expect Person A to be better than Person B in every notable category, except for video game skill.

Not necessarily. Person A might beat B at video games, too. Just spending time doesn't necessarily make you good at something.


Haha, you might be right. Fitness and stamina are pretty important to get those APMs in.


Or just general intelligence.


Not necessarily. Person A might naturally be more talented than B at video games. And person B might naturally be more talented at playing sports or reading books or socialising. The only difference is that they don't notice it because they don't do those things.


Why are you discounting the importance of video game skill? With esports people are making a living on it. Person B is specializing in a skill and mastering it. Person A is a jack of all trades and master of nothing.


I've played a lot of computer games. But in no way will I ever be an esports star. Playing computer games is simply another "skill" in the toolbox of a jack of all trades.

And I'm fine with that.


How many people do you personally know play way too much video games? And out of them, how many has made a successful living out of playing video games?


Playing video games for that long destroys your body, I personally know from experience. Exercise also makes you better in every other thing in your life as well (including video games).


I mean, playing sports (nowhere near even a semi-pro level) has destroyed my body a hell of a lot more than playing video games has. People just find one source of body destruction more "worthy" than the other, and that's more a societal value judgment thing than an objective danger level thing.

It isn't only video games that get hit with this; for example, in my experience ballerinas get a lot more faux concern about "destroying their feet" than, say, sprinters do, never mind that they have pretty much the same foot injury profiles.

(See also: sitting at a desk for eight hours to play video games is obviously bad for you, but sitting at a desk for eight hours to type reports for your employer couldn't possibly cause you any issues that said employer might be on the hook for.)


I don’t think it’s fair to diminish sports because you personally suffered injuries or long term damage, there are only a handful of sports that carry risks of that severity, where most people will probably get hurt after some time.

Sitting down all day wrecks everyones body indiscriminately unless they are undoing the damage every day.


How is it diminishing sports to point out that they cause a hell of a lot more wear and tear (and involve a greater risk of injury) than sitting down for eight hours (for any reason) does?

And no, unless you are counting things like chess as a sport (and/or conflating exercise with sports), the vast majority of sports carry incredible risk of both minor and major injury compared to a sedentary lifestyle. Here[0] is a list of the Olympic sports for example; there isn't a single one that doesn't routinely cause injuries.

My point remains that if I get tendinitis or bursitis from playing soccer nobody clutches pearls about the sport but if I get the exact same injury from playing video games it's somehow more concerning - this is a reflection of how society values those things, not of their actual danger levels. Hell, I can get the same injuries from playing the piano but pretty much nobody leads a discussion about piano with "it wrecks your body".

0. https://olympics.com/en/sports/


100% of people who sit down for years will suffer damage that is very difficult to reverse. Unless they are proactive in counteracting.

< 100% of people who play sports will suffer damage of the same degree.

People don’t talk about soccer in this light because soccer players after retirement don’t have severe hip and glute mobility issues, they can also walk for more than 20 minutes without struggling. Are some of them dinged up? Yes. Some.


Soccer will absolutely leave you with mobility issues - it's a sport that puts immense and rather unnatural load on your hips, knees and ankles. The insistence that overloading your joints won't cause long-term damage when it's because of a sport but will cause damage when it's because of something "trivial" is pure magical thinking. I promise you your ligaments and bursae don't care if the physical stress they go through is "worthy" or not.

Also, it's rather disingenuous to (correctly) point out that long-term overloading of the lower spine and hips from sitting at a desk will develop into chronic conditions unless countered...and then completely dodge the fact that professional soccer players after retirement have had careers full of mitigation (from physiotherapy to outright surgery) paid for by their clubs[0] to counter the acute damage that they suffer. And even with that, plenty of professional athletes still develop issues like chronic ankle instability, because there is only so much you can "ding up" and repair an ankle before it simply loses its structural integrity. Those of us who do play sports know just how much damage there is to counter, and we don't all have a VC-sized budget backing us up to mitigate it.

For goodness' sake we colloquially name various conditions for sports ("golfer's/baseball elbow", "tennis elbow", "runner's knee", etc). I have zero idea how anyone would come to the conclusion that it's rare for sports played for significant amounts of time to damage the body - again, unless they are conflating them with more normal forms of exercise.

0. And yes, the fact that it's paid for by their clubs is important - as I implied in my original comment, the vast majority of employers who demand that office workers sit at their desks for hours at a stretch certainly don't take any responsibility for any serious medical issues that arise from that.


OP isn't saying the person they were referring to is a world-class figure in everything (or even two things), just that they seemed to be producing better results in the categories OP cared about, which is very achievable.


https://en.wikipedia.org/wiki/Jonny_Kim - "an American U.S. Navy lieutenant commander, former SEAL, Navy flight surgeon, naval aviator, physician, and NASA astronaut. .. Kim received a Bachelor of Arts, summa cum laude, in mathematics from the University of San Diego in 2012, and a Doctor of Medicine from Harvard Medical School in 2016. Kim was a Pat Tillman Foundation "Tillman Scholar" selectee. In 2017, Kim completed his medical internship in emergency medicine at Massachusetts General Hospital and Brigham and Women's Hospital.[6] ... was assigned to SEAL Team 3 with the rating Special Warfare Operator. He deployed twice to the Middle East and participated in over 100 combat missions as a combat medic, sniper, navigator, and point man. As of January 2020, Kim was married[7] with three children.[8]"


It's fascinating that this topic has riled so many people!


I was a full-time mom and military wife when my kids were little. We moved into a 2 bedroom, 50 year old duplex at a new duty station and there was a low-ceiling basement that was mostly consumed by a giant boiler but there was one low-ceiling room down there and we made it a playroom because our two kids were sharing a really tiny bedroom.

So we set up a TV down there and it's a rental so we don't want to drill holes anywhere and I'm talking to my 8 year old about going to the store, buying like 100 feet of cable and running it the long way around the outer wall of the room etc. when he says "What about the hole (in the wall, directly behind the TV and the other side is the stairs)?"

To be fair, he spent time in that room and the opening in the cement block wall or whatever was full of insulation, so it wasn't obvious, but man did I feel stupid for a minute.

And then very relieved because we already owned a long enough cable to set it up through the hole in the wall. The 100 foot cable would have been a bit of a financial burden and going to buy it and then run it the long way around would have eaten the rest of my day and this was resolved in minutes because I always encouraged my kids to ask questions and didn't treat them like that was "disrespecting my authority" or something.


Well, at least you can feel proud of the kid!


New eyes, new mind, freedom of ideas.


I went from hacky hobbyist programmer to working on core business logic for a startup that eventually the whole company would rely on. I was mostly a one-person team at the company, and I kept a lot of my bad unscalable tendencies from making small fun projects. No formal testing, very little documentation, hundreds of “TODOs”, breaking API changes without really telling anyone, no QA process, no monitoring/reporting, etc.

It all came to a head when my employer was demoing some software that used my API and none of what they were trying to show worked because of multiple unrelated bugs in my code, causing us to lose this very large client. I somehow kept my position, worked with other departments to formalize QA processes, and started regularly communicating with the API users.

Before I was just making software for nobody with 0 stakes, the reality of having actual people, entire revenue streams dependent on my code being reliable didn’t fully register. At my previous (and only other at the time) employer I was basically a paid seat filler. I spent a lot of work hours making personal projects, it felt like going to work and getting paid to make hobby code.

I’m glad I was able to learn from the experience and it didn’t put me out of work or anything


Probably more of a humbling moment for the CEO. They just demo'd something without both conferring with the devs and doing a practice-run themselves?


The sledge hammer to the cyber truck. Given that everyone knows that demos have a nasty habit of going wrong, what kind of madman tries something without testing it first?


The sledge hammer was fine, it was the giant steel ball that was the issue. And it was rehearsed many, many times - the issue was that the window was slightly rolled down during the demo, making the window lose a lot of its rigidity. And was sort of a moot point anyway since the production version didn't wind up having the same "armored glass" that the prototype did.


Funny to see this comment which is in stark contrast to the current top comment [0]. I suppose in reality it's all about balance.

[0] https://news.ycombinator.com/item?id=40557571


I think it's a bit more nuanced.

One complains about enterprise level architecture in run of the mill small projects.

One complains about bugs, which should just be covered by tests, nothing that should sound or be complicated.


This hits a little too close to home right now. Only a week ago have I felt that I did a few things to actually make an impact.

And this only because it seems that the CEO noticed I can spin up prototypes to validate ideas before passing them to the actual devs.

I've worked with him for a total of 3 years however, and during that time, most of the time I felt like I was tinkering without making a real difference.

The only time that a bigger project was implemented that I had the lead on felt like a fluke and it was after probably 6 months of working on it.


Would the code have been there and the demo have happened if you had done everything by the book?


Caught a senior sysadmin in a small company using a proxy on our infrastructure to hide misc web browsing from oversight. The logs were the give-away. It was typical misc IT/nerd news stuff... the kind of thing a different company culture (which did come later) would actually encourage.

I was sure the right thing to do was to report it to the CEO (there wasn't anyone else higher in the hierarchy to consider) for certain chastisement and correction. I was commended and the sysadmin got a browbeating.

I definitely did right by the policies in place. However, not too long after I realized there was certainly a better way to handle it and my behavior had more to do with scoring points than doing the right thing.

This was also someone who went out of their way to mentor younger employees and help kindle a passion for this line of work. I was a major beneficiary of this, so I look back upon that incident with nothing but regret.


A humble and honest story of growth.

Normally, depending on the circumstances, you might have a quiet and subtle word with someone about something they really can't be doing, whether because it's a real problem, or because of some silly political reason.

But it's also worth mentioning that someone's slightly mischievous "just something to browse reddit" could actually be cover for a covert channel or backdoor, intended for some darker other purpose, such as exfiltrating data, or providing access to criminals. Or it could have innocuous intent, but be a weakness exploited by an attacker. Or it could someday inadvertently be a red herring diversion that slows response while investigating a real attack.


Thanks for sharing!

So, a question in balancing the regret against knowing what you know now. This situation sparked a change in you to recognize how to handle these situations better. Would you make the same mistake again in order to learn the lesson?


Absolutely not. I would hope to learn the lesson some other way.

In hindsight, it equates to kicking someone hard in the groin for laughs. It hurts my foot, them a lot, and it's just a poor way to learn how to earn "respect".


Thank you - I appreciate the perspective!


That is a hard one. Best to report it I think.. but it is not clear cut in general.

There would be times when going against your employer by blowing the whistle or covering up is the more moral thing to do.

Deciding where that line is not simple and there is no guide.


It's a guy browsing the internet a bit. This is not some deep philosophical question. You're just advocating being the type of person we'd all hate to work with.


“It’s a guy browsing the internet a bit” can be game over from a security perspective. Some machines should never execute code from public web pages, full stop.

So it is a philosophical question of why the restrictions were in place in this scenario. If it was “employee productivity”, then sure, who cares. If it was an IRS computer with thousands of people’s tax returns on disk and access to millions more, then reporting was the right move.


If he was the most senior sysadmin it's already his responsibility to keep things safe anyway, so if you trust him for all the rest of the infra you can trust him for a proxy.


The reason you report is to make the call if he should have had that level of trust in the first place.


I'm not so sure.

I can imagine trusting someone to set up (and even enforce) eg an alcohol policy, but still be prone to alcohol abuse themselves.

Weak wills are a thing. Or people thinking they are smarter than the protocols that apply to the masses.


All I mean is he is the person paid to do this already so it's not extra dangerous. It's like a policeman doing a citizens arrest if they spot a crime on the off hours. It's frowned upon but you know it's the same thing they do in their job.


Our HN user, mr-wendel, worked at the company, but I'm not sure they said what their job was. It might have been sysadmin, but since mr-wendel talks about snitching on a senior sysadmin directly to the CEO, it's save to say that the sysadmin did not report to mr-wendel; and I presume that mr-wendel was a lot lower an the pecking order.

I don't think the senior sysadmin was paid to hide browsing from the oversight?


I'm not defending running rogue workloads on your employers infrastructure, that's obviously wrong. I'm just saying from the description, and the role of who did it, it probably wasn't super problematic in terms of security.


I think this thread highlights nicely that context is everything.

In this case, I think vasco's take is correct: the sysadmin was indeed trustworthy enough to exercise this discretion in response to overzealous employee productivity rules without at all undermining his primary responsibilities.

The proxy was definitely in a place to essentially trivialize it's impact. I'm pretty sure thats why it was placed where it was, as opposed to make it harder to find. If that was the chief concern, disabling logging would have obviously been the first thing to happen.


You never know... I've seen an instance where it turns out an employee was watching pr0n at work and downloading the materials to their shared profile directory. Discovered when the IT Admin was requesting a new NAS server because the current shares were full.

edit: to be clear, it wasn't the admin downloading the content.


I can't agree. By far the biggest lesson that you can verify even on this thread, is that the biggest tech problems are actually people problems. Even things like tech debt are all over the place framed as project/people management rather than tech stuff at its fundamentals.

The comment already established the senior sysadmin is generally a valuable person who does a lot to flourish the company. Going out of the way to be a encumbrance towards someone who is verifiably doing their job anyways, means you're actively creating a people problem. I;d rather people learn the correct, bigger lesson here.


> By far the biggest lesson that you can verify even on this thread, is that the biggest tech problems are actually people problems.

The opposite lesson is also useful: sometimes you can turn people problems into tech problems, and that's how you can 'solve' them.

Slightly hypothetical scenario: assume your team keeps all the source code on a shared drive. You are supposed to coordinate with your coworkers before touching any code. Sometimes that goes wrong, and looks like a people problem.

If you introduce eg git and automated-tests-before-merging, you can turn that into a technical problem.

My thesis is that organisations (and people in those organisations) can only solve so many people problems. If you lighten the load by automating some of the problems into tech problems, you have more levity on the remaining people problems.

(This happy state of affairs isn't always possible. And sometimes it can backfire.)


Why would it be good to report it? Depending on what “infrastructure” stands for here, unless it is something absolutely unwise security-wise, why?


When I was young, I thought that being a man of my word meant that, as I'd given my employer my word that I would follow their security policy, I should follow it to the letter - for example, never holding the door open, even for a colleague I'd worked alongside for a long time.

And I thought that petty rulebreaking was a corrosive force, something that would snowball into bigger problems down the road. As a man of honour I would work precisely my contracted hours, never a minute less, I would consider it shameful if someone so much as stole a pen from the office. The rest of the team is heading to the pub at 4pm after a lengthy day of planning meetings? Sorry guys, I don't finish until 5:30pm.

Later in my career I chilled out a lot, and learned that the actual rules are often different (and a lot more nuanced) than the written rules. And that if you've worked with a guy for a decade you can, in fact, hold the door open for him and the sky won't fall down.


> I thought that being a man of my word meant that, as I'd given my employer my word that I would follow their security policy, I should follow it to the letter

This basically sums up my "cover story" nicely so I didn't have to admit to myself that it was more about scoring points for my own position.

Dressing up vanity as integrity is a dangerous thing.


Thanks for sharing, I had difficulty empathising with the OP but this puts it in perspective.

I’m curious, did these ideas come from your upbringing?


Your values are the guide.

If your values are to report someone to win brownie points with your boss, it’s probably time to revisit them.

Another great guide is asking yourself what you’re trying to accomplish.


Imaging to do different was only one part of the lesson. The other, and bigger, part is acknowledging the difference between wanting to do the right (for not just me) thing versus that was sure to score points with authority.


I am from China and I always thought I am very good at math, because I can get good grades at national Olympiad level math competitions. After I came to America, I realized that I got good grades in China because I internalized the math concepts by doing large amounts of problem sets and it was actually a very slow learning process. In college mathematics courses, I realized that some of my American classmates can grasp new concepts and mental models ways faster than me, without doing much problem sets. We have just been learning math in very different ways.


Interesting to hear your experience. I grew up in the Canadian system, and then in university my class was ~25%+ international students from China. They mopped the floor with us locals. It was my introduction to not being even a little good at something, relatively (which I was previously #1 at in highschool)


Kind of similar to the leetcode grinding.


This is an extremely interesting insight on math education! Thanks so much for sharing this!


I was in my early 20s talking with a friend who was at least twice my age. I was bitching about a guy who'd look at the work I was doing who really didn't know squat about it and start telling me how I should be doing it.

After listening to me for a bit he quietly said "Well, you can learn something from everyone if you focus on that."

I spent a couple days pondering that. At first I tried dismissing it because he wasn't there when the guy I was whining about was blabbering on and on, and he didn't know the guy, but it kept bugging me and after a few more days it occurred to me that if he was right I'd been missing out.

Just a few days later the guy I was whining about came by again and looked at the work I was doing told me he knew a guy who could do most of that for me and it wouldn't cost as much and I could get it done a lot faster. So I went and talked to the guy, and sure enough he could do it, and do it faster and better, and it cost me a lot less.

I ended up making a lot more money on that work, and the company I was doing it for was thrilled with the changes. And since then I've focused what I can learn from others, even those who tend to annoy me.


The other part of this is that someone can be right, and an arsehole.


Yeah, I still like the premise, not just for what you learn but what you should respect.

In one workplace one guy was socially awkward, coke bottle glasses etc. But an absolute machine on the tickets. And when I looked over his shoulder he was simply getting shit done. But being socially awkward he never got the reward, negotiated raise etc he deserved.

Another guy was an absolute psycho career player. Do anything to make others look bad while doing mediocre work himself. Grab easy tickets for himself but sabotage other team queue tickets by making a promise to customers - not note that in the ticket - so when it was picked up by someone else they'd already breached a promise to the customer and get downrated.

One guy I respect. One guy got a promotion out of there.


Props to you for putting your ego aside and finding something positive out of that shitty situation.


Meeting less competent people be extremely successful in life compare to the more competent folks. Through my life, I have seen people less curious, less innovative, no passion to learn, not interested in working hard, but are good at gaming the system excel and succeed. They become rich, financially independent, have great success. While people much smarter than me, more curious and innovative fail again and again to make a dent just because they had a late start, poor network, wrong time and place etc.

It made me realise that success is not because of what you are capable of. To, most extent its about how you fit into the system and work it to your favor.

So, while I'm still curious and interested to learn (why else to visit HN), I have stopped feeling bitter about my efforts not providing the returns. Its just the way world works.


This rings true to me, perhaps because I struggle with this one.

I used to think I was destined for success, because I'm good and creative at many things, and am curious and can teach myself things.

But: I expected the system to integrate me. I realize now that, unless you're lucky, it's up to you to integrate yourself into the system.

It's a bummer to be underpracticed at this, and to be integrating suspiciously late. Feeling your potential, your ability to create great value for the system (while hopefully inspiring the system to also take good care of you). But instead only tapping a small fraction of your capability, because you haven't managed to link yourself in right.


If you ever get involved in hiring people, you realise that there are people slipping through the cracks. I've come across freelancers or underemployed people making a fraction of what their skills should be earning them, and it seems totally arbitrary that they're in such a position. It's lucky - for both sides - when this match happens.

An efficient system would make this integration easy, but I agree, for a lot of people to get anywhere, they have to "insert themselves".

Simultaneously, it's actually quite easy to be oblivious to this -- if you go to school, get good grades, get a graduate job, and do well enough at your job (but remain a normal employee), you'll never have the opportunity to have this realisation.


Alternatively, the people you perceive as 'less competent' might actually be highly competent in different areas.

People who have made a lot of money from scratch don't actually tend to be incompetent - they tend to be highly competent at whatever they are doing.

There are very few self-made rich lazy people.


I encountered someone with no high education and no proven skills, no job but has the ability to remotely implant emotional dependency into someone from higher class, then somehow convince her to leave her wealthy family and their first world country just to live with him. Some people call this love but I consider this as a very special skill


They did not have a “late start” etc. It’s not just luck.

They just could not. Being clever in one way does not translate to being generally effective.

Scientists would rule the world if that were the case. Yet they are with very, very few exceptions actually bottomfeeders when it comes to power. Those “low competency” people you speak of however..


Interesting, around me, smart people succeed and not-so-smart succeed less.

The smart ones sometimes choose metrics for success that aren't traditionally valued. (Ie. not rich and financially independent like you mentioned. But boy do the smart ones succeed!)


depends on what society you are from, in America usually people who have a lot of knowledge and are innovative and work hard can succeed. If you come from a corrupt third world country then yea, the only thing that has value is power, nepotism etc...


> in America usually people who have a lot of knowledge and are innovative and work hard can succeed.

Maybe in the olden days. Not so sure the American dream is alive anymore.


Yes. I was with two friends in Quetico at a cabin. Temps of -20 below at night. Wood stove, no electricity no running water. We cross country skied over frozen lakes to the cabin. It was a log cabin and the logs were colder than ice cubes and stayed that way over the ten days we were there. In the center was a pot belly wood stove. A foot away from it, the temp was 50. Ten feet away it was 20. Cold.

There was a wood cooking stove and a second older wood cooking stove. We decide to start using the second wood cooking stove for more heat. There was one problem, the stove would smoke. My friend climbed on the roof and cleared the snow away, and we tried to seal leaks but it kept smoking.

One day I came back from drilling a hole in the ice to get water - through 24 inches of ice. I noticed something funny.

When I opened the door, the old wood cook stove stopped smoking. When I closed the door the stove started smoking. I stood there trying to understand. Opening and closing the door over and over. Open the door, no smoke. Close the door, smoke. I started to wonder why it would stop smoking and then it hit me.

The cabin was on fire. When the door was open it got enough air to burst into flame. No smoke. When the door was closed it smoked. I still remember standing there opening and closing the door. Over and over. What an idiot. But I learned something.

We looked underneath the cook stove. The reason there was a newer one wood stove became clear. The firebox on the old stove had rusted through. So coals from the wood were falling through the rusted out part onto the wood floor. We got a fire extinguisher and sprayed it. Then got piles of snow and packed it under there too.

That old adage "where there's smoke there's fire". Not quite accurate.


Reminds me of arriving late a winter night into a mountain shelter at 2000 m. after 6h of approximation... to find that another team arrived earlier and consumed all the means to start a fire, failing on it. My companion digged out some paper from his cigarettes box and succeeded, to the cheering of all happy present individuals.


From 2011-2012 was Senior intelligence officer for Anderson Air Force Base, Guam, which is one of the most strategic bases in the United States department of Defense.

As SIO you are statutorily responsible for the joint worldwide intelligence, communication system (JWICS), maintenance, security, growth, interruptibility, etc… in addition to managing all Perssec for SCI holders, and maintaining control, security and for CNWDI as well as ACCM.

I was fresh home after a deployment to Iraq and thrown right into dealing with the Yp-Do crisis in SK and the Japanese Tsunami and Fukushima fallout that we had to provide HA/DR support for.

I was 28 years old with a one year old at home.

As part of maintaining security, I would regularly get inspected as you would expect for any manner of things. There is a special security team that lives at the defense intelligence agency primarily but also they have them for NSA and other organizations, that would do white hat penetration tests on secure information facilities, like all the ones that I was responsible for (I had a half dozen physical locations to manage).

One of these tests was during a large scale exercise. Two civilians who had perfect credentials, were trying to access our primary headquarters SCIF. At the time I think I was managing a top-secret briefing preparation and so I delegated access control, and interrogation of these two people to another Lieutenant, as well as the actual special security officer who was an E6.

They had previously tried to penetrate all of the other places on base, but failed.

The process for getting access to a SCIF if you are not housed there is that that you send a visit request from your home security office to the visiting security office which will then transfer clearance details so that you can understand what access levels to give these people.

About a month before their visit, there was a new guidance released saying that all visit requests had to have a digital requst in 100% of cases whereas are previously you could just print out your details and bring them with you, The special security officer would then look them up in a system (I won’t name), and then it’s up to the security office whether they give you access or not.

My Special Security officer and my lieutenant came to me and said they have everything that they need per the requirements that we were operating under, and that they were comfortable giving them access to a terminal where they could do what they needed to do.

I said “that’s perfectly fine however LT I want you to sit behind them basically and make sure they don’t walk off or do anything more than I’m giving them access to.”

So for like 30 minutes, we had two people in our SCIF who logged onto JWICS, we’re being actively monitored and were able to send an email and then logged off and left.

The next week, my commander asked me to go to a meeting and the penetration team briefed to the whole base how they got into all these places including my SCIF and one other facility

The good thing was, we were basically written up with flying colors, and this was the hardest possible test that they were able to get through and so everybody was generally happy with us.

This was really just one of those things where it was a specific detail that we were not up-to-date with but didn’t have any major defense in depth risks.


so… many… acronyms… is this a thing in military like there are million acronyms everyone uses??! :)


Yup! It’s a pretty well known part of it. There’s running lists of military acronyms out there.


While it's an interesting story, I don't think this Ask HN was meant as a "what's your greatest weakness" job interview question.


Why this comment? This was a really interesting anecdote about how complicated situations in life can be.


i think that the story is loaded with about 80% superfluous context and 20% story.

op worked at us airforce base managing access control to global intel systems. he delegated authorisation check to jr. jr told op they checked out, however, jr had not adhered to latest security protocol that required cross checking request against request database, relying instead only on physical credentials. op granted access however asked that an officer watch the civilians’ access directly.

a week later it turns out the civilians were conducting pen testing for the systems and op had to debrief how they gained access.


and he doesn't sound humbled


Nothing more humbling than 1000 people being shown your error

But hey, if that didn’t come through, at least it was an exposition problem ;)


Hey if you consider that my greatest weakness then I’m doing great!


I was asked by a pro. documentary maker (who I met on the plane flying in to London) to get some B role for a G&R concert he was filming (with his spare video camera).

I was given the camera and sent in to the mosh pit to film from that perspective. After the show I gave the camera back to him. He said, "where's the footage?"

I had been "filming" looking through the view finder, but I had forgotten to press record.

Gutted.


If it makes you feel better, I have occasionally handed friends my DSLR and asked them to record something for me. You can do this either by pressing the red record button or full press the shutter button. Well my friend spent 15 minutes only half-pressing the shutter button and recording nothing. Now I know to make sure to tell people how to start and stop the recording and how to check if it is actually rolling or not. I consider that my humbling learning moment.


G&R = Guns N'Roses


"B [roll] for a G&R concert" sounds like a joke about RGB in little endian.


Nit: B-roll, like when they used rolls of film back in the day


1. Seeing my boss just completely side step an issue, where his switch was sending vlan tags to his carrier causing the carrier to shut down the port, by purchasing a switch that didnt support vlan tagging. I died on the inside but lesson about end user troubleshooting learned.

2. Being able to break into a 24 hour data centre because the data centres building management just didnt give a shit. Turns out they had fired all their staff and were leaving the DC empty until they liquidated. We managed to get our kit and bail. But like physical security provided by a third party is ephemeral.

3. I used to lock my bike to my tool shelf. A thief came along and used my hacksaw from my toolshelf to break my bike lock and steal my bike. Thieves will use anything available, not just what I want them to use.

4. Had 2 console windows open. First to a Junos device on my desk. Second to a Junos core router. I reloaded one, and didnt realise I had reloaded the wrong one until we lost an entire state. Multitasking invites risk.

5. Customer had a huge failure. Kept insisting they would rebuild completely, but would routinely beg for just one more dodgy workaround just to keep them going. They never rebuilt. That network is perma fucked. Customer promises are worthless.

6. Much like 5. Customer got bought out by a larger firm. Began to raise new deployments by escalating to the after hours noc, pretending that new deployments were actually failed existing sites. We asked them to stop and they never did. If theres a large enough financial interest customers will just ignore contract and good practice to make the payday.


Oh and one more.

My customer was a mid sized ISP. They contracted us in to replace a network engineer who was leaving who they couldnt replace. He wouldnt say anything about why he was leaving, other than he wanted to spend time with his newborn. Fair enough.

Soon after the entire C level resigned. The new C level execs immediately went wtf.

The business had:

1. Sold to an investor, the former owners becoming the C level.

2. Had an agreement that they would stay on for x years and deliver xyz revenue before they got paid for the business.

3. They had been selling services with massive install fees, and then not delivering those projects. Sales in this manner had kept the book completely green. What they had delivered didnt meet spec. They just massaged relationships to pretend it didnt happen. They also opposed any kind of internal documentation of these problems.

4. They had 15 or so of these projects in the pipeline when they left the business, right on the 3 year mark. Most of them were undeliverable for one reason or another.

So what happened was that the incoming C level guys had to basically deliver on a bunch of over promised contracts, without the build costs in the bank, while also fending off a business owner who didnt acknowledge the problem, and customers with existing issues who were quite angry.

They lasted ~3 months before they quit too.

Lesson: No business is big enough to avoid the consequences of its actions. A business can look good even on the books but have the "Find out" in the future. Nothing in business is ever settled or guaranteed.

Also:

Being a contractor means largely being insulated from these issues in a way that allows you to observe things falling apart. Just dont fall in love with the customer.


> 3. I used to lock my bike to my tool shelf. A thief came along and used my hacksaw from my toolshelf

You locked your bike to a toolshelf that contained the tool they used to steal the bike? That would be like putting jewelry behind a glass cabinet and putting a hammer next to it.


Yes. I did exactly that.


Learning that the world doesn't revolve around me, and that other people (and other animals) have rich and complex inner lives worthy of curiosity, dignity, and love (I can't be sure, but it feels like a healthy perspective). I'm in my 40s and this lesson, started in youth, is still sinking in. Having a child, and the commensurate second childhood, is a major impetus.


I was going to write something very similar to this. Not only does the world not revolve around me, but looking back on my sadly somewhat recent behavior in early-mid 40s, and feeling ashamed and embarrassed at my behaviour and how I've treated people in the past.

This is still a learning experience, probably always will be one, and an opportunity to always grow.

My impetus wasn't a child, but a break-up and almost lost business. I saved the business in the end, but it didn't grow to what I had expected, and then I realized how much I had given up, just to try to make that work, and how much I had taken for granted the people around me.


A wise team lead once told me "I never knew how selfish I was until I had a kid".


I’m learning swing dancing. It’s been humbling.

It’s humbling because all my life, I’ve been really good at technology - I specialize in biotechnology and manipulating DNA, but am also fluent in programming (mainly python, go, lua) and am able to build hardware - even helped run a robotics startup for a while. Anything related to technology and science comes easily and naturally to me. This isn’t to brag, but just a fact that learning things has mostly been something I do way, way faster than my peers.

But I’ve never danced before, or done anything that required that particular skill set - then realizing I’m real bad at it. Seeing all my peers learn faster and be better, with the same amount of study and practice time, and really trying my hardest and just not being good at it. I’m really thankful for this experience! And I really enjoy dancing, and will definitely keep doing it!


Am a software engineer who fell into salsa dancing many years ago - originally went to meet women, but found I really enjoyed salsa - yes, agreed partner dancing is very difficult, especially for the lead (as you probably heard, it takes something like 3x the amount of time to become a good lead as it does a good follower). Such a difficult art to master (am a musician and I still found it extremely hard, especially at first).

One thing you may want to try is becoming a master at the beat. You've probably already heard this, but still even so, seems like leads (and followers) don't realize just how truly important it is to taking the next step. Yeah, a good way to practice is to do a very clean and confident basic step to the beat of any song you hear.

And if you've already got this down, more power to you :-)


I tried to learn to dance (hated it). It is a bit of a weird thing though, there as social events where people feel like it is OK to really try and pressure people into dancing. It is really annoying.


It's a pretty important social custom in a lot of cultures. I feel for you as there are times when I really, really don't feel like dancing but also don't want to be the odd one out.


It doesn’t really seem like an important one in US culture anymore, thankfully, so much as one of the few remaining fronts on which it is oddly socially acceptable to pester people.


I dunno, maybe it's not as important as it used to be, but high school dances have some cultural heft, and dancing is a centerpiece of the American wedding tradition. Weddings are pretty universally important across cultures. Plus America is becoming more Latino which I understand values dancing pretty highly.


I've had very good experiences with swing dancing. People are so nice (LindyGroove in Pasadena). No pressure, and everyone is very accommodating to newbies. I'm not sure why, but there is a very high percentage of engineers.


I tried Contra dancing a couple times. The people were nice enough, no complaints there, it was just like… I could be doing anything else and be happier, hahaha.


incase you want to give it another shot sometime, teaching your self via youtube/other platforms like steezy.co is a viable option if you want to go at your own pace w/o peer pressure.


Yeah, I hate it. I now can say "no" in such a way, that people immediately stop trying to make me dance, but when I was younger, it was really annoying.


I posted a version of this story once before, but it bears repeating.

I was working at Tymshare, maintaining the assembler and linker for the PDP-10 or the Sigma 7 (I don't quite remember which).

The linker had a bad habit of leaving unused memory uninitialized. Every time you linked a program, the binary would be different. Functionally the same, but they wouldn't compare byte for byte. So my manager asked me to make sure the linker zeroed out all unused memory.

After linking a program, the linker printed a message something like this:

  8412 bytes used
   439 bytes free
The "bytes free" were that unused and uninitialized memory.

The linker was a mess of spaghetti assembly code, and it was a real pain to find and fix all of the places where it failed to clear memory.

My manager knew what a hassle this task was, and he was a chill dude. So just for fun I added a temporary message meant for his eyes only:

  8412 bytes used
   439 bytes free and it's pretty fucking clean
I figured he would get a laugh out of this and then I'd remove it.

Unfortunately my manager wasn't the first to see the message. His manager was giving a demo to a customer, and they were the first ones to see the message. Oops.


Back when cloud computing was mostly for early adopters, I used to work on many customer projects at the same time, or in quick succession, in an architect/developer role. It was great as long as the projects worked out as planned and I could deliver a working system in a few weeks or months and move on to the next project. It was easy to become a little overconfident until I faced unexpected difficulties in some projects and the tight schedules started to fall apart.

For instance, I learned that you should never trust what a customer says about reusing their existing code without actually looking at the code first. You can end up having to rewrite the code, and then have a dissatisfied customer, because the new code doesn't have the same problems as the old code and produces different results. It doesn't matter which one is correct, since the old code was already used for years and everything is based on it.

So the humbling experience has been not to become too optimistic and overconfident after some successful projects. You will become the bad guy if you over-promise and can't deliver, even if you feel someone else is actually to blame. Every time you start something new, you have to check for yourself what the requirements and conditions truly are before accepting a deadline. And you can never trust the documentation or description of an existing system without also looking at the actual system.


I've mostly been on the "user" end of buggy internal company code. It's always a scary day when the interns start, because we finally have someone who will have the time to "fix" the bugs in the code--but half of them we have been using off-label as "features" to solve other problems.

Whenever I start at a new company, I make sure to ask not just what breaks the system, but how the system breaks when it breaks. One person's broken pot is another person's cutting tool!


Like many other people who should know better, I tried my hand at day-trading. I bought some course by someone who in hindsight I'm certain made more money off selling courses than they ever did off of day-trading. I got my account setup, had enough funds to allow me to trade short timeframes (I forget what this was called but there is a rule where you need X amount of money before you can do more than Y trades in Z timeframe) and was excited to trade short and long equities. I had some success and some failure with fees effectively eating my profits. I used to do my scans at night to know what I was planning to look at upon market open where there tends to be a lot of volatility and (I'm sure if you knew what you were doing; I didn't) opportunity. One morning I was certain that Boeing was going to plummet so I shorted a very small number of shares and was glued to the screen. I placed my market order, it hit, then Boeing immediately ripped upwards. Now, if you've traded you know that the difference between going long and going short is that going long you can lose everything you invested, going short you can lose everything you own. For about 3 seconds - my heart pounds when I think about this - I hemorrhaged money. I was down a couple thousand dollars before I could hit the key to cover the short at a huge loss (thinking back I know I had a stop loss but am not sure why it didn't trigger. Presumably it was a limit order and the price jumped the bid pre- and post- spike; I don't know). Right as I went to cover the stock dropped back down, as quickly as it shot up, and I ended up making maybe $500 on the trade. My last ever trade. I withdrew my funds and closed my brokerage account immediately thereafter.

There were so many learnings it's hard to know which is the most important, but I know that I am not cut out to day trade, I know that shorting is a fools game for (most?) non-institutional investors, I know that if it sounds too good to be true ("day trading will make you rich!") then it is and I know that even people of regular intelligence (I'd be average give or take) can do really stupid things. Never again. Never again!


I had some success trading a long/short stock portfolio, but on longer time periods than day trading (holding positions from few weeks to few months). The fun lasted almost 3 years. Then I shorted META from 300 to 100 and felt on top of the world, it was after shorting a bunch of other "covid success stories" like zoom, moderna, carvana, and making 50%+ return on each in a reasonnably concentrated portfolio. The rest of my portfolio was doing ok as well.

As META kept going down I kept adding to my position (meaning shorting more), and then it came back up. I ended up a loser on the position despite being up almost 70% at some point. I couldn't believe in a recovery for the company.

I then thought "never again" and started to trade options so that I would have a more disciplined, guaranteed stop loss. I lost more than 50% of my margin that year and another 50% 6 month later, so I was back below square 1 at the end of it all. We are talking small numbers (maybe losing 15k in total) but an amazing amount of time and energy spent doing all this which generated a lot of stress.


> We are talking small numbers (maybe losing 15k in total) but an amazing amount of time and energy spent doing all this which generated a lot of stress.

This was roughly my experience too. Stopping after the above trade meant my total losses were not huge (relatively speaking; maybe $2000) but I put an incredible amount of effort into it and the stress was huge. I don't fully regret it because, frankly, it was very exciting, I had a lot of fun and it was extremely interesting trying to predict the ebb and flow of the market and the psychology behind moves.


> [...] I know that shorting is a fools game for (most?) non-institutional investors, [...]

Any kind of active trading in public markets is a fool's game for non-professional investors.

Active trading in something obscure enough that the professionals don't bother might be exempt. Eg think trading Magic The Gathering cards in the 1990s.

You might still lose money doing that, but at least you have at least a theoretical chance to make money trading on a risk-adjusted basis.

Of course, the more obscure the market, typically the smaller the scale. So in the end your gains might just look like an hourly wage for your effort, instead of return on capital.


I did a short-lived attempt at day-trading 15 years ago. Bought a few tens of thousands of NFLX, NVDA, and AMZN. Sold it all maybe a week later and made a couple thousand bucks, which I thought made me pretty smart.


I'm curious as to why you stopped (feel free to tell me to mind my own business!)?


Ha. The real question is why I didn't just hold. That $50K would now be like $10 million.


Been there with longer term trades. Bought some DXCM back in 2014 and sold later for a small profit. Was trading at $8-9. I used their continuous glucose monitor (am type 1 diabetic) and was certain they would be successful. Sitting at around $115 a share right now.


I used to get upset by things like that, until I realized that everyone(-ish) has a similar story.

Still, it's amazing that for all the hours of work I put in, day in and day out for years, I could have amassed 10x more money if I had just done "nearly nothing" at a couple of key moments.


Same. I'm the guy who would have order Bitcoin with pizza, guaranteed.


I contributed System.HashCode to .Net Core. I was overzealous with inlining hints to make it go fast. jkotas popped his head into the PR and noted the 2MB of machine code per generic type parameter. The bigger problem was that I knew better, and preached better at the time, but had my head too deep in the weeds. I'm better at occasionally popping my head out of the weeds nowadays to make sure I don't have tunnel vision in a daft direction.


Just wanna say thanks for contributing to the platform that is currently paying my wages.


Give it a go sometime. OSS contribution is rife with amazing free mentorship, you have a really high chance of getting out more than you put in. Especially with .Net.


When I was younger, I had an issue with external vs internal validation. Sadly, it heavily skewed towards external validation. I was on the chunkier side for a lot of my childhood and into high school. Joined wrestling and stayed with it. Lot the weight, grew, and gained muscle. Also started to get a lot of attention from the opposite sex. That, with the external validation issue, leaned into it and just had fun. It became something that I just did.

I had been a personal trainer for awhile when I got a new client. An eighty something professor who taught Dante’s Inferno, Italian, collected degrees, and was actively pursuing some field in psychology (forget what one).

For about 6 months, we’d work out on Saturday mornings and he’d always ask of my adventures since we last saw each other. I’d regale him and that was that.

One morning after going though it all, he asked, “what else is there?” or something. Whatever it was, it stopped me in my tracks. I couldn’t answer. That question hit me harder than a freight train.

At that moment, I realized there was a massive issue with myself. I wanted a change, but a) didn’t know what to change, b) how to change, 3) how to feel about myself. We continued to work on him and his goals, which was to bench 135 safely. He got to his goal. ;). He also helped me to get to mine, which was to focus more on internal validation and be happy with self.

I was able to shift from heavily skewed external validation to external validation probably being now around 20%-30% and the rest being internal.

Because of him, I was able to embrace myself and lean into the information seeking snd knowledge gaining person I am today and get to a level that someone with my academic background should not be at.

A quote that I came up with many years ago that explains all of this and the transformation I had, “you’re not going to change until the pain of change is less than the pain of staying the same.”

One other one too. From him, the professor. I have severe adhd and can read the same sentence 50 time and not remember what I just read, if it’s not something I’m highly interested in. I came to him and told him that it’s so damn boring and it’s just a fight to sit there and attempt to read it.

He gave me a mind shift: instead of thinking how it’s important or exciting to you, try to imagine why the author of it thought it was so exciting, to where they spent their career learning about that subject. That allowed me to completely change how I read and that too has helped me more in the past years than I could imagine.


Your final paragraph sums it up nicely. I think a lot of people when they see something educational will just switch off if it doesn't immediately engage a personal interest. Seeing it from the point of view of the author is a great way of putting it. I can explain this to my kids. Ok, Newtonian physics is boring. So let's think about why Newton made such a deal out of it.


Oh, external validation vs internal validation has certainly been a humbling experience for me too.

So humbling I could compare it with a train crash. Sadly possibly over-compensating for it now, but I don't want to go back to the external validation spiral.

Amd thank you for sharing, and putting into words what I didn't manage.


> “you’re not going to change until the pain of change is less than the pain of staying the same.”

A thought I have had in the past also, I think it is very true.


That last paragraph has helped me many, many times in situations from politics to personal. It's especially easy to be "this person is wrong, why don't they see how wrong they are" and much more useful to be "why is this person looking for this".


> "this person is wrong, why don't they see how wrong they are"

Each person, company, industry, street, city, country, state, country, ..., each thing has their own viewpoint from their own vantage point and will most likely see, interpret, view what's being conveyed differently than the sender.

Each person has their own view and it's valid, i just may not agree with it, but i still want to understand why they think / believe / convey that.

at the same time, i'm obtuse and sometimes forget to look outside myself. :|


> He gave me a mind shift: instead of thinking how it’s important or exciting to you, try to imagine why the author of it thought it was so exciting, to where they spent their career learning about that subject. That allowed me to completely change how I read and that too has helped me more in the past years than I could imagine.

Yeah. I studied psychology and it was the most prominent mind shift for me too. Watching what people do you need to see what is going on in their heads, not the outside things. Looking at a product of someone's work you should see the person who did it.

It completely changed my attitude to discussions. I was a math guy, any statement either true or false, and you need to decide on each one before going further. But now people say things, and I do not see them as things by themselves, I see them as things said by persons. Oftentimes it is completely irrelevant are these things true or false.


> I was a math guy, any statement either true or false

Interesting... for me, a fair amount of decisions are weighted--I can see that damn payoff matrix in my head.

I said it in another comment, "each person has their viewpoint from their own vantage point."

My question to you is, how were you able to make that change? I'm going to presume that it still rears its head time to time and when it does, do you notice it quickly and are able to adapt in the same conversation or is it mostly a reflection and realization you were like that? or am i not even asking the right questions?


I've had a few humble pie experiences:

When I was young I set myself on a path to become a professional string musician. I practiced relentlessly and sat section lead and first chair in about 4 different school and local orchestras. I was relatively well known as the studious musician kid and there were some hopes that I was "going to go all the way".

Then I had a rough tryout for a regional orchestra, made it, but sat second to last in the section. Sitting last place was another player from my school who was decidedly "middling" in his skills. I was absolutely shattered. But then came to realize most of the players ranked higher than me were objectively better. I also realized that there was physically no way that I could add more practice time and we didn't have the resources to hire better private coaches. I simply didn't have the talent to "go pro".

I realized then that my dreams were never going to happen and I ended up spending several years in limbo before ending up in technology.

I'm actually happy I didn't end up in music, because now I get to putz around and make a few songs a year as a fun and fulfilling hobby, instead of being decades in, making next to nothing and trying to fill in the gaps with second jobs and private lessons. I also went on a few short tours and really disliked playing the same music over and over again.

Tech has been more interesting and I've had opportunities to have very large impacts in a few places that have given me immense satisfaction instead.


How did you handle accepting your dreams would never happen?


I was sad and directionless (sometimes angry) for a few years.

Then one day something sort of "clicked" and a new direction I wanted to go sort of crystalized, I pursued it and never looked back.

It helps that I can still pursue music as a hobby and don't feel the relentless pressure to be good -- so these days I actually get to enjoy many aspects of my dream when I feel like it and it stays fun.


I was hired into a company as product manager. And I struggled. As the company grew from 200 people to 700 in 6 months it was basically a mixture of Mad Max Thunderdome for tickets and products with a mix in of Darwin, Scrum, Story Points and Venture Project and Matrix Organisation.

One of my colleagues, a small, silent, kinda shy guy did get all his tickets done and all his projects done in time.

I did not know how he did it.

During one lunch, he told me. He always offered to write the meeting minutes of each meeting. Every time, all the time. Did not matter if it was his meeting or if he was just invited.

He knew the company was chaos. I knew the company was chaos. Everyone knew the company was chaos. He put order to the chaos. His order.


Humbling moments were a recurring theme in my first 10 years of employment. I was hired out of college with an Environmental Science degree to run the computer systems of a software startup. I was a computer hobbyist to be sure but had no formal training. My only other qualification was that I was willing to work for almost literal peanuts. I stuck with that company for 5 years because they were willing to let me figure things out on the fly, since that's what everyone else was doing too. I had to teach myself networking, then TCP-IP, frame relay, T1, ISDN and provided both internal and external customer support. I worked with beta versions of Windows NT and MacOS, and even had a close call with AS-400.

When it became clear that the company did not have a bright future I took all my skills over to a local brokerage that had just had an internal IT meltdown. It was like starting all over again on day one of my first job.

My most humbling moment turns out to have been political. At the brokerage I was asked if I wanted to be the IT Manager. I declined because I didn't feel I had the experience. This planted the seeds of my departure 5 years later as the hack they brought into the department felt increasingly threatened by my success and skills. You can't ignore office politics.

The second moment was more of a huge missed opportunity. One of the board members of the startup found out I was leaving and offered me a role at his other company. Honestly I didn't realize at the time what a compliment that actually was. I would have been one of the earliest hires of a major firm that is still going strong decades later. I learned to not conflate "niceness" with business acumen. This person had his own money on the line at our startup and had every right to press people on their success or lack thereof. I just thought he was a jerk at the time.

"Good judgement comes from experience; experience comes from bad judgement."


I learned way into my adult life that I could just turn the swivel hook/latch to quickly unwind the cord on a vacuum cleaner.

Before that moment I would manually unwind the cord just like I would wind it up. To make it worse, I even remember wondering why the swivel hook was there thinking it was poor design.


Well, I didn’t know this either until I read your comment. Thank you!


> Before that moment I would manually unwind the cord just like I would wind it up.

As you should. Otherwise the cable gets twisted a few dozen times every time the vacuum cleaner is used.


You are rolling up your cables the wrong way if you run into that problem. Here's the right way: https://www.youtube.com/watch?v=PeLrxXUbq0g


Nice. This is a technique you learn in Scouting for rolling up ropes too.


I figure-eighted the cord onto those hooks to avoid that. Or alternated “over” and “under” with each pass around the hooks.

EDIT: When I say “over” and “under” above, I’m referring to the technique RedNifre linked to in the sibling comment.


Wait what ?

I've seen two different "systems", one where you do a quick pull on the cord and it spins back up, and one where there's a "roll up" button on the machine which winds up the cord, but I've never heard of anything you can do to make the unrolling easier ? Video ? Link? What is this magic you talk of ?


> it spins

You're thinking of a vacuum cord that automatically winds onto a spring-loaded reel, commonly seen on canister vacuums.

They're talking about an upright vacuum where you manually wrap the cord around two hooks. One of the hooks can be rotated so that it no longer keeps the cord in place.

Look at the two black hooks in front of the yellow cord in this picture:

https://f.media-amazon.com/images/I/61XbxqH6%2BQL._SP523,128...

Note that the bottom one can be rotated upward. The entire cord can then be removed from the machine in one motion.


Euro-mind-blown I didn't know they still made those, I only know them from old cartoons :o Thanks for clearing that up for me! :)


They're still available but they only seem to make them for professional cleaners (hotels etc) in europe. And they get big and you probably don't want them in your home.


You can find that kind of setup on many machines around the home and shop:

Look at https://bissellcdn.blob.core.windows.net/cdn-storage-contain... - the ONLY Mention it makes is "quick release power" but doesn't document how to do it (it's a turn the hook setup).


Steve…

What was the moment of realization like?


You're not alone.


TIL


When I was about 3 months into my programming career I performed a minor refactor to some code.

Unfortunately, the program was difficult to test (no unit tests) and very important, and difficult to verify correctness of output as well. (As in, you can't just look at it and say "yeah that's numbers lgtm").

Also unfortunately the previous author had not been very consistent in their programming style, so there was a lot of syntactic noise (some single line if statements used braces, some omitted them, etc)

Also unfortunately in my prior rewrite work in this, I had grafted the old UI onto my new backend to save time, but not brought the rigor there up to snuff (it's UI code, I had thought. It's well enough to have tests covering the business logic for now.)

Well anyway when I had rearranged some code, I hadn't realized there had been an extremely large block right underneath an if statement that wasn't using brackets, and I had accidentally split it into a few statements. N-1 of which were naturally now outside of the if statement.

The end result being that a bunch of code would run and the "is dirty" state worked fine, but if you clicked save on a "clean" state with no edits, it would blank the fields in the DB but not in the UI.

It didn't end up having any actual impact because we caught it in time, but god damn did it teach me something about "real" programming. I'm not sure exactly what all it taught me, but I think about that a lot as I do random other things now 8 years and 3 companies later.


Did that when I was younger, but with my own code :)

There was an if that didn't need brackets when I wrote it. 6 months later it needed more stuff on a branch but i was tired and in a hurry so I didn't notice adding extra lines needs brackets. New code compiled but wasn't part of the if. Turned a 5 minute fix into 2 days.

Of course, all my ifs have had brackets on both sides since then.


It is the thing I love about emacs, it autoindents everything, so if you got brackets/braces/parenthesis wrong you see something you don't expect. But obligatory braces work too.


Yeah maybe these days the smarter autoindent would prevent incidents like this. But it's too late for me, I'll add braces around 1 line branches till i die :)

Well, not in python...


> I'm not sure exactly what all it taught me

Make curly braces mandatory with a linter, of course!

Also, add tests before changing the thing.


> I'm not sure exactly what all it taught me

Time to get into woodworking!


In 1994 my boss asked me how long a set of changes would take in an existing billing application. I took a day to look at the code and I said 6-8 weeks.

He said we (me with his guidance) could do it in a week, maybe two. I adamantly disagreed.

We proceeded to spend about 3 days writing a detailed document on the logic required. Once he was satisfied, he asked me to take a final look at the code and revise my estimate.

I was shocked and came back and said “a few days.”

It was all done and tested in less than two weeks.

That’s when I learned how to read code and how pseudo logic can speed up software development.


This is a great story. Similarly I've learned that any amount of planning is better than no planning. Simply drawing a few mock-ups of what you're going to build will make things go a lot better. It's cheaper to fix mistakes at the design phase than the implementation or production phases.


Interesting! Though most of the time, the problem with estimating how long software takes to develop is that people tend to be hopelessly over-optimistic.


While in Army basic training, my duffel got swapped with another guy's (no idea whose). Back at the barracks, I discovered that they'd snagged some spent shells from the range. Massive no-no. Young, naive me assumed that presenting these to the drill sergeants and explaining the situation would be the correct move. I was severely disciplined as a result. Others were like, "Dude... why didn't you just quietly toss that shit in the trash?!?" It was a big wake-up call for how poorly I could gauge people (e.g. the sgts), adapting to the situation, etc.


Naive civilian question here -- If the drill sergeant is your boss in basic training, I don't understand why telling him info you think is important got you into trouble. After all, "talk to your boss if you have a concern" is the #1 piece of advice given to anyone who has a job.

In healthy work environments, the culture is to assume the best about the intentions of others ... sounds like he wasn't doing that at all.


Basic training isn't supposed to be a healthy work environment. It's about breaking the recruits down and reforming them into perfect, interchangeable cogs that won't interfere with the operation of the machine.

Recruits leave with a sense of pride and belonging, and they fit seamlessly wherever they end up, doing their required work with minimal hassle. They address problems at the lowest possible level (e.g., a supervisor handles the discipline--no need to run it up to management unless the ramifications are severe.)

Notionally, anyway.


You are partially right.

Another justification for making parts of basic training hard, is that fighting a war is hard.

So before they send you out into the field, they should make sure they know how you handle sleep deprivation, bad food and confusing orders etc.


> talk to your boss if you have a concern

This is one of those pieces of advice that is spoken but has a huge unspoken part, mainly - if talking to the boss makes them look bad or causes problems for them more than not talking would then you stay silent.


>In healthy work environments

There are healthy work environments in the military. Basic training, however, is not one of them. There are certain things about joining a military, like the prospect of having to be sent to kill other people you've never met or be killed by them, that changes the calculus of what is "healthy" or not.

I remember in basic there were Drill Sergeants you learned that could be reasoned with and those that could not. Your experience depended largely on which DS was on shift when you screwed up.


It wasn't a particularly healthy environment, as I recall (it was a long time ago). Rather than "tough but fair," I remember my drill cadre being volatile and sort of mean.

It was ridiculous that they punished me for coming forward. OTOH, I knew them well enough by that point, and a wiser me would have chosen to continue keeping a low profile until I could GTFO.


Learning Haskell.

A friend of mine had been gracious enough to lend their time and expertise to teach me TLA+ to help me solve a problem I'd been wrestling with. When we'd have lunch together they'd tell me about their work and how they were using Haskell. At the time I was skeptical that Haskell was a practical language for building software outside of academia.

I had realized I was regurgitating opinions from other people that I'd heard about Haskell. When interrogated I couldn't come up with good reasons for my opinions. I didn't want to continue embarrassing myself. I decided to learn enough of the language to form my own opinions.

And I've been programming in it as much as I could ever since.


Several years ago, I took my car in to be serviced. When I came to collect it, it was parked at the back of the garage (about 20-30 yards in from the road) amongst other cars the garage had in for servicing or work, with basically a single 1.5-car width lane available to get in and out. I got into my car, and spent about 10 minutes trying (and failing) to do an n-point turn in the very limited space available, in order to exit back on to the road forwards.

Eventually, one of the people who worked there (who had been watching me the whole time, looking very amused) got me to open my window and simply said to me "why didn't you just reverse all the way out like we do?". The ground could have swallowed me up - the thought had literally never occurred to me.

I like to think of this story as a good reminder that sometimes looking at a problem from a different perspective can make all the difference.


During the winter, I once lost control of my car as I was attempting to brake at a stop sign. My car ended up “stuck” in a plume of snow a couple meters away from the pole. No accident luckily.

I kept turning my steering wheel with my foot on the pedal to try and accelerate my way out but nothing worked. Suddenly, an old guy pulled up behind me in this massive truck and came to the window to ask if I needed help.

I explained to him that I tried everything and that we likely need to call a tow truck company (or use his truck even) to pull my car out.

He then responded, “Did you try reversing your car?”

Started hoping I did get into an accident at that point just to spare myself the embarrassment!


I was a Cloud Architect who had been working nearly 10 years at a financial institution. When our CIO left, the board had made a poor decision with their replacement. The new CIO was a complete bumblehead not knowing which direction was up.

Eventually an initative came down the chain that we were going to put our on prem datacenter in the cloud. As I had been in the role for so long, I already had multiple strategies on how to accomplish this and save the company over a quarter of a million a year in the process while providing additional DR to mission critical components that they didnt otherwise have.

I presented the strategy to the CIO, who wanted to get a second opinion. Ok- fair. The second opinion was that we had a solid cloud migration plan. CIO wanted a third opinion, then a fourth. All of which said we had accounted for unknown variables and were set to proceed. On his FIFTH opinion, I remember sitting in yet another office going through introductions. This random guy talks about being a cloud Architect for a bank, moving critical apps to the cloud and providing DR.

Bumblehead CIO turns to us and mouths "WOW!". As if that was the most incredable and impressive thing that he has heard in his career. It was at that minute that I realized that not only did he now know what he was doing as CIO, but he couldnt even recognize the milestones that my current team was achieving in regard to cost savings, security, migrations to serverless cloud features, and the solid migration plan I had presented many times to him prior.

What I learned in that moment was a well crafted 15 second introduction is more important than what most people think.


I took a mauser .25 pocket pistol apart.

one of these: https://sportsmansvintagepress.com/read-free/mauser-rifles-p...

Eventually got it together again, but it required assistance from my uncle who had given it to me. He laughed long and hard when i described the predicament, then said "yup, that one got me too". He also rebuilt Mercedes diesels as a hobby, so he was full of entertaining critiques of German engineering.


What was the difficulty in re-assembling it?


as i recall, understanding the design fully enough to get the springs and tetchy parts back together. Which goes where.

This was pre-internet so articles like that one weren't available to me. There may have been some trick to keeping springs where they were supposed to be as it reassembled too.


I got stuck with the Ruger Mark III .22 pistol. Reassembly after field stripping you have to know the trick to turn the pistol up (or even upside down at a 45 degree angle) with the magazine in place before you can get the mainspring housing assembly to seat correctly.


It was my second day in NYC as the new incoming student at Columbia University graduate school. My senior with whom I was staying took me for sightseeing. We got into the subway station and my senior went ahead and I got late while purchasing the tickets. I swiped the card at the "turnstile" and waited for it to move up automatically so I can go ahead. After waiting for 2-3 minutes, I thought something must be wrong. My senior came running back to find me and saw me standing near the turnstile helplessly. I told him it's not going up, I swiped already. He told me, you need to PUSH IT to move forward, it doesn't automatically goes up! I guess I had the Delhi experience in mind where the turnstile goes up automatically.


I've almost subconsciously learned to watch those ahead of me in situations like this, because I've been caught out too many times.

The turnstiles that do NOT move when you push but instead require a button or other press really hurt if you expect it to move!


NY has these old quirks, strange for me too coming from Europe.


When I was working in a queue feature (for example to buy tailor swift ticket), and was proud of my complicated real-time solution using websockets and CRDTs...then a more experienced guy came, rearchitected in a much simpler way using just the DB with long-polling, not real real-time (but who cares), and it ended up simpler to deal with network splits or crashes. Learned the hard way you can never rely on the network if you require consistency, and it's also often simpler code-wise.


One of the earliest projects I took over from a higher level developer was an auction website back around 1998. The site worked like eBay in as far as you could put a maximum bid, and it would automatically bid higher than the last bid up to that point. The problem was, it was all dependent on users being on that page so that the auto-reload http header would fire again and refresh the page. If nobody was on the site watching the auction, no automatic bids would happen and nobody would be declared the winner.


The number of "web cron" things in tools like Wordpress and friends is insane; I've been bit a number of times by this - if nobody hit the site for a day, none of the crons would fire.

Big website, no problem. Small internet site, big problem.

(Yes, for some cron + wget/curl was whipped out)


People often forget that you have to poll to handle lost network connections, IP changes, etc., so there isn't always a real-world win to web sockets.


How about reconnecting the websocket from the client?


Sounds like polling. On an inactive connection, whatever it is, you have to always be polling to see if the connection is still alive.


What do you mean? The client knows when the websocket connection goes down and just reconnects. How is this polling?


Because it always needs some sort of keep alive, which is many times hidden inside the client/web framework


But isn't a keep alive bit better than a "full" polling?


Losing my job in my mid 30s, and changing career trajectories with 2 children.

I learned my own limits. And importantly, that we are how we frame ourselves: a loser, a victim, a believer, or someone humbly exceptional. Thanks for asking.


I usually don't comment on HN but needed to ask you: How did your framing work? And can you elaborate "learning my own limits"?

It's been 8 years since I graduated. I started working at a Bank in a Management Rotational Program with great manager but dropped it within 4 months because young me dreaded being pigeon-holed at 9-5. I joined a promising startup but... the co-founder unexpectedly passed away. Long story short, I have had 6 jobs (incl. internships) within last 8 years: I have lost jobs for one reason or the other (startup folded, directions changed etc).

In good times, I am able to appreciate diversity my experience but I feel undervalued; I am more of a "jack of all trades, master of none" and feel I've taken 2 steps forward, one step back in my career. This has also damaged my professional as well as personal interests. In early 30s now, I crave moving to a more stable job/corporate but feel typecasted as someone who's worked at early-stage startups most of the time; this economy hasn't been kind when it comes to finding work either.


It can be worthwhile to have two resumes/stories for the same facts:

One is Vibgyor5 the startup wizard who has assisted with multiple early-stage startups and is ready to go again!

The other is Vibgyor5 the corporate 9-5er who by happenstance ended up working at a number of companies that are no longer operational.


While I have been tweaking CV according to specific roles, your comment made me realize I should overhaul these categorically for different audience. Appreciate your suggestion!


The frame was rebuilt by reading "Master Your Emotions" by T Meurisse. About the limits, just don't.... Good luck.


As a teenager, I discovered disassemblers/debuggers and became very enthusiastic about hacking and patching things. I reset the trial period counter on a few shareware apps, and the next "victim" that caught my eyes was encrypted RAR SFX archive. I thought it would be the perfect target.

I spent ~20 hours trying to find a routine that compares the entered password with the correct one. That humbling moment I realised there was no such routine, and moreover, most of disassembled code is just garbage.

[*] this is an encrypted archive combined with extractor in one .exe file.


Being 15 and unable to grasp the concept of an array whilst wishing I could somehow use a variable to escape my at the time a1, a2, … a11 variable naming convention.


Haha, tell me about it.

When I was first learning PHP as a teenager I also had similar problems. I did not know about SQL JOINs for at least a couple of years; which meant database querying was... overcomplicated to say the least.

The other epiphany I had was when I started to realise HTTP was just a request string getting parsed. Given I had used FTP and web servers like Apache previously for HTML and files, I was convinced the directory structure in the URL was the directory structure on disk. It took me a long time to get my head around the fact that you could just grab the request URL from the HTTP headers and not have to have hundreds of physical folders to make URLs like /category/subcategory/page (I'd managed to approximate this with making folder structures that looked like this with index.php files in).


> The other epiphany I had was when I started to realise HTTP was just a request string getting parsed.

I've never thought of it like this, but I didn't understand for a long time that a webserver was just a function that run with the request as an argument.


A formative experience for me was learning to program and asking a peer “how I do lots of variables but I don’t know which one I need” - I had none of the terms to even ask for what I needed.


That phrasing of the question is not bad at all, just needs an open minded person to answer it


I remember at 15 being annoyed that I couldn't figure out a way to have a textbox which I could use to input and run any arbitrary code while my own code was running to debug it.

Like being able to type "println(x)" to get the value of x.

Took me a quite few years to discover the intricaties of the so-called debugger :D


Only a few years back did I fully realize pickles and cucumbers are the same vegetable.


That is like realizing cucumber in the US is a different vegetable from cucumber in Europe (which I thank Adam Ragusea for pointing out). :)


You can pickle just about anything, not just cucumbers.


I am also aware of this lol


I was in my 20s before I realized even numbered houses are always on one side of the street and odd numbers on the other. Literally no excuse for not figuring that out.


One of those life experience moments:

I "knew" this and a had a really good friend who did not. Both of us grew up in the same area, and we met in school, so you'd expect we should agree on this, right?

While "arguing" about it one day, it turns out the suburb they'd grown up in had several private subdivisions where the builders could do whatever they wanted. Houses were numbered sequentially following one direction of the private street, then the other. So the house nearest the entrance of the subdivision would be "100 Maple Street" and across the street would be "143 Maple Street".

Because they'd grown up mainly going to other friends' houses in the private subdivisions, my house address was the odd one and theirs were normal to them.


Even in the US with named/number streets "as normal" I know of at least three cases where the "front door moved" on a house on two streets, so the address number stayed the same but the street name changed, making it completely out of order.


Well, always if there's a street that was put down facing like that. Commonplace in new towns laid down over very large areas.

In the UK, oh wow, you will encounter some weird numbering issues. I live on the corner of a street in a very complex, 400 year old area, and I am forever leaning out of the window to shout instructions to utterly bemused couriers.


28 being next door to 47 at the end of a cul-de-sac can really mess with people.

Also on older estates where spare green spaces have been used up by additional houses so you end up with 21,23,25,25A, 25B.

The UK can be weird....


Right.

And if you live in some regularly redeveloped bit of a town that grew in the Georgian era you can end up with clusters of houses that have almost no discernible pattern left over; I live in such a house. The naming around here is astonishingly complex, such that if I explain it too much I would identify where I live.

(I have three physical neighbours -- that is, I share walls with them. And we are on three different roads, legally speaking)

The plus side is that as you get to know the couriers who you've helped, you begin to understand that your packages will never go missing. There is an Amazon driver who smiles from ear-to-ear when he delivers for me, and I even get good service from Evri.

I move soon, and since I'm the only person here who works from home who has a clear view of where all the delivery drivers get out of their vehicles wearing a confused look, I expect parcel delivery accuracy to drop for my neighbours when I'm gone.


There's a gap in one of the streets where I lived, which is where the houses were bombed during WWII and the council decided to put in a park instead. Missing numbers don't normally cause any confusion, except that I had a beggar come round once or twice claiming to be a neighbour with an emergency - and they gave one of the numbers that didn't exist.


Ireland dealt with this problem in sledgehammer-fashion back in 2015. Every house gets a unique postal code that resolves to a set of co-ordinates.

Somewhat useful for couriers, since a large number of houses are neither numbered or named, but the post office will know who lives where. I say somewhat, because they will often not use it when it's given.


Reminds me of finding the closest pair of houses in the UK with the same address: https://paulplowman.com/stuff/house-address-twins-proximity/


I learned the numbering rule (in Brazil) at school - but have friends who didn't know it far into adulthood.

The rule, ~if I remember correctly (and matches my experience)~ confirmed by Googling is:

1) distance in meters from the beginning of the street to the start of the terrain where the building is in;

2)rounded to even number on the lefthand side and to odd number on the righthand side of the street/road

I guess knowing the rule isn useful so you know if you are at Soandso st. 200 and yout destination is Soandso st. 2200 thats a 2km walk there


That's quite neat actually! Had no idea :O


As usual, there are exceptions as well. For example some streets in Berlin use a "horseshoe" numbering system. I tend to look for the house numbers of opposing houses when I enter a street I don't know to check if it is horseshoe or even-odd numbering.


There's an additional rule used in Australia at least. Mostly.

The rule is that moving away from the post office, the left and right are predictably odd or even.

The other popular rule is that say the north side of an east-west st is odd etc.

Neither of these are followed carefully these days.


I lived in Pamplona, Spain for a year, back before my Spanish was particularly good. It was a pretty amazing place, with all its narrow cobbled alleys and small shops.

They had a particular style of bread in a few of the shops, kind of a rustic baguette with pointy ends, that I never could find the name of. I'd always have to point and say "that one", which always felt awkward. Worse, my Spanish wasn't yet good enough to even ask what it was called in a way they'd understand.

So imagine my good fortune one morning when I pointed at it in my favorite bread shop and the man picked it up and said "Pan de Ayer".

Pan de Ayer! Finally, I had a name for it. "Ayer!", I said with a big grin. I love Ayer bread. It's my favorite. Please give me a bar of Pan de Ayer.

The man did seem a bit taken aback by my enthusiasm for this particular style of bread, as did the other customer in the shop. But he rang me up after ensuring that it was in fact what I wanted. I held it up, made some yummy noises, said one more "Ayer", and walked out.

I made it maybe 50 yards up the road before I remembered where I'd heard that word.

We lived there another 9 months, and I don't think I ever went back to that shop.


For anyone else as dense as me, I had to look this up. "Pan de Ayer" means "Yesterday's bread". Good story OP :-)


I remember the first time going to the bakery in Spain on my own. I spoke some Spanish. I was pretty happy with the level I had reached in a short time, and I could definitely say "dos barras de pan integral, por favor". The shop assistent put them on the counter and then said "go mah?" (). That made me realize there was a lot to learn.

() "Algo más?" ("anything else?"), but that's what it sounds like in the local dialect.


Hola querido. The Spanish word for bread is Pan, not Pain. Pain is French :)


Moved to France (possible out of shame) so that probably explains it. That’s what my Spanish sounds like these days.

(Fixed)


If you like good French soup, you should definitely try soup du jour. It's amazing!


I often learn how to use something well that I've been using my whole life. A ratchet strap was a good example--you can use it without understanding how to use it well. One video (essential craftsman) fixed that for me.

I think the most humbling for me is seeing a real pro use something you use a lot, like a kitchen knife.


How were you using ratchet straps wrong?


https://www.facebook.com/Essentialcraftsman/videos/ratchet-s... watch and learn!

"Big wrap" is the biggest mistake I've done (and seen).


Well, I didn't know the reason I was opening the ratchet handle--the opposing end has a cam on it, so it moves a metal bit out of the way of the ratcheting teeth. I would pull that thing out of the way with a finger on my second hand (when under load it can be very hard to get loose).

I also didn't know about the harmonics & putting a twist in the line. I also had a lot of problem with my lines working loose, which I don't have anymore, but I'm not sure I learned the fix in the video.


I took my Thinkpad to a repair shop because its charging port was damaged. A very stoic human pointed out to me it has *two* identical ones, USB-C type, right next to each other.


Haha.. I had exactly the same issue. To be fair, the other port is a little hidden since it is also part of a proprietary docking station port.


I am confused. Does only one of them support charging? (I've got one where both can charge, though they don't look the same because one is also thunderbolt)


I think this is their point given this threads question for a humbling learning moment. Both ports support charging but it took someone from outside to get OPs fixed mind off their habitual notion that only a specific port could charge. They did not even try that other port.


The leftmost one is the normal charging port: https://www.reddit.com/r/thinkpad/comments/7fidd0/reminder_l...

The second one is a different design with a different icon. Not clear at all.


IIRC there was a MacBook with two USB-C ports where both could charge, but it would run significantly hotter (and throttle sooner) if the "wrong" one was used.


Haha, I have done this too! Glad I am not alone.


It's always humbling to think I know a topic pretty well only to meet a true expert on the topic. It makes me think about how much time I spent learning it to not really feel like I know it at all, and makes me second guess my learning process. I can think of several times in my career/life where this has happened.

Also related, learning something, only to find out later that your understanding of something was incorrect, or made incorrect assumptions. Always humbling.


I worked as a sysadmin for a whole year before learning tab->autocomplete in linux


I still don't know all of the various commands you can use for history editing - I keep telling myself I'll learn more, but I never do.

https://github.com/rothgar/mastering-zsh/blob/master/docs/co...


Took me a long time to realise a Y/n prompt only requires you to hit Enter to confirm...


My boss and I had written a distributed transaction manager. Of all the components of our product, this was considered the lynchpin of reliable enterprise software.

The day came when we had to present it at a very well attended product launch. He and I took turns making different points. Then he announced to the crowd that he had a surprise for me (and turns out, to the entire company), that he had changed the configuration to write the transaction log to a removable drive. Then, in the middle of the demo he proceeded to pop the drive. Our careful demo script had got Putin'd. I went numb, our marketing manager nearly had a coronary.

He then announced that if it were indeed enterprise quality, the system should recover once the disk is put back in again. It freakin' did; the system worked!! He got a laugh out of the crowd that if it survives a demo it would survive failures in production, esp. when one goes off-script. He said that we had spent months and months in careful design and implementation and we have no business writing the word 'reliable' in our marketing literature if we didn't believe it in our core. The crowd lapped it up.

It was a huge humbling and learning moment for me. Although I was the primary implementor of that system, I didn't nearly have enough faith in it as he did. In one instant, I realized all the practices he'd been drilling into our team from the first day, the insistence on creating elaborate mock frameworks to induce faults, embracing the idea that if something could go wrong, it will. I realized that if you are surprised that the system works, you haven't reflected on that doubt enough. He would light up like a child when we encountered a real bug, and he'd follow it up with a session of reflection on why it escaped our attention in the first place. That session would result in a raft of new tests.

Rest in peace, Ed Felt, my friend, mentor and guide. Taken too soon (United flight 91, alas).


I've had one system I worked on where I had that level of trust in it, and it really was a completely different feel to your usual webshit stuff these days.


You can tell from a distance whether a ball valve is open or closed. The handle will be in line with (parallel to) the pipe when it's open. I learned this from dad recently.


Someone gave me a pack of Indome noodles and I started making them like the soupy instant noodles I had normally eaten. Someone saw me and said "That's not how you make those" as I was about to squeeze the sauce sachets into the hot water with the noodles.

I said "I know how to make instant noodles!" and I continued making them. He replied with "Okay then".

After I had made them I realised he was right. I also thought it was cool that he just let me be wrong. In his position I would have pestered the other guy into doing in the right way.

I learnt a few lessons:

1. How to make Indome noodles 2. I'm not always right 3. It's okay to let other people be wrong.


chatgpt tells me the sauce is for coating the noodles, not for mixing in the water. for others who don't know.


I don't know if it was humbling per se, but in the spirit of some of the contributions in the thread, I once knocked over a cup of coffee into the power strip behind my desk, blowing a fuse that blacked out half the office.

This was a company where the devs were all on workstations, so generously there was at least a few hundred hours of work that were lost.


I made a much worse mistake once. We wanted to use rsync to snapshot one of our file servers every evening because the tape backups we did took a long time and could only run them weekly. My boss asked me to develop an rsync script.

So I sat at my desk and after reading the man page a bit, I wrote a script and kicked it off as a test. It seemed to be humming along, so I turned my attention to other tasks.

While I was doing that, one of our users came to my desk and said “hey, the file I am working on just disappeared.” I said OK, I’ll be over to look in a minute. A few minutes later, another person came over and said the same thing, and my reply was the same. OK, I said, I’ll come check it out in a minute. When the third person came by, I started getting the nagging suspicion that something I did was the cause. When I looked at the log of my running script, I had a realization that filled me with utter horror. I had gotten the arguments to rsync backwards. Instead pf the source being the file server disk, I used the blank disk, and the target was the file server. Worse, I had used the —delete flag. As a result, rsync was valiantly trying to sync the disks by deleting all the files on the server.

An because the last backup had been a tape backup nearly a week ago, I lost the company nearly a week’s worth of work. After the company president sent our hundred or so employees home for the day “so that IT could fix the problem” she called me into her office. I was sure she was going to fire me. All she said was “you’re not going to make that mistake again?” Yes. That mistake and many others like it. I learned a lot that day.


> I was sure she was going to fire me

It's a really counter-productive policy to fire people over stuff like this. It breeds a culture where employees hide their mistakes, which can cause a lot more harm than the mistakes themselves. Like repeated negligence, sure, but one-time fuckups, never.


Took me several days to realize why some cars in the UK have white license plates, some have yellow ones. (They don't: one colour is on the front, one on the back). I no longer call myself a 10x engineers, now it's 9x only (that's a joke, I'm hardly 1x).


In India yellow is commercial and white is non-commercial vehicle


TIL as a 35 y/o British person


Glad I wasn't the only one


A while back I came across this self-directed question:

"How have I been complicit in creating the conditions I say I don’t want?"

(from Jerry Colonna, according to The Internet).

For me, it has been a sporadic but powerful concept that often sits me on my ass, especially when I find myself feeling ungrateful or put upon.

I was already very familiar with Stoicism which has similar lessons. So not only did I discover that I was responsible for my own situation, I also had the humbling realization that I hadn't actually grasped the lessons I thought I had.


one of my favorite pieces of advice i read a couple months ago and have been trying really hard to implement: don't engage in online discussions that you don't want to see, even if it's to disprove someone else's bad takes. one's engagement with these conversations is why they perpetuate.


Seeing software systems that are barely held together by shoestrings and Dixie cups that make millions of dollars a day. Very flaky and kludgey, and I think to myself I could build something better than this, but still have yet to do so.


I used to think the United States took the idea of inalienable rights seriously. I've since learned that "missionaries get eaten by cannibals."

The quote above was kindly used by the founder of an organization to explain why he couldn't help me expose the injustice I experienced after I was arrested for trying to use a valid court order to free my friend from unlawful confinement in a local hospital's emergency room.

Later my defense attorney explained to me that my accuser was the state's largest non-Walmart employer, and that it was much easier for my trial judge to rule against me than against a retired drug cop employed by a billion-dollar "nonprofit" that pays its employees quite well.

In 2022 Dr. Palmer published a book [0] about the 80+ years of scientific research establishing that I was correct to protest my friend's tranquilization with defective prescription drugs. Nonetheless people are still being sacrificed to the mental health industry's obsolete degenerative interventions.

[0] https://news.ycombinator.com/item?id=40487118


Easily, this Ted Talk!

How to tie your shoes https://www.ted.com/talks/terry_moore_how_to_tie_your_shoes?...

I had randomly had shoes untie all my life. I had to teach myself to tie them consistently the same direction.

I can't believe I was never taught this, much less learned it on my own.


Finding out at age 44 that I am autistic.

Suddenly my whole life made sense, I understood that there are well-known and documented reasons for why I am the way I am, and that I'm not alone in my experiences.


That in the US, and if you are driving around a neighborhood, the size/tallness of the trees tell how old the neighborhood is (without really looking into any ads in an online portal)


Or how recently they have experienced a natural disaster like a flood or tornado.


Being fired after building a 1 billion dollar/100 million mau product — for no given reason and given minimal severance.

The best I can understand is the executives said “yea we aren’t paying this guys waypoint bonus we can just fire him and take it from here”

I learned no matter what you achieve if you lack table stakes you are worthless.


This might be a different response, but I think about this a lot. From my earliest memories, I have loved technology and especially software development. I got involved in a very large low-tech industry early on and I now have the golden handcuffs on. I've kept up with development, even finished my CS degree. I held on to the idea that I would hold the title of a real "software engineer" one day, instead of solo-ing internal tools.

Until I actually had the chance to. I have somehow gotten to a spot where I make what a senior dev does, and realized my responsibility as a father and putting "food on the table" trumps my "legacy," or at least for now. It's a boring, large-org gig without a solid definition of what I actually do. But when forced to reflect, I have it really good. Maybe one day I may go for it again.


I work with a guy who makes a lot more than me, and he describes his salary as "spending money" because he has so many other ventures, contract jobs, and investments. His attitude about code is that no one in the future is going to look at your code like it's the Iliad. It's not art. It's just a tool. Almost none of us have any legacy to speak of with regard to this work. Your priorities as a father are worth it. You and your child will remember and cherish a day at the park far more than a well designed program.


Yeah, I get that- I guess I meant more of my trade categorization. I don't really have a specialty. I really am just an "IT Guy" for a large org with a background in dev, so I'm seeked out for things that seem like that skillset might favor (which ends up just being stuff like Sharepoint pages and BI dashboards unfortunately). Maybe I could come up with something "buzzy" for my son to tell his friends...


Realizing how much work I had to do on my own shit. This is a gradual process because most people can’t handle knowing the full extent of it initially.


Er. The fact that I don’t realize that there could be a wrong way to lower and raise window blinds tells me that I may be doing it wrong too! Would you mind sharing what you did wrongly?

For my part: I think I learnt at age 35 the difference between sneezing and coughing. Duh!


Sophomore year of high school, riding the bus to school, I realized I was weak, too weak to stand up for what I knew what right, but didn't because of peer pressure. I hated myself for it; the realization fuucked me up for weeks.

During my sophomore year, a girl moved into my neighborhood. She was from Vietnam, presumably part of some refugee relocation program. She seemed nice, and she was very pretty, but in St. Louis County (Missouri) during the early 80's, she stood out. A lot. None of the kids in the neighborhood, including myself, had ever met an Asian person before - just Bruce Lee movies, that was it. Also, there was still bitterness left-over from the Vietnam War. But like I said, she seemed nice. Heck, I kinda had a crush on her. Anyway, one day riding the bus to school, a couple of dudes starting yelling racial insults at her - you know the word I'm talking about. And they were throwing stuff at her, pretending they were bombs, like dropping bombs from an airplane. This went on for a few minutes, and no one did anything about it. People just laughed, including the bus driver. I was sitting close to her and I could see it affected her, like she wanted to start crying, but she was holding it in. I wanted to do something. I wanted to stand up to the instigators and tell them to knock it off. I knew these guys; we all grew up together. I knew I should do something. But I didn't. My body - everything, was frozen. I did nothing.

Afterwords, I initially told myself that I wasn't one of the instigators, I didn't actively participate, so I shouldn't feel bad. But I quickly came to realize that was bullshiit. It actually made me feel worse. I just sat there. I knew it was wrong. But I did nothing.

I moved to California just a few weeks after this incident, so I don't know what ever happened to the girl. I hope she went on to live a happy, successful life. If so, it had nothing to do with me, because I was too weak to help her when she needed it.

Anyway, that realization - that I was a weak person, provoked a lot of self-reflection. It's one of my most vivid memories, and I hope it made me a better person. But, even if I did become a better person from it, it still haunts me that a poor girl had to suffer just so I could, maybe, become a better person.


I've been humbled many times, but often in the context where I do not have anything to lose.

When I was a musician, I'd met people that were infinitely more talented and hard-working than me. When I was in college, I'd met people that were just better than me in everything.

But I'd say that my first "real" humbling came when something critical I made at work stopped working. Suddenly I'm the one responsible for a xxx million dollar system not being operational, and all the people that are dependent on it.

Every time I see some major apps / sites being down, I get flashbacks, and feel the immense stress some people are going through.


Probably more social - seeing real deep poverty. Rattled me more than I care to admit


At provincial grade school, I was top of most classes with very little effort. It made me lazy. But in higher education I finally met people who were significantly more capable than me (at least in my chosen specialism). I had to raise my game, and it still wasn’t enough to be top again. In postgraduate study, I met one person who I swear had superhuman powers. I check in on him occasionally to see what he’s become president of.

Throughout my working career I’ve spotted this pattern time and time again: the jobs where everybody thinks you’re great are the ones where you’re learning the least.


"If you're the smartest person in the room, you're in the wrong room"

The problem is that it's not easy to assess the skills of others. Between impostor syndrome and the Dunning-Kruger effect, it takes a bit of training and knowledge of your environment to sort things out.


I am from South east asia, and the learning moment I got from a high-school kid who took the order at Chic-fil-A. He taught me that burgers and sandwiches are made of beef and chicken respectively.


I learned to lace my shoes correctly at 40+ thanks to a post on HN. I will search for the post tonight.


hahaha me too ! IIRC it was from some kind of "Show HN: What can I learn in 5min" And for the knot, it was maybe https://www.fieggen.com/shoelace/ianknot.htm but not sure.


Fellow late granny knot lover, I see...

I got some remarks when I was young that I am tying shoe laces wrong. Never cared about that, but it turns out a lot of people do that incorrectly and not for the reason I was laughed at.

My shoes don't get untied anymore.


Please post back.



I consider myself fairly literate and a decent communicator.

Until recently I pronounced ‘segue’ how it is spelled. No one ever corrected me.

I shudder to think about the meetings where I pronounced it incorrectly.


That is how it is spelt?!!

I had something similar: in front of quite a few people I said “albeit” but rather than pronouncing it “all be it” I said “al bite” as I had said it all my life. Mortifying


It took me until about my mid 20s to be confident of how to read it aloud whenever I saw it in print. I could use it and understand it verbally, but everytime I would see it written down it just never felt right for some reason.


This happens to people who read more than they talk. I never hold it against them.


Anytime someone mispronounces an obscure word, I actually tend to hold them in higher regard.

Because like you said - that means they spend more time learning than they do with their mouth open. That's a good thing.


I verbally pronounced epitome "ep-a-tome" for a long time because I had read it a billion times, understood usage and context, but never put together "e-pit-a-me" is spelled epitome.


Mine was 'bourgeois' (amongst many others, but that one stands out).


> I only recently learned how to correctly raise and lower window blinds--I had been doing it wrong my entire life.

I am curious now. How did you do it wrong, and how is it done correctly?


The first day I joined a martial arts class was very humbling. I was asked to to spar with a senior. For a good 15 minutes I tried to hit him. I mean I really tried, and to no avail. I distinctly remember thinking how easy it would be to punch the senior, and could not understand why I could not hit him. Between that and doing pushups until failure. I really did not want to go back. I did, and stuck with it, but that really was a reality check for me.


It's a longer story, but the gist is that one night I got a call saying some code I'd written wasn’t working properly, and they wanted me to come and fix it. When I tried to refuse, I was told they would send someone to break down my door and drag me, kicking and screaming, to fix it. The threat was very real. This was an important lesson for me: you should always be ready to take responsibility for what you write.


I guess I'm interested in hearing why you think your employer would actually break your door and drag you to fix a bug. Was it a mafia organisation or something?


It was in the nineties, shortly after the fall of the Soviet Union, and there was a fair amount of lawlessness. Many shops had their own security, often from criminal organizations. The shop I wrote accounting software for had such goons on the payroll.


I went from helping build the community at deviantart to building a film company that won emmys to helping build digitalocean and somewhere along the way became a practicing alcoholic. I then proceeded to: have my fiancée leave me because I was an insufferable human, lose my startup because I was an incompetent human, and lose my health because I was an out of control human, in the span of 3/4 months.

That was very humbling. So was getting sober.

I used to believe I was a very very smart guy, now I'm content knowing I'm comfortably average!! :D


Moving to China and learning Mandarin. Trying to express myself in a foreign language has easily been the most intellectually humbling experience of my life.


at my second job when mobile development was getting popular, there was this engineer who wanted to switch to mobile development and I have been asked to help him during this transition period. as i was the only engineer with mobile expertise I was actually smug about it and I considered myself a superior to this older engineer who had tons of experience building websites but is new to mobile development.

anyways two days or so after onboarding him to mobile, he called me at his desk and asked me why the app wasn't running on his machine/phone. after looking at the error message i told him to change the path to certain settings to match his username/computer name. those were hardcoded to my computer/username. he breathed a sigh of relief after fixing it and told me about environment variables (how you can dynamically get the username so it's not tied to me), the engineer who was sitting next to him who heard the whole conversation laughed at my face. this guy was more mature about it and helped me understand it.


In the early 90's I was visiting an industrial plant that had, in one building, a giant dehumidifier that was necessary for their process. My field work took me to the roof of that building. Unrelated to what I was working on, I saw an air conditioner on the roof whose condensate line had become disconnected. Instead of the condensate flowing through a PVC pipe and into a drain at the edge of the building, the condensate was pooling on the roof in a broad shallow pond. Being a good guy, I tapped the PVC pipe back together the get the water flowing like it should have been.

The next morning I went back into the dehumidifier building and saw that it was raining inside the building. People were moving around in a very agitated state. In a panic, I ran up the stairs to the roof and kicked apart the PVC pipe that I had joined the day before. Water began to stream out, but I got away from there fast and went back downstairs. A few minutes later, a member of the maintenance crew came in. He looked at the rain and immediately dashed upstairs.

He came down a minute later shaking his head. I didn't confess. I only hope that they didn't have enormously expensive damage, but I don't really know. One thing is for sure. I am very cautious about volunteering to help out without first checking with the plant personnel.


Interviewed for a dream job (British Antarctic Survey) in 1982. Failed a 20 line "write pythagoras in Fortran or Pascal" test in front of the selection committee.

I was deeply unsettled by this. Made me realize that sometimes what the interviewer is doing, is making you wake up to your own lack of awareness. I must have been a complete prick in the interview. I shudder to think about it to this day.


Hitting a semester in college where I just couldn't keep up the way I was used to (A's and B's by default). It was the first time I had to manage my workload and purposefully do a worse job on things (so I had time for everything) to just get C's. It was definitely easier to learn those skills in college than in the workplace.


Relearning something I already knew because I forgot I already knew it.

Which you figure out just as the final lesson or exercise is drawing to a close :\

It doesn't bother me since I don't always hesitate to re-invent the wheel either, and when I do go forward I always come up with something in addition to the same old thing I was working on.

When life gives you lemons, make cheesecake.


I don't think this was dumb exactly, just naïve. I didn't know fireflies were real until my 20s. I thought they were just a made up thing in storybooks.

I was rooming with a girl I barely knew for the summer and was looking out the window while washing dishes. You know how fireflies tend to sync up? Suddenly I see hundreds of tiny yellow lights turn on and then off. On and then off.

I yelled for her to come in (at least to my credit I was more fascinated than afraid!), and she ended up dumbfounded that I had never seen fireflies before!


This is not really dumb, or naïve.

It's just not something you had any reason to encounter, and maybe you were off sick if it was mentioned in biology/science lessons.

Now consider it this way: the first time you experienced fireflies, you were an adult, and you could bring a fully adult, science-aware, sense of wonder to that experience.

I'd count it as a win.


I was thinking "naïve" in the sense of "just not knowing some normal things about the world." It's definitely my, "WAIT--fireflies are REAL??" reaction that makes me laugh after the fact.


A coworker similarly said "WAIT--reindeer are REAL??"

I'm thankful I had maturity to simply say "yes, they're in the deer family, native to Canada and Northern Europe".

They were from China where they probably rarely mention reindeer, and only in the context of Santa Claus.

It's no different from a Westerner rarely hearing about tanukis, and only in the context of trickster spirits in anime and Super Mario Bros 3. How are you supposed to know they're real?


> I'm thankful I had maturity to simply say "yes, they're in the deer family, native to Canada and Northern Europe".

Good for you!

Though I think we geeks are more inclined to understand when others have their "Sherlock Holmes didn't know the Earth revolves around the Sun" moments. :-)


Hey, you were one of the ten thousand that day https://imgs.xkcd.com/comics/ten_thousand.png !


Wife and I worked with a realtor that did an awful job. We did not read the contract carefully enough, and through some uncovered issue there was not a way we could terminate the agreement. They told us they would terminate for $2k for the work they had done up to that point.

I call this kind of money "tuition."


Learning the guitar.

I spend my professional life learning every day, and usually pick up technical subjects quickly.

The learning process for the guitar and music theory has shown me that you can't learn everything in the same way, different skills require different approaches to learning. Fascinating, frustrating, humbling experience.


Getting into Haskell because I was bored and assumed doing Haskell would be far more interesting. And that code would be much better written in Haskell, almost perfect because it is math based.

Haskell is amazingly interesting but very hard. There are few companies using it and the one that did in my city got taken over and usual management shenanigans. I didn’t get a job with them.

Haskell meet ups went over my head and I couldn’t keep up. Didn’t have the time to play catch up with the talented people in this scene.

Realized writing software is an artform, no language necessary makes it better and more fun. Appreciate the common languages more like C# Python and Go.

Haskell has great ideas but there is value in designed language with language features over making everything in the higher type systems.

So in short humbled into realizing what makes good software is more than using clever languages.


Early 90s, I had to teach a class to psych undergrads, and I got neural networks. The book had already been decided: Rumelhart and Mclelland's PDP. There was software, we had a computer lab, everything was set.

For the first class, I had prepared a bit of an overview, starting with the perceptron, and then showed Minksy and Papert's proof that it could only learn a linearly separable membership function. So I had these formulas on the blackboard, ending with something like "for every delta > 0 there's an epsilon such that ..." etc. Then before the break, I ask if anybody has questions. One person raises their hand and says: What's a vector?

That was a bit of shock. I had completely not understood the knowledge level of my students. Not that I ever became a good teacher, but that was an eye-opener.


I've worked for some fairly large tech companies, building products customers more or less want. About 6 years ago, I convinced myself that I just need to build something, anything, and customers will come flowing in immediately.

So I scraped job boards and built my own that would "only" cost users $199 to post a job ad.

What I learned here is that your implementation is meaningless to the user if you're not delivering the value they came for. In this case, I wanted to take a technologically inferior product, make it extremely efficient, scalable and "blazing fast", and pocket pure profit from running a serverless job board (effectively free to run for the first million visits a month).

In total, the job board logged 761 sessions for 661 users in 2018.

One of many failures on my way to builing OnlineOrNot.


Watching a video of a chimpanzee eating a banana at the zoo a few years ago and I realized I was peeling bananas wrong my whole life. Would you have them open with a knife or a key on the stem side. It turns out there’s a better method. You just pinched the end and then peel it.


* I learned Scheme after Perl and JavaScript. I strongly advise that this is the wrong order. One should learn C (or C++, if you must), then an assembler, then a Lisp, then everything else. There’s no point trying to be prescriptive about the rest, but trust me on those three; however you got started - and I got started with BBC BASIC, Acorn BCPL, 6502, and Modula-2, if you can believe it - however it goes, make sure C, assembler and Lisps are in your toolbox, you acquire super powers of mechanical sympathy for the remainder of your career. NB: for the purposes of this recommendation, JavaScript is not a Lisp (Lou Reed once called it “Lisp in drag”)

* I kicked Bono in the shin at a Pearl Jam concert a couple of decades ago and never apologised. Still feel bad about it.


Do you think you'd still be thinking about it if it wasn't Bono?


Sure. Nothing special about Bono in this regard, except that having a unique global identifier makes him easy to reference.


I was at the climbing gym this one time, working on a route. There were two copies of it side-by-side, as though for a race – ooh, fun! By this point I'd been climbing occasionally for about a decade and considered myself a beginner plus. I was never very good, being both overweight and lacking strength, but I did spend dozens of hours practicing.

My first time trying this route, I got halfway up but missed a jump. After a few more tries, I got past that part but got stuck further up, not having enough skill and strength to finish. Each attempt took me probably 5-7 minutes, and altogether I was on that route for about half an hour.

Then this thirteen year-old girl walked up and tied in next to me. She surveyed the route and checked her harness. Then, in one practiced motion, she leapt off the ground, reached for a hold above her head with one hand, and slapped the route timer start button with the other. I didn't even know there was a timer, so I was watching it curiously. It stopped at 8 second something. I was confused. I looked up, but she was already being lowered. I wondered to myself, wait, did she get pulled up by the auto-belay...? How does that work...?

Then she did it again. This time I watched. She flew up the course, jumping from hold to hold faster than I could even think, and beat her previous time by a few tenths of a second. It was like this video (https://www.youtube.com/watch?v=ktxxI_IPXjA) (that's not her, but similar route... maybe even the same route? not sure if it's a standard).

Despite a decade of climbing (mix of gym and outdoors, usually in small towns), it was my first time seeing a speed climber. I didn't even know that was a thing. Moreover, I didn't know the human body could even move that fast. Granted, I was never very fit, but I don't think I realized until that moment just how much fitter another person could actually be. In less than 10 seconds she easily finished what I couldn't do even in 400+ seconds – even though I'd been climbing longer than she'd been alive, lol.

It was humbling, astonishing, inspiring, and comedic to me all at once. It was very much one of those "wtf have I been doing with my whole life" moments. I'd always been the kind of person who was OK at a lot of things, never very good at any one thing, and to bear witness to such raw ability was... beautiful, if a bit discouraging, lol. I hope that by the time I die, I can become that good at SOMETHING in my life.


> I hope that by the time I die, I can become that good at SOMETHING in my life.

In my mid 30s now, i've transitioned to still having this goal, but instead of it being status or career or money or skill oriented, it's about how i interface with the world. my goal in life is to be kind to myself and others, to lessen suffering for myself and others, and to continuously work on my life in ways that help me attain this goal.

this works really well for me as someone with some historically pretty bad anxiety, self esteem, and ADHD issues. it doesn't require intense focus and study and sitting still for hours. it just requires being introspective, being willing to push through mental discomfort, and swallowing my ego. it also makes the world around me feel like a better place.

of course i'm not perfect at this - my biggest issue is still occasionally being less than perfectly kind when anonymously commenting on the internet sometimes. but i'm working on it :)


>I'd always been the kind of person who was OK at a lot of things, never very good at any one thing, and to bear witness to such raw ability was... beautiful, if a bit discouraging, lol. I hope that by the time I die, I can become that good at SOMETHING in my life.

I want to his this really hard. Being good at a lot of things, but not being the best at any one thing, is sort of a super power on its own.

I always say that I'm never THE expert at any one thing, but if you give me three days and an open internet connection, I can become AN expert at anything at all.

Learning is hard for a lot of people. If you excel at learning, that could be the thing that you're the best at. Never forget that.


That's a pretty interesting topic on its own, this idea that being a quick learner is itself a skill or talent (whether acquired or innate). Probably like many others on this forum, I'm generally considered to be pretty intelligent, and can quickly pick up new information without much effort.

However – I don't know if there's a term for this – but in my life, I've found that to be a double-edged sword. Some things that others struggle with (like mechanical, visual, or logical problem solving) are nearly effortless for me, where answers more or less just appear "intuitively". That works for simpler/shallower systems, but not "deeper" systems that can require years of learning and practice, like math. The double-edged part of it is that if it's not something I immediately grasp, I typically give up on it after a few days. Not really out of frustration, just losing interest and wanting to move onto something else. I guess I never needed to learn how to sit still and learn deeper topics (K-12 and college were always way too easy, full of a bunch of shallow topics that didn't require much thought).

That's even more the case when it involves physical skill too, not just intellectual, in things like rock climbing or playing an instrument or martial arts or mountain biking. Whatever kind of intelligence and learning ability I have in intellectual pursuits don't seem to translate over to mixed activities like that, and I learn those much slower than normal.

Not complaining or anything, just think it's interesting! I don't know whether that's because people are just different (and if they are, is it nature/nurture?), or maybe I have some undiagnosed ADD or whatever, lol.

I can become an expert beginner in anything in a few days/weeks at the most. Then it plateaus, and for the next decade I'll remain an expert beginner and never move past that, lol.


When it finally dawned on me that taking no risk is the biggest risk of all. I was "afraid" to get into the stock market when I started my career in 2009....I didn't change my tune until about 6 months ago. I missed out on life changing gains.


First use of cabergoline to treat a prolactinoma: what a small molecule can do to your thought patterns! Suddenly things like willpower or drive feel like it has more to do with your luck at getting the right brain chemistry than any personal effort.


Thank you for this comment. I also had a prolactinoma, but haven't been disciplined about taking my cabergoline .. been stuck in a rut as well. Now I'm motivated to get this sorted with my doctor finally.


It's a weirdly general answer, but I'd say it's when I not only can't replicate something in a field I consider myself good at, but have no absolutely no idea how it works in the first place.

Usually, that provides a nice reality check that no, I'm not anywhere near as good at this hobby/type of work that I thought I was, and a great incentive to learn more about what I'm missing there.

That's always the most humbling thing to me. That not only are there some things that I have no idea how to do, but that I literally don't know the thought process or reasoning behind how those things work in the first place.


Sooo many. I can't even pick one.

I'll pick the one that did the most damage.

We had a service window to do some sort of migration involving a DB, very late at night. I had been up all day working, short walk, dinner, then around 11pm this service window started.

My eyelids were heavy, I almost fell asleep in the video call. I should have admitted this, we could have re-scheduled.

I ended up doing a bash for loop that dropped every single table in a production database, and this data was sometimes queried by law enforcement so we had a legal requirement to keep it for 6 months.

We could restore a backup but there was data missing, so for 6 months we prayed no one would request the missing date ranges.


I joined a financial firm that was building a trading system. This was about 15 years ago. The volume was not small.

Their DB model was atrocious. I looked at their wide tables, with tons of columns, not one FK in sight. It was horrible and broke every single rule I've learned in DB design theory, and in practice. It was so bad that I was considering leaving.

Luckily I did not leave. With time, I learned how the system worked. I made assumptions about how they used the DB which were not correct. It was not really used as a relational database. It was used as a journal of transactions that served as a backup to a system that actually held everything in RAM. Everything worked beautifully together. The system was fast and robust.

I learned a lot at that job. Most importantly, I learned not to pass judgement too quickly.


I only learned to tie my shoes 18 months ago. All my life I’d been tying granny knots and wondering why I was always tying my shoes even with double knots.

Someone posted a page here on the topic, and it was a revelation. It still feels wrong to tie my shoes correctly with amount of muscle memory I have. and it’s extra embarrassing given that I spent a fair amount of mental effort on knots in my youth.

edit: https://www.fieggen.com/shoelace/grannyknot.htm


I thought I had great interviewing skills, but as I started applying for jobs with high standards I realised I've never actually developed those skills or tried to understand what kind of answers a serious employer is looking for. I've also never applied during a recession which skewed my experience.

The trigger for seeing that I don't have enough interviewing skills was during an interview, the interviewer replied to my answer with, "Okay, I guess that's one way to answer the question..."


Men's deodorant(maybe women's too?). I'd always pulled the tab with my teeth.

I came across a comment somewhere a few years back with someone complaining about those covers, and how they also use their teeth and hate how the taste gets in their mouth. I immediately felt vindicated in my complaints.

Someone replied something to the effect of "you know you're supposed to just spin the dial like normal, and it'll push the cover off by itself, right?"

I don't think I'd ever felt dumber in my life for not putting two and two together on a product I use daily...


This reminds me of my experience in developing "Felo Search", which was truly crazy. In the past year, I hardly dared to think about projects related to general search engines. Such experiences are common, just like when you achieve success in the field of technology, people will also encounter unfamiliar things or situations in life and learn new knowledge and skills from them.

This kind of experience can be seen as a part of growth, no matter how experienced we are in a certain field, we will always encounter new challenges that require learning, I wish you good luck!


The most humbling learning experience I have ever had was having a child.


I wss doing something in Excel and needed to aggregate some data. I figured there must be some aggregation function. I looked it up and, sure enough, I found DSUM() and DCOUNT().

I spent a few hours finishing my analysis, and then went to someone in the finance team to show them what I had discovered.

They noticed I had many many similar-looking aggregations in a grid, and asked "Why not just use a pivot table?".

My reply: "What's a pivot table?".

Also in the same job I learned the hard way why you should never use OFFSET() if INDEX() will do the job.


I have to go back to around 1992 or so for this one ... not that I don't have plenty of newer humbling learning moments, but this is the one I tend to think of as the most obvious "how did I do all of these things without knowing something so basic."

Background: I was in the 7th grade, hosting a BBS and wanted to simultaneously host two different BBSes behind the same modem (and both with a working FIDO feed). I can't remember specifically why, but it had something to do with how one of the two BBS systems detected if it should ingest messages or if it should return a user session. I believe I was handling that detection manually but still had to have the BBS setup in such a way that it would look for a specific exit code from FIDO and if it saw "0" (which was what it always saw in this configuration), it never provided a user session in response.

Let's start with the first problem. I had a non-working understanding of what an exit code actually was. This was all-together weird. I'm in 7th grade, but I'm taking AP Computer Science at the High School. I mean, I think by then I could actually make Wing Commander start or some equally heroic juggling of HIMEM statements with the various TSRs. I was writing actual software in Borland Turbo Pascal 4, compiled to an executable file, every one of which returned an exit code. I'm fairly certain the last statement of many of my programs was something along the lines of "RETURN 0;" if memory serves. I had even processed command-line arguments at this point!

In what easily made me look like the 7th-grader that I was, I called another programmer I had met on a local BBS (after 10:00 PM, no internet, long distance was expensive) who was writing a BBS application in "C" ... and asked him if he had any time that week to write me a quick program which took, as a parameter, any number 0-255 and exited with that exit code. You can't imagine how thankful I was when he was uploading the program to my second node before we had finished talking.

You can't imagine how stupid I felt when I found the seven hundred other ways this could be done, including with a BATCH file, that I had just never had any real reason, up to that point, to properly connect with the words "exit code" (it was an ERRORLEVEL, you could set it directly (?) in DOS).


>I only recently learned how to correctly raise and lower window blinds

I don't think anyone should be expected to intuitively understand engineering inventions. Double so, since they are covered with pretty plastic trim that hides the insides.

Most humbling learning moment: Read some books, science and philosophy, figured out a bunch of beliefs I had were probably wrong. Then I did a real world check, found out my original beliefs WERE wrong. Now I'm a realist.


Several in my professional life.

I've had my code go into production only to cause big issues, I've severely over-engineered a couple things and have had to redo them totally, I've fucked up a git- stash merge once or twice, and I really got too invested into the whole cloud native thing with creating kubernetes sidecars and the like.

The lesson has generally been to keep things simple, and not try and seek some sort of perfect abstraction or fad library of the times.


I did a phone interview with Christopher Poole of 4chan fame (moot) when I was a fairly mid-level engineer. This was for his startup, Canvas. One of the interview questions was to explain every detail of what happens after entering an address into your browser and hitting "go". I completely stumbled through my response and was humbled on that phone call. He was polite, but at the same time made me feel like an absolute idiot.


Wait. Did moot start Canvas, the educational platform that many, many, many universities use? That Canvas?

That's absolutely hilarious to me. I did not know that.


no this was different, it went defunct 10 years ago https://en.wikipedia.org/wiki/Canvas_Networks


Oooooh okay. That makes way more sense. Thank you.


I was explaining to a coworker that my Contigo brand coffee travel mug was a great mug except that it was just impossible to clean properly. I explained to him that as a result, I had forcefully removed the guts to my mug lid.

In the midst of explaining this, I showed him which mug it was on the manufacturers website (we were remote- this was all via Slack) and as I did so, I saw the animation that explains how to disassemble it for cleaning.

oof.


Not my own story, but my mother's, told to me on the occasion of my 50th birthday ...

My parents met in their early 20s through another couple, Des (flatmate of my father's) and Mary (schoolmate of my mother's). Des had a sore hip, and Mary's mother was a "bonesetter" (a kind of folk healer) so came to the men's flat to see him. "Seeing him" involved Des getting some kind of vigorous massage in the bedroom, and then being slathered with red ointment, while my mother and Mary sat in the other room listening to him moan in pain

When the ordeal was over my mother, making conversation, asked Mary's mother what was in the ointment. One of the ingredients mentioned was "dragon's blood"

My mother went home to the apartment she shared with some of her siblings, and related the story to them. "Dragon's blood??" said her brother

... "and that", says my mother, "was when I found out that dragons don't exist"


> Dragon’s blood is a plant resin that may help with a variety of health concerns, including skin ulcers and diarrhea.

> Dragon’s blood is a natural plant resin. It’s dark red in color, which is part of what gives dragon’s blood its name.

> The resin is extracted from many different tropical tree species commonly called dragon trees. These may come from the plant groups Croton, Pterocarpus, Daemonorops, or Dracaena.

> The plant resin has been used for thousands of years for distinct purposes. There are records of its use among the ancient Greeks and Romans and in India, China, and the Middle East.

- https://www.healthline.com/health/dragons-blood


What if she had said mandrake?


Using Unix (AIX) AWK and ksh scripts I had written to process a ton of source code to simplify the code. Only I used pipes. And large files were writing back to themselves while the head was still being read. End result was quite a lot of the larger programs were mangled. Had to restore from backup and some of my best teamies lost 2 weeks of work. And I looked like an idiot for not understanding pipes.


Yet I ask sysadmins today if they would be okay if installing more modern shells on production machines so programmers can deploy scripts using them, and they say no.


Saving money for a govt department that produced books used in navigation.

I offered to do it in Postscript to save a lot of money in typesetting costs.

Result looked fantastic; off to the printers it went.

Few weeks later, a customer noticed that an entry in August was incorrect. The entire run had to be pulped and re-run using the usual printers services.

Good thing someone checked; the wrong information could have had dire consequences.


I didn't learn to type properly until I was in grad school in my 40s, though I had been a data person and did some web programming for years. Also I got through 3+ decades of being a gigging musician who recorded and did live sound before I learned another truly transformative skill - how to coil cables so they won't knot, and are easy to uncoil.


I thought I could pass the OSCP with only two weeks of study. I could not. I abandoned it for over a year, and took my time (almost 90 days) practicing and doing every lab/challenge, then I passed it and did quite good on it. But that's not all, it turns out the OSCP is pretty entry-level and I had only barely just began my journey :)


If you haven't had a 'humbling' moment, I recommend you read about Euler. He really was the master of us all :)


Always something new... this week its some *nix commands

cat backwards (tac) will display the file in reverse order :)

chown username: with the colon and the group name blank will set the permission to the user's default group.. very useful when you blend windows groups with spaces into an environment and it becomes a pain in the ass to put return characters in


At one time in my life I thought myself crazy by overthinking mathematics, and I began to hallucinate and hear voices and see huge wars happening in front of my eyes off in the distance, it all added up to a delusion Earth was in Hell. (as an atheist/agnostic it pains me to write that) In my insanity I did things I hate having done and wound up in jail. While I was in jail, I wished I had known to ignore the voices and visions, to do nothing, say nothing, just think about it and think about it, and be a “normie.”

The trigger for all of it had something to do with thinking about the opposite word to each word in a sentence. After tinkering with that for a while, my brain started to automatically invert the incoming words. Someone would say, “Good Morning” and my mind would translate it into “Bad Evening” as if everyone was saying the complement of what they actually said. Needless to say, that was a big factor in me believing the whole world had been sucked into Hell. I thought I was being mind controlled.

Another big aspect of it was this idea everything was connected to everything else. Which isn’t necessarily wrong, but in the context of thinking you’re in hell, that turns everything guilty by association in a sense.

I know it was all a delusion, and it was such a complete nightmare and made me the opposite of how I think of myself, not as an intelligent citizen who loves life and STEM, but as a psycho locked naked in solitary for months who thought everyone else was possessed.

Probably wrecked my life, but at least I’m out now and sane and able to enjoy life with family and friends again.

If you or someone you know goes “crazy,” a plan in place in advance could save you/them, because the system is often too slow to help you if you wait until you have a problem, or because you won’t trust the system when you’re crazy, because you think it’s bad somehow when you’re in that mind state.

Thus, my most hard-earned learning is to never take your own mental health and sanity for granted, and have a mental health plan for if you do experience psychosis. Never let insanity drive you to do anything you’ll regret.


I recently got into the trades and every single day is a humbling experience, seeing what my coworkers can do first hand is astounding I feel like a baby in terms of ability and using tools is awkward, diagnosing vehicles properly is very difficult, the whole experience is such a grinding humbling mess.


In my first digital design class, my physics professor (who I took 6 classes with and respect very much) took a look at my breadboard computer with no consistent color coding for groups of wires and overall bad layout. He said it was bad and that I should start over from scratch in front of the whole class.


Before I understood recursion, to solve Hanoi towers I looked back at the earlier positions of the output buffer


When I started programming, I looked for a job, and the interviewer asked me which design patterns I knew. I immediately replied that I did programming, not design. I then quickly realized how much I had to learn, and my potential knowledge expanded like the Big Bang.

The more you learn, the less you know.


First encounter with Monty Hall problem. My roommate in college told me about it, and I was absolutely unable to see how it could be anything other than a 50/50 chance for the remaining two doors.

It took me actually drawing out a grid of the possible scenarios to see and accept that he was correct.


I recently started building VR apps for VR headsets with Kotlin/Android after five years as a front-end/full-stack engineer. It has been humbling and scary, but I'm learning and loving it. The switch was motivated by several reasons typical to FAANG companies.


Falling out of favor with ceo/cofounders/ex. Those moments were a punch to the face.


I'm dealing with this right now. New institutional leadership at the most executive level. This person believes

a) if you're not moving up you should be moved out;

b) there is zero value in the historical operations of any department; and

c) the only way to tell if someone is a good employee is whether or not his gut tells him he likes them.

These are three things I disagree with vehemently. He has no use for me.

It has been difficult, to say the least, to work with this person. If it weren't for the layers between he and I, he would've fired me by now.

This is a place I have never been. Ever. And it's massively frustrating. No amount of ability or intelligence can overcome this man's gut instinct. And he's in charge now.

I have zero idea what to do here. I have never worked with someone who so explicitly wants his employees to kiss his ass (HR literally said to kiss his ass when I went to them for guidance on how to improve myself to fix this situation).


I don’t have advice for you, as I am just as bad at kissing ass. Maybe try to elevate your perceived image/worth by liking what he likes outside of work: trying out a <sport> that he plays. Watching a <movie> that he likes. Wearing the same shoe <brand>. That stuff might be easier to do yet might buy some credit.


I've had a full-time job as a Software Engineer (later Data Engineer / Data Science), since I was 23 years old. I've done all sorts of programming, worked in academia, done my own startup (Scalien), worked at medium-sized successful SaaS (Prezi). At Prezi, I was promoted to a Director. I thought I'm the shit.

Then, at age 36, I got a job at Facebook [as in IC]. The first couple of months were the most humbling time in my working life. Before, I always felt I'm in the upper percentiles of whatever group I was part of it. At Facebook, I never felt like that --- I felt like I'm the median. Any problem I've seen in my previous jobs (how to manage large code bases, how to write good code, what does a good ETL system look like, how to be data-driven), I realized that I was at "version 3.0" of that space, but Facebook was on "version 15.0". Whatever I knew to be the best approach, it was evident that the 1000s of smart people who work(ed) there, were well past that stage, they passed that stage 5+ years ago.

Ever since then I always recommend people to interview for Big Tech companies if they get a chance, and do a stint. There's so much to learn from the collective wisdom that 1000s of engineers (and PMs and DSs and..) have accumulated.


Years ago when I was around 12 or so, I learned that people were not great at finding things on the internet and would buy whatever in their top couple results in a search engine.

I also learned about the buyer address for billing and delivery address feature for shipping things now known as drop shipping or re-selling.

I needed a computer so I sold quite a few hard drives and CPUs using eBay and supplies through another companies website. Once I received the money, I then purchased the item with my debit card I was given for “learning a checking/savings account”. I made enough for a computer and stopped. The humbling moment was a few years later when I realized I should have made that into a business. All of it was pre-internet taxation days too.


Here's a recent X post I wrote entitled "What I learned about startup founders from being the worst pilot in the AirWing."

At the age of 25, I was sent straight from my F/A-18 training squadron to a forward deployed squadron aboard the USS Nimitz.

The fastest way to build a reputation as the New Guy is safe and predictable carrier landings. The fastest way to be put on notice is to suck behind the boat.

Within 2 weeks, I was solidly in the latter category. I struggled deeply, especially with night landings.

At first, I kept catching the “one-wire,” meaning I was too low when crossing the back of the ship.

Then, in later flights, to compensate, I started “boltering” a lot – meaning I’d put on too much power at the end, fly too high, and miss all the wires completely. Then I’d have to circle around for another attempt.

There was one night where I went around 5 times before finally catching a wire and landing. I expended so much fuel in doing so I had to hit the airborne tanker to refuel about halfway through.

I was ranked 98 out of 99 pilots in the AirWing after my first six weeks.

I was on notice. Whenever I came in to land, all the senior aviators aboard the ship nervously watched to see what would happen.

Then the bottom fell out. One night I landed the first time – but caught another one-wire. Over the common carrier frequency came the Voice of God. This was incredibly rare – the carrier CO never interrupted carrier ops.

“Son, I can’t have you landing like that aboard my ship.”

I was petrified – and what little confidence I had was destroyed. As I taxied off the landing area and was waiting for the plane to be chained to the deck, in the pitch black, I let my guard down and accidentally released the brakes. I almost ran over the plane captain – and was only saved because my back-seater screamed “brakes!” to me.

When I returned to the ready room, I got reamed out by my squadron CO. I was benched.

Those were the two longest days of my Navy career. I didn’t know if I would cut it. I saw no way out.

Then the skipper sent me back up. I was terrified – but he knew the only way to get confidence back was to Do the Hard Thing.

Again and again. And again.

Eventually, I figured it out. I was never better than middle of the pack in landing grades – but I was safe and predictable. I also found other areas to excel in, like air-to-air tactics.

This dark period in my life gave me a deep understanding of grit and resilience.

In conversations with founders, I now know what to look for in how people respond to challenging situations. How one responds in dark moments – and which people believed in them enough to give them another shot.

I also now have a desire to seek out the hard moments to walk beside high potential folks who hit the inevitable roadblocks in life.

It’s in the those moments where thought partnership matters most – and where being there matters most.

Do Hard Things. Keep moving forward.

You will figure this out.


cd / (intending to cd ~)

rm -rf *

Yep; I actually did it. By mistake, as a junior in a CS research lab.


Honestly, it happens regularly in jiu-jitsu (and is one of the reasons I love the sport). I've been training for a number of years, and while I lose to higher belts I typically know what happened. Occasionally I get to roll with people who are world class level (another cool thing about the sport), and they make me feel like it's day 1 all over again. Then they'll give me a few pointers that look completely innocuous and it'll change my entire game.


My oldest needed a self-esteem boost due to some bullying issues when he was 8, so we enrolled him in Jiu Jitsu. We figured it would be a good outlet - away from anyone that he knows, would keep him active, and would teach him to defend himself. He loves it entirely, but is just okay (he's pretty small and still pretty timid).

I'm waiting until he turns 16, and in the adult class himself, to start jiu jitsu at the same gym. It will line up nicely for where I am in life now and where I will be then. He is desperate for me to do the classes with him.

I am not excited to get DESTROYED by my child in the first class.


That's awesome. When I roll with kids I'm always amazed how quickly they learn. Kids and many women also have a unique advantage that their forearms are basically just the bone and make for a pretty great choking tool lol...

It's really great to see adults and their kids at the gym, especially when I've watched them grow up over the years. Only suggestion I would make is for you to start training now. Even if it's just a couple of times/week, 8 years is a lot of training time. My only regret with jits is I didn't start training sooner.

If you have room, you can also buy some mats for the house and practice 1:1 with your kid.


When I started my own startup, my role shifted from a front-end developer to a founder. I needed to pay attention to everything, not just how to abstract components.


My company started making absolutely perplexing decisions. We were bifurcating everything, in a way that seemed like was set to double our workload for a lot of things.

It was under the guise of "being more efficient by having fully independently operating departments." I was pretty vocally opposed to the whole thing, complaining to anyone who would listen, right up until it came out that our department had been sold to another company.

They'd been basically duplicating us so they could sell us without interruption.

It's now many years later and I am frankly still embarrassed by what a fuss I made over something when I didn't actually understand what was happening. I really wish one of the higher ups I'd complained to would have just taken me aside and said "there's something going on, it'll make sense when it's done" or something but I understand that they probably couldn't.

I learned that when what your company is doing makes zero sense, there's probably something going on below the surface other than multiple levels of questionable decisions. This has since proven true more than a few times, and I am far less reactionary and far more suspicious.


This is true. But keep in mind that they wouldn't tell you anyways, pretty much no matter what you did, you were simply not in the "club".


Page. 57 in Real Analysis, definition of a limit...

First time in my life that I did not understand something on the spot (actually took me a few months to (REALLY) understand it).


my ego is pretty detached from the reasoning and learning side of the house. for the ego i start with first principles, where i put myself pretty squarely in the blithering idiot column.

when it comes to reasoning and learning, when i'm wrong it tends to be kind of a weirdly joyful moment, maybe to be able to think of the growth from when i was young and less excited to make mistakes.


Had an employee poach on of my customers. And had another do the same ten years later.

I apparently have trouble learning life lessons.


Two over 10 years doesn't seem like that much, but I guess even one is too many. What do you see as your life lesson here though?


Sorry for the delay:

In both time I knew it was happening, but I was too busy to fix it.

It almost happened again - I pulled the employee off the job, made him document everything, and put a team of people back in. He was banned from the job.

Kept both him and the customer.


I just learned that Wolfenstein 3D is actually (wait for it) the third game in the franchise. Nothing gets by me!


i'm always getting humbled, but most recently, i read the intro to an important academic book in the field that i studied in undergrad and i realized that didn't know much in the field, and don't fully understand the book's argument.

or whenever i plant trees or vegetables and they die or get a pest.


maybe related, but everything I do for the first time, I will do incorrectly at least in part. Even down to things like opening a new type of jar, taking public transit in a new city, making a big purchase, etc. I don't know if it's just me, or says something about my intelligence or not.


> I only recently learned how to correctly raise and lower window blinds

So, how do you do it correctly?


Idk what my most humbling moment would be, but there's been a few.

I've spent the majority of my career looking for wook rather than doing work, and have lost at least 7 jobs in the first 12 years for one reason or another. This is going on the 3rd time I've spent more than a year without working at all in any job. It never gets easier, and each time I get to spend a ton of time reflecting on how things went and what I'm actually good at. It's usually humbling, because so far the list of things I'm good at professionally has only dwindled. Another humbling aspect to this is realizing that most other people don't lose their jobs... like ever, unless it's seasonal or severe economic downturn.

During one of those periods I spent so long unemployed that I literally ran out of money and moved into a car from my relatively nice apartment, and then worked at Starbucks as a barista, which taught me that I can be good enough at speaking with customers, but what I thought were trivial tasks turned out to be almost laughably untenable, like remembering how much syrup goes in Karen's caramel macchiato, or just showing up on time.


I think you need to try working in tiny startups, if any of your skills would make that work. There, gaps in resumes and random ends to employment are expected. Nobody asks about mine, and I end up taking a full year off every 4-5 years whether I want to or not (but I usually do want to).

No, my normie friends don't get it at all, and everyone ALWAYS asks me "how the job search is going" even when I've told them every week for 6 months that I'm not trying to get a job, but trying to hold myself to their norms