A thread on HN about bad code in legacy projects both makes me think how little we've learned as a discipline over the years and, honestly, how little credit we give ourselves for some pretty major

Fun going down this list and thinking: "Hmm, plausible at a well-run modern software shop", "Hmm, possible, but requires implausible tradeoffs", "Literally disallowed by languages", and "If you were to attempt doing that our test suite wouldn't let you merge."
I think we as an industry celebrate (not quite the right word) failure too much and don't celebrate success nearly enough. There is no DailyWTF for competent execution, word of which generally stays pretty local to the source while incompetence passes into legend.
Alrighty let me try to thread the needle on being the change I want to see in the world while not giving away anything that will get me in trouble:
Ruby has wonderful developer ergonomics. Typed languages are easier for machines to guarantee the correctness of. We built a type checker for Ruby (and I believe it is slated for OSS release sometime).

c.f. https://t.co/S5XIDxFUrH
We have an infrastructure at work which allows one to specify an invariant about not just code but e.g. objects or the environment and then have a range of response options if that invariant changes.

(Parallel evolution of code: I wrote a less-well-specified one at last gig.)
Git, continuous integration, and workflow-driven mandatory code reviews are all younger that the Joel Test, at least insofar as them being common features of median-sophistication engineering shops.
It is not astonishing to start a new engineering job in 2018 and have a developer environment which reasonably approximates the production environment available on one's laptop or tested, repeatable ways to spin up and spin down a new server w/o "build it by hand."
It is highly likely that a service which is hard down learns of that fact faster than Twitter can apprise them of it, assuming that service is operated in a professional fashion.

At risk of stating the obvious: this is a relatively novel development.
The industry has decisively adopted:

* a single, common encoding for almost all human languages
* a single, parseable, human-readable data interchange format
* a default protocol for information transport
You can round to "Any new application talking to any application written by a competent team in last 10 years will be talking to it over an encrypted link which neither side had to think deeply about because the technology is reliable, ubiquitous, and uncontroversially legal."
While it's not literally the case that you could replicate an entire modern software company's deployment for zero dollars in software licenses, that can almost round to true, due to the pervasive use of OSS.

This is very good for learners.
You can get a full development environment capable of doing Hello World spun up in your well-supported language of choice in, almost certainly, less than ten minutes of effort (contingent on you using a Mac, sadly).
The majority case for libraries, APIs, and file formats of interest to you will overwhelmingly be "If you Google the thing you want you get exactly what you need very, very quickly."

Most Liked Replies

Jeff ♨️ Darcy:
The recurring theme I saw in that thread was projects that didn't apply even the knowledge or discipline *that was common at the time*.
🦃protected concerted activity enthusiast🦃:
I'd push back a bit. I think what SRE (especially ours, but at other companies who've adopted the approach as well) has accomplished in creating solid, consistent, reliable services gets a lot of credit in the infra-oriented world.
Kelvin Nishikawa:
unicode, json, https?
Kautilya Tripathi:
Kamil Choudhury:
All I'm getting from that thread is that mission trumps technical purity every single time.

Food for thought.
Wilfred Hughes:
I've heard a number of folks discuss Ruby's ergonomics in glowing terms, but I've written very little myself.

What parts of Ruby make you say that? Syntax/tooling/gems/docs/irb/debuggers or something else?
Jerome Leclanche:
Agreed. I'd love to see more post-mortems for successful spike days for example. @gamasutra sometimes publishes successful game launch post-mortems which I think is really cool.
Gordon Shephard:
K8s and snapshots change a lot - at my gig, a developer on their first day can do a *full* clone of the production environment (90 seconds) inc *the data*, modify, check in, deploy, add test cases to the CI/CD environment, create a PR, and see their changes in production. Day 1.
Sven Slootweg:
Related somewhat-controversial point: successful systems are rarely contributed to the public domain and instead they're kept proprietary, so everybody's stuck reinventing the same things, most of them poorly.

Success *stories* aren't enough. It needs to be replicable.
Ari Flinkman:
One thing I've seen time and time again is how lack of respect for the legacy system can lead to almost existential crises when transitioning to a replacement.

After all, usually it's legacy only because it has been valuable for a long time.

You May Also Like

And here they are...


Remember, this money is just fun. If you launched a product (or even attempted a launch) - you did something worth MUCH more than $1,000.


The winners 👇


Lattes For Change - Skip a latte and save a life.


@frantzfries built a platform where you can see how skipping your morning latte could do for the world.

A great product for a great cause.

Congrats Chris on winning $250!


Instaland - Create amazing landing pages for your followers.


A team project! @bpmct and @BaileyPumfleet built a tool for social media influencers to create simple "swipe up" landing pages for followers.

Really impressive for 24 hours. Congrats!


SayHenlo - Chat without distractions


Built by @DaltonEdwards, it's a platform for combatting conversation overload. This product was also coded exclusively from an iPad 😲

Dalton is a beast. I'm so excited he placed in the top 10.


CoderStory - Learn to code from developers across the globe!


Built by @jesswallaceuk, the project is focused on highlighting the experience of developers and people learning to code.

I wish this existed when I learned to code! Congrats on $250!!

Original Tweet