Development Nightmare
For 14 years I have known the pains and joys of programming. I have begun countless projects, but in each and every one of them, I end up dropping them before I get even close to finishing. Even worse, I never keep my code stored in repositories, so I end up deleting entire projects when I do my yearly computer cleanse.
Why? Whenever I begin a project, I really just hop straight into it, coding as I go.
Man, it would be cool if we had a way to play audio
So I program in an Audio system.
It would be super awesome if I could customize my character
So I program the character customizer.
What if this had x, y, and z?
Thus, x, y, and z were born.
Eventually, I get to this point, where I look at my project and become frustrated with it. Foundation on a foundation of poorly organized code becomes completely unreadable. I have no schematics or designs to indicate where the project was even going. I become depressed that I’ve done it again, and I stop working on it.
No plan, just raw, chaotic code.
This cycle has repeated itself time and time again. Even now, as a Senior at OSU who is supposed to have project management down. The most recent project I started involves creating an immersive language-learning video game. It’s a team project, yet I find myself already building up a prototype with way too many features.
Why do I do this? Why do I always try to take these leaps when my feet aren’t even on the ground? This problematic behavior of mine isn’t just detrimental to my projects; it’s detrimental to progressing my coding skills. For 14 years, I have failed to get past the entry level of any language. I never get to the really juicy parts of development because, by the time I get there, the project is ruined.
So, what do I need to do?
Refactoring Myself
Trying to develop without a plan is like driving with no idea where you are going. Like writing an entire book in a sitting.
When you dive headfirst into the code without documentation to back it up, it makes everything so much worse. Hard-to-read code snowballs into thousands of lines. You start forgetting what your functions are for. You feel like a stranger in a foreign land just trying to add to your own code.
Like what even is this?
Jokes aside, I am making this post to help remind myself what I need to do whenever I work on a project.
Structuring The Work
When doing any kind of work on a project, whether that be starting one up, or continuing work:
- Start with a vision: Whenever you work, know what the final goal is. This could be for the entire project itself, or even small sections that are being worked on. Write it down
- Make milestones: Divide every single idea into smaller, more manageable parts. Treat them like checkpoints.
- Pseudocode it out: Sketch the logic out. Write it out plain. Make a detailed flowchart for your code.
- Use Version Control: Commit progress regularly. Upload with detailed messages.
- Comment your code: Trust me, your future self will thank you. Maybe not every line, but important bits. Make function header comments, and file header comments.
- Document Progress: Track your progress. This can be done via a Kanban board or commit messages. Keep it readable.
- Test, Test, Test: Start testing early, and test often. Testing saves time and lives
- TAKE BREAKS: One of my most serious sins is sitting around coding on a single program for hours and hours on end. Take a break and come back to the problem. It might just give you the fresh perspective you need.
Ending The Cycle
It’s hard, especially for me, to not simply dive into a project headfirst. Jumping straight into hard coding for a project feels like bypassing tedious constraints at first. Until you realize those ‘restrictions’ were the guardrails keeping you from flying off the deep end. Just know this, planning saves you a lot of pain in the long run.
Hopefully, sometime after this is posted, I’ll have finally finished a project after 14 years. Here’s a look at what I’m currently working on.
Thanks for reading!
~Dev