Move Fast and Abandon Things
The author reflects on their game development journey, emphasizing quick prototyping, the challenges of project completion, and the importance of learning from both successful and abandoned projects, sharing unfinished work on GitHub.
Read original articleThe article reflects on the author's journey as a game developer, particularly focusing on the nostalgia of revisiting old projects and the creative process behind game development. The author shares experiences from their early days of creating shareware games, highlighting the importance of quick prototyping and the iterative nature of game design. They discuss the challenges faced in completing projects, often leading to the abandonment of many ideas that showed potential but lacked the necessary development resources. The author emphasizes the role of serendipity in creating engaging games and the value of learning from both successful and shelved projects. They also recount their transition to a corporate environment at Apple, where they adopted a more structured approach to programming while still valuing their rapid prototyping skills. The article concludes with the author's decision to share their unfinished projects on GitHub, preserving the memories and lessons learned from their early work in game development.
- The author reflects on their past game development experiences and the importance of quick prototyping.
- Many projects were abandoned due to resource constraints, despite showing potential.
- The author transitioned to a corporate role at Apple, adapting their programming style while maintaining their iterative approach.
- They emphasize the significance of learning from both completed and shelved projects.
- The author has shared their unfinished games on GitHub to preserve memories and insights from their development journey.
Related
The saddest "Just Ship It" story ever (2020)
A developer shares a cautionary tale about the importance of releasing imperfect products promptly. Delaying a project led to missed opportunities, contrasting with a competitor's successful approach of shipping and updating continuously.
Jerk
The author reflects on their transition from indie game development to sound art, emphasizing tempo as a constant, blending programming with music, and the importance of adaptability and innovation in creativity.
Below the Root: A story, a computer game and my lifelong obsession (2015)
The author reflects on how the 1984 game "Below the Root" inspired their programming career, leading to the development of "The Dreamsong" while facing challenges with rights and modern technology.
On finishing projects
The author discusses challenges in finishing projects, emphasizing unclear goals and lack of accountability. Strategies like writing specifications and timeboxing can improve completion rates and foster accountability.
Move Fast and Abandon Things
The author reflects on their game development journey, emphasizing nostalgia, the importance of quick iterations, and lessons learned from both completed and unfinished projects shared on GitHub.
- Many commenters resonate with the author's experience of having numerous abandoned projects, viewing them as part of the learning process.
- There is a debate on the value of abandoning projects versus the necessity of completing them to gain meaningful experience.
- Some emphasize the importance of maintaining quality and documentation in projects, even if they are abandoned.
- Nostalgia for early programming experiences and the simplicity of past development environments is a common sentiment.
- Several commenters express concern that normalizing project abandonment could lead to wasted time and unfinished work.
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!
It’s awful.
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
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.
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.
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.
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.
With two days off a week to fulfil with chores, I still don't want to sit in front of a computer screen.
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.
For instance, leveraging version control systems more extensively or utilizing collaborative platforms might enhance the efficiency and scalability of your projects.
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.
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?"
Related
The saddest "Just Ship It" story ever (2020)
A developer shares a cautionary tale about the importance of releasing imperfect products promptly. Delaying a project led to missed opportunities, contrasting with a competitor's successful approach of shipping and updating continuously.
Jerk
The author reflects on their transition from indie game development to sound art, emphasizing tempo as a constant, blending programming with music, and the importance of adaptability and innovation in creativity.
Below the Root: A story, a computer game and my lifelong obsession (2015)
The author reflects on how the 1984 game "Below the Root" inspired their programming career, leading to the development of "The Dreamsong" while facing challenges with rights and modern technology.
On finishing projects
The author discusses challenges in finishing projects, emphasizing unclear goals and lack of accountability. Strategies like writing specifications and timeboxing can improve completion rates and foster accountability.
Move Fast and Abandon Things
The author reflects on their game development journey, emphasizing nostalgia, the importance of quick iterations, and lessons learned from both completed and unfinished projects shared on GitHub.