This post was published 4 years 19 days ago and as such probably does not reflect my current opinions, knowledge or ability.
“When you fail to prepare you prepare to fail” –Every guidance teacher in the world ever.
Whilst the importance of planning out a program before beginning to write it has been stressed to me over and over again, it wasn’t until I struggled through a project last year without any prior design work that I actually took this seriously. So this university term I’ve made a huge change to the way I work, and all it took was to buy a notepad.
My Sketchbook
Now, absolutely everything I need to think about goes into this one book. Plans for the structure of a program. Working out coordinates for drawing a cube. Listing alternatives for collision detection. I always have the book on me, so ideas can be jotted down in it, and all my thoughts are kept together – if I need to look back at a solution I’ve worked out before, I’ll have no difficulty finding it. The work in it can be rough a lot of the time, like when I’m brainstorming ideas, neat and organized like when I plan out database structure, or highly illustrated like when I design my next game or website.
Keeping Me Away From The Computer
Don’t get me wrong, it’s not like I didn’t try to plan before now. It’s just that plans tended to be a few lines in a notepad before I decided I had a fair idea in my head and plunged into programming. Since each project I work on is bigger and more complex than the last, that’s no longer an alternative for me. Having a piece of paper rather than a computer screen means I can move away from my desk, and refuse to go back and program until I’ve laid out what I intend to do. That doesn’t mean I won’t make changes later, but so far at least I haven’t hit any walls where I’ve found a huge design flaw or had to rip my code apart completely.
Linking Ideas
An unexpected benefit of this was that by using the same notebook for all of my programming work, I’ve been able to tie the work from different modules together far better. What I’ve already written for PS2 programming is also relevant to Windows, which in turn can even affect my web development. It’s made it much easier to avoid doing the same work twice, and to learn from my mistakes in each piece of coursework.
Taking It Further
I was surprised at how much of a difference something as simple as a notepad has made to my programming work, and it’s certainly not something I intend to give up any time soon. I already tend to reflect on each task I have to complete mentally, but in future I intend to use my notepad to keep track of exactly what went well, and what could be done better. My goals and lists of tasks which are normally still written in a text document will probably also be written on paper from now on. I just have to hope I don’t lose the notebook!
Some Questions
As ever, I’d love to hear everyone else’s experiences and thoughts on this. Do you make plans before you begin a project and if not, have you had any problems because of it? Do you like keeping track of things on a computer, or do you prefer good old-fashioned pen and paper? Do you have any tips or advice to help with planning and organization?
As I think you know, I tend to just dive in there and have a good fiddle. However normally after having a go with a test project or 2 I make a few rough plans, probably similar to your notepad ones, however they tend to be scribbles on a pad of paper and easily lost.
I think I will be starting with making more permanent notes (as I have began with my most recent project) but I doubt they will be anywhere near as organised as yours.
I just hope one day to be as organised as you
My notebook isn’t organised, it’s just together. I make no effort to sort it out or keep it neat, I just write in the way that makes most sense to me for what I’m doing.
I forgot to mention in the post, and as Nistur will already know, having something planned out in a notepad makes it much easier to explain to and discuss with someone else. And since you helped me make that mind map with my blog posts I’m going to try and do that more often too.
You should read part 3 (I think) of Code Complete. I didn’t read it until after I started using my notepad but I think my plans will be much more effective now I have. It’s a big book, but I’m getting through it… slowly.
Whilst working as a full-time car washer to earn some cash for EuroJam and World Scout Jamboree last year (9 hours/day work with headphones on) I didn’t exactly have to concentrate on what I was doing. So in my back pocket was usually a scrap of paper and a pen for ideas.
During my stint for EuroJam I filled a 1KG Roses tin with paper scraps, for WSJ I had a pocket notepad. I’m still working through the Pocket Pad but have since emptied the tin.
Thing is my mind works in flow charts now and drawing them in an IDE is sooooo much easier than sketching them out. If only I could find a (free) UML IDE specifically for PHP…..
That’s really cool. I think I might start sticking ideas in a tin and when I get bored or have nothing to write about, I can pull one out and work on it…
I’ve only recently started trying to use UML, and everything I’ve done has been on paper so far. I agree that it takes a long time and makes a mess when I change my mind about something, so maybe using a computer would be more suited for that – I’d just have to be careful not to start programming until they’re well thought out. Maybe if I insist on printing them and didn’t begin until that’s done it would work the same…
I don’t know any free UML IDE’s specifically for PHP either I’m afraid.
[...] to the name of a post which cracks me up (yes, I know my humor is off ;P) but also to the posts I found really [...]