12 ms·
Move Fast and Abandon Things
- pton_xd 2y agoPersonally I've learned (and earned) way more by shipping small things and THEN iterating on them. Or abandoning them.
- dietrichepp 2y agoI’ve been going back and working on retro development. These days, making software for the 68K Macintosh, which is where I learned to program in the first place. I dug a lot through old books, comp.sys.mac.programmer posts, and the source code from Soft Dorothy and others (like the GliderPro source). It’s a trip seeing this old code through new eyes. I can see why the old Macs crashed so much (beyond the basic “they had no memory protection” explanation). I’m also fond of the 1-bit art, like the author mentions, and I curate a list of accounts on Twitter which post 1-but artwork (if you know anybody who’s missing from the list, let me know): https://twitter.com/i/lists/1578111923324944397 https://twitter.com/i/lists/1578111923324944397 The nice thing about programming for a limited system is that it limits your options. It’s a nice break from the more modern experience where you can do anything by pulling in the right library. I sometimes imagine a world where computational power is frozen, and we simple get better and better software for systems that are well-understood. The thing about these old systems like the Mac 68K machines is that the pace of hardware development was so fast it made you dizzy. If a new processor came out like the 68020 or 80386, then you had maybe a couple years at most to make something that really used it to its full potential. If you waited too long, you’d be competing against a new generation of software written for a new generation of hardware.
- JKCalhoun 2y agoGoing back and looking at my code — with over 30 years of hindsight — I want to refactor it, simplify the common crap you had to do like responding to window events, etc.... Never mind making wrapper functions for dealing with Handles and such. To your point though, wow, how much simpler the Toolbox was compared to a modern OS. It does indeed feel fun to try some retro development again.
- msephton 2y agoI do 1-bit art for a limited platform (Playdate, so not quite Macintosh Plus limited) I'm @gingerbeardman on Twitter. Examples: https://blog.gingerbeardman.com/2024/07/14/shibuya-pixel-art-contest-2024/ https://blog.gingerbeardman.com/2024/07/14/shibuya-pixel-art...
- jbaber 2y agoI love 1-bit art because of all those dithered images on a 68k mac. I even dither some photos I have for computer wallpapers. Thank you for the list.
- jujube3 2y agoThe new Google motto?
- pphysch 2y agoSure, why not. It's a good approach for innovation.
- mynameyeff 2y agoDad??
- tkiolp4 2y agoMany companies I have worked for operate like this. Engineers get to work on shiny new features, they get released, everyone is happy. Months later tons of bugs accumulate. The original authors are already part of another team (because “breaking silos”, but actually because “make everyone replaceable”). The engineers that inherit the project need to maintain it and fix the bugs until another team takes over. It’s awful.
- anon7725 2y agoI drew a comparison between “iterate and fail fast” vs “lots of upfront design” as a personal process, rather than a company’s modus operandi. For instance someone might do 2 or 3 prototypes when tasked with delivering a certain feature in order to explore the problem space.
- trentnix 2y agoSuch is the hellscape we’ve brought on ourselves from the widespread adoption of “minimum viable product” as the right way to build things. We judge viability by some feature set, not whether the stupid thing is resilient or can be maintained. It also doesn’t help that “minimum viable” is only one step away from “non-viable”. Every project then becomes like Icarus, testing how close to the sun we can fly before our wings melt.
- sweezyjeezy 2y agoBut what's the alternative here? "We spent longer than was minimally viable but we still don't have a good idea if it has market fit"-product? In my experience the code usually gets binned whether the idea gets traction or not. Some companies misjudge when to rewrite, but that doesn't make the MVP part of the process wrong. The absolute greatest wastes of talent and humanity I've ever seen in tech didn't come from tech debt, those efforts were almost always at least working on a product that people were paying money for. The biggest wastes were from over-delivering products that hadn't and were never going to succeed.
- trentnix 2y ago
- munificent 2y agoJohn, your games were an inspiration to me when I was a kid first learning my way around programming on the Mac. I spent a lot of time playing Glider and even more playing Pararena. I still have the echo-y startup sample of that lodged in my head. I probably spent even more time poking around in the resource forks of your games in ResEdit. I didn't finish much, but I did complete a couple of little shareware games and uploaded them to AOL. I was beyond surprised when a check from far away California appeared in my mailbox many months later. Those early Mac days really did feel like a special time where anything was possible a solo developer could make a thing and put it out into the world without needing more than creativity and time. Thank you for writing these posts and sending me down memory lane. I hope you're enjoying your retirement.
- JKCalhoun 2y agoMaybe you read some of the other posts of mine (or the README's for the disk image repos). It was a special time. Was it special because it was all new to us as early computer-users, early developers? Or was there something different in the air back then.... I'm glad you liked the little games I wrote. Was it the check from California that pushed you into your current career (whatever that is)?
- munificent 2y agoI did end up being a game programmer at EA for eight years and still do software today. I'm not sure if the check from California sealed the deal, but it was definitely a memorable experience for me. It made me feel like the code I wrote was real in a way that it hadn't before.
- chr15m 2y agothis is the way
- screaminghawk 2y agoI love this but I approach it a bit differently. I don't think this is a good excuse to write bad or unmaintainable code. Sure some shortcuts are fine but it should be useful for the next person. Personally I try to use free hosting services so that I don't have to pay to keep it running when I abandon it. (That could be AWS free tier or blockchain or IPFS etc). Use a public repository so someone else can find it when it's inevitable dropped. I always make sure to have good documentation so that once it's found anyone can get it running.
- jongjong 2y agoWhen I read articles like this, I feel nostalgia and envy. Why was I not born 10 years earlier? I see other people in my industry who are 10 years older than me and they not only had a way more fulfilling career, they are much better off financially too. It's like everything fell on their lap.
- quasse 2y agoI don't think this is an unfair perspective. When I started programming professionally (post dotcom crash mid-2000s) you could really achieve results that were considered game-changing for businesses as a solo contributor writing all your own code from the ground up. The field as a whole had not been really mapped out all the way, so even someone of moderate intelligence like me could feel like they were creating new useful things (especially on the web). Modern software development frequently feels like gluing together towers of shit from other people's towers of shit. Additionally, the parts of the industry where the business case is "a computer could markedly improve this process and make people's lives so much easier" are pretty much saturated. The high paying career opportunities that are left generally seem to trend towards either value extraction or rent-seeking behavior.
- JKCalhoun 2y agoI actually agree completely with you — feel, frankly, like I retired at the right time in the arc of "programmer" as a career. At the same time I suspect that those that came before us are happy to have also had a career where they also wrote the firmware, OS, boot-loader — feel our generation had to build software on top of shitty OS dylibs, etc.
- JKCalhoun 2y agoWait ten years and see how you feel about these times — and how others, ten years younger, feel about you. I have always been envious of the kids that wrote the Apple II text adventures, envious of the Woz's that built 8-bit computers in a time when "anything goes". Financially, time addresses that. I had student debts, made only a little money for a while. But, over time, you pay down your debts, begin to put money away ... compound interest and all that. But on a more ... spiritual level ... I see now that in life I have, from time to time, come to crossroads where I could choose one path or another. If you have gained any wisdom up to that point in your life there is a good chance you will choose the path that will bring you closer to what it is you seek. If it is financial comfort you seek, you're going to find that you more often than not choose the path toward financial success. We only wish though that the spending money had come when we were younger.
- ang_cire 2y agoMove Fast and Abandon Things: The Google Story
- jakswa 2y agoThe car prototype reminded me of Spy Hunter graphics, but I couldn't remember that NES game's name at first. Sent me on a nice nostalgia dive!
- msephton 2y agoGreat to see this do numbers. I posted it last week but it didn't gain any traction
- mojuba 2y agoIf the goal of this article is to normalize abandoning your projects then I'm not so sure it's a good idea. All else aside it can be a horrendous waste of time and no amount of "at least I've learned something" can justify that. Learn by also finishing stuff, right?
- optymizer 2y agoI think it's healthy for projects to die. It frees up your time to start another project, instead of being stuck in a rut. I sometimes find myself working on a project that goes nowhere, thinking that if I just put enough effort it will go somewhere, and I'm not having any fun or learning new things. And I'm hard on myself with thoughts like "I need to finish it, I need to finish it" but then when I ask myself: 'why?', it's usually because of this fear of _not finishing the project_ or maybe it's the fear of not being able to distinguish the grinding phase from the failed project phase. Either way, too many times I have experienced a liberating feeling when I failed. It's a chance to start over.
- msephton 2y agoSurvival of the fittest, for sure!
- m463 2y agoMaybe take things as far as they should go, but no further. also: sunk cost fallacy
- yard2010 2y agoWhen working on a personal project, say for fun, what makes the difference between a time wasted and a time spent?
- Fellshard 2y agoThat is a misreading of the article. It's more about discovery through quick, iterative prototyping, which can include rapid discovery of fatal flaws early.
- meindnoch 2y ago[flagged]
- alex_suzuki 2y agoExcept for the moving fast part?
- deleted 2y ago[deleted]
- xiaoxiong 2y agoSome of the pixel art in those screenshots is seriously awesome!
- karaterobot 2y agoThat's a neat blog all around. Lots of interesting stuff to poke around in. I think it's okay to abandon things, and you can certainly learn things and reuse parts from abandoned projects. For me, a breakthrough moment was when I decided to make things so small that I could finish them. It helped me develop the skill of finishing things, which is a separate skill that's hard to learn, because it only happens at the end of a process so long and hard you almost never make it there. All my friends who are making video games start by writing their own engine, and get burnt out somewhere around the point where they're making a level editor. They learn a lot about things like tooling (which, coincidentally, is a lot like what they already knew how to do), but never actually make the game. It'd be like learning stone masonry by building a cathedral—you won't live to see the end. Start so small that you can't fail, then work your way up to bigger and bigger projects.
- chambers 2y ago> It helped me develop the skill of finishing things, which is a separate skill that's hard to learn, because it only happens at the end of a process so long and hard you almost never make it there. Great insight. The skill of finishing what you started, is something that feels elided in discussions around productivity. Is there a blogpost or article that explains it even more?
- eddd-ddde 2y agoI don't think I've ever finished a _single_ personal project. At least for me that's _the_ hardest skill to develop.
- EricE 2y agoLuckily this is also on the front page today: https://github.com/readme/guides/finish-your-projects https://github.com/readme/guides/finish-your-projects
- cezart 2y agoThank you for sharing this! I think a focus on shrinking personal projects to the point I might actually finish them, might be just what I need right now
- rurban 2y agoThat's exactly the playbook how they destroyed Perl6 then. They had the very same outspoken motto "Move fast and destroy things". They indeed do so very successfully, instead of fixing just the few outstanding bugs.
- adamc 2y agoI like this and find it interesting, but at an organizational level, it strikes me as trickier to do. A lot of the things we discover about projects and technologies have to do with its feasibility at whatever scale our real projects operate on, and don't necessarily pop-up in smaller experiments. (And sometimes they aren't really technical issues at all, but issues of "can we get most developers here to understand doing it this way.) None of which means we shouldn't do more of this. You can learn things by trying smaller projects. It's just not a guarantee it will work in the large.
- avg_dev 2y agothis seems like a fantastic way to look back on a career where the author started as a prolific solo developer and later became an effective, fast, and contributing part of an effective development team. it was also just really fun to read, about the code reuse, the scrapping of ideas, the rewrites, etc.
- specialist 2y agoYes and: Quote from another blog entry "In the end I think Apple got an engineer for the next twenty-five years that, though not the cleverest engineer, was one that worked quickly to prototype new ideas and took on some of the gruntwork that not every engineer wanted to work on." Some of us like doing the blue-collar parts. Plumbing, prototyping, fixing bugs, fit & finish, tackling tech debt. Alas, today's leetcode themed hazing rituals, err, interviewing filters out people like me, and presumably John Calhoun. I was fortunate to manage project and product teams with a mix of skills, temperments, experience. Pairing up doers with esthetes can work out great. In that "whole greater than the sum" sort of way. FWIW, most of the doers (I've managed or worked with) had no CS education and experience. Just an interest, curiousity in tech. Notables were a ballet dancer, historian, handful of mechanics, biologist, aeronautic engineer, sculpture, and of course musicians. People who would never get hired, much less considered, today. Every team needs at least one doer.
- brendanfinan 2y agoEngineer Sneed Art
- gwervc 2y agoGlad I'm not the only one who parsed the domain as such :)
- taeric 2y agoSomewhat related, I think, I am always surprised at how often we don't have non-critical paths in jobs. Half the reason stress is so high, it seems, is we have backed ourselves into a situation where things have to succeed.
- mym1990 2y agoThe irony of the #3 thing on HN today being this, and the #5 thing being 'Finish Your Projects' haha. Good points all around.
- loup-vaillant 2y agoIn a sense though, seeing that whatever project we're working on is no longer worth pursuing, is finishing that project. That's very different from letting life happen and stop working on it without really having decided it.
- mathgeek 2y agoI usually think of abandoning and finishing as two different ways to resolve a project. Resolution is a good goal that allows you to be explicit about what was finished or not before stopping.
- mym1990 2y agoClosure is important! I do feel that I get in the mindset of saying “I’m gonna get back to this later” and it just never happens, meanwhile taking precious mental capacity every time I think about doing that thing. It’s okay to say “I tried it, I don’t need to prove anything, on to the next adventure”.
- parsimo2010 2y agoI think that these ideas are both compatible. In this blog post, it looks like the author finished working prototypes of several games but elected not to push them to a full release. So I think they “finished” the work, and we can’t fault them for estimating that it wouldn’t be worthwhile to make a full release. Not finishing a project in this case would be abandoning a game idea that you liked before you even got to a working prototype stage. Because then you can’t even see if your new idea plays well.
- mym1990 2y agoYeah totally, I don’t disagree with that assessment. I would say it’s not productive to try to complete every single thing we start. It was just the headline snippets that were funny to me.
- 03179794816 2y ago[flagged]
- Stem0037 2y agoIt’s interesting to consider how your guerrilla programming techniques could integrate with contemporary development tools and practices. For instance, leveraging version control systems more extensively or utilizing collaborative platforms might enhance the efficiency and scalability of your projects.
- for_i_in_range 2y agoSome of the worst advice I read comes from some of the smartest people out there.
- zackmorris 2y agoThis post really resonated with me, as I have between a dozen and a hundred abandoned projects, mostly games, since I started programming around 1989. Most of them written for the Mac Plus or Mac LC. And many of them following a similar mechanic or art style to the ones in the post. I think of the few shipped projects I've released or been part of as a shadow of who I am. Same with my resume and work experience. They're a fingerprint of a whole being living a dream life that never manifested, because I never had an early win to build upon. That's why I think UBI might magnify human potential by 10 or 100 fold, to get us from the service economy to agency and self-actualization, producing our own residual incomes. Oh and I played Pararena a ton!
- imchillyb 2y agoIf minimum wage didn’t work, what metric makes you believe that a similar system but paying those who don’t work, will? This type of thinking truly baffles me. This magic UBI will be minimum wage for the masses that don’t work. How could that, possibly, be sustainable or even good?
- alexissantos 2y agoPart of me wonders if this parallels the venture capital approach. Many won't don't anything economically productive with the opportunity UBI affords them, but the ones that do may make the cost worthwhile. Not sure if that's how it would actually pan out, of course, but I think it's plausible.
- agumonkey 2y agoI believe UBI would require a few external attractors / motivators to avoid people being dilluted in choice and fuzzy self actualization path.
- malignblade 2y agoAnswering your literal question, how could it "possibly" be good: Minimum wage probably doesn't work because it means a lot of people live in precarity while both emotionally and physically exhausting them. It might just be that minimum wage has stagnated while COL has skyrocketed. If the point of minimum wage is that it provides people with a guaranteed dignified life as long as they are employed, that needs to keep up with the cost of living a normal life in order to keep its effectiveness. That is one reason it might be "failing" although I don't know exactly what you mean by that. > get us from the service economy to agency and self-actualization This is the thing I think most people have a hard time connecting to "measurable utility" but will probably be the most sweeping effect of UBI or similar. Think about your typical gig worker, minimum wage worker in some high-turnover environment etc. This person probably does not have the financial safety net to pursue something meaningful, or to take the risk reskilling, or to otherwise improve their emotional and financial well-being. You will probably always have free-riders or people who just want to consume without producing. But is it better to have a society of exhausted, frustrated, barely-hanging-on people, or a society of people with the _potential_ to to be creative, passionate, and exploratory? Conversely to you, I find it hard to imagine that a society with surplus wealth would be more effective if it chose to subject its people to precarity and emotional strife instead of empowering as many of its people as possible. Some references: https://www.epi.org/publication/charting-wage-stagnation/ https://www.epi.org/publication/charting-wage-stagnation/ https://www.statista.com/chart/25574/living-wage-vs-minimum-wage-by-us-state/ https://www.statista.com/chart/25574/living-wage-vs-minimum-...
- norir 2y agoAbandoning things is essential to development. If we didn't let things go, we'd be stuck with all of our weaker ideas. That doesn't mean they are bad or a waste of time, but rather you reach a point at which you realize there is something better you could be doing and move on. This can be painful but it's necessary. I keep beating this drum but I believe there is a significant amount of pain in software because people shipped first drafts and got stuck with foundational design issues. Once this has gone on long enough, even a greenfield rewrite is hard because both the programmers and the users have internalized the flawed design.
- perrygeo 2y agoAnd in many cases the entire org chart has been built around the first draft. It's psychologically hard for developers and for people paying the bills to throw stuff away, so we often dig in our heals and accept the first solution that works, along with the tech debt and resulting pain. Now the drum I keep beating is - software process needs a design phase. You need some plan, some coherent vision of the architecture, otherwise you get a system held together with duct tape and prayers. Agile made it fashionable to sprint ahead without any coherent plan. Waterfall obsessed about the plan and failed to adapt to new circumstances. There has to be somewhere in the middle where a design is subject to empirical testing. We have to change the design based on results of running real code. In other words, when the first draft doesn't work quite right, you don't ignore it (Agile) or try to shoehorn it into the existing design (Waterfall) - you change the design and try again. "Throwing stuff away" could be reframed as the scientific method. This needs to be normalized as a part of the process so we remove the stigma of "failed" experiments, which are not failures but valuable sources of information that improve the final product.
- deleted 2y ago[deleted]
- hirvi74 2y agoI'm not sure I am all for abandoning all projects, but I do remember reading a comment on this very website that really resonated with me. Someone was complaining about always starting projects, but never finishing said projects. To paraphrase another user's response, it was something like, "Not all projects need to be finished in order for value to be gained. To borrow a concept from Buddhism, perhaps you found what you were looking for all along?"
- deleted 2y ago[deleted]
- doublerabbit 2y agoMines just time. I get home from work, the last thing I want to do is sit in front of my computer. With two days off a week to fulfil with chores, I still don't want to sit in front of a computer screen.
- awesomeMilou 2y agoI'm a junior, currently trying to get an internship and subsequent job. I envy anyone that can do what you do. At the moment it feels like the industry is a cult, only looking for people that make tech and programming their entire life. I don't even mind the requirements, I have a work ethic and want to perform well, but the expectations seem higher than ever. I'm looking forward to finally having enough job security for a hobby that doesn't involve staring at computer screens (hoping to get into metal work soon).
- JKCalhoun 2y agoEventually I got comfortable enough to just take that time that I needed and say, damn the consequences. "Sorry, boss, I was busy with family last night." And as it turned out that was not the problem that I thought it would be.
- rglynn 2y agoA really valuable lesson that I feel like I have to keep learning.
- EditorOmaha 2y ago> I envy anyone that can do what you do. Nah, almost everyone does what parent does. Basing your understanding of the industry on HN/blogs/social is just an apex fallacy, it seems everyone is a FAANG 10x-er with plenty of oos contributions. That's far from reality. I gave up on programming in my personal time almost immediately. I've picked up hobbies that require physical work instead.