I’m proud to say reading day, or reading weekend as it turned out to be was a complete success. I managed to read through all of Clean Code: A Handbook of Agile Software Craftmanship, by Robert “Uncle Bob” Martin and I have to ask, where was this book at the start of my project? Forget that, where was this book at the start of my career? Most books will teach you how to write software that works. Some books will teach you how to test that software. This book will teach your software how to behave in the real world, to use proper diction, maintain posture, and not wear white after labour day.
In Clean Code, you learn some of the fuzzier un-written rules for the “science” of software development. Rules like how to comment, how many arguments are used in your functions, what those functions should do, or not do.
All of these rules are followed or broken in the service of a very strong set of basic unbreakable principles.
Your code should be readable.
It should be atomic, meaning you should be able to take it apart and fix it without breaking other parts of the code.
It should work.
It sounds like common sense, but it the gravity of deadlines, budgets, and non-technical managers, it often gets filed under “I’ll do it later”.
You might be intimidated by some of the knowledge in this book. Some of the code samples are kind of obtuse, and you might understand them the first time through. Read it again then. If that doesn’t work, go to cleancoders.com and buy the screencasts of any chapter you are unclear on. If nothing else, you’ll realize that this kind of knowledge exists which is the first step to cramming it in your brain.
Now, for today’s work on Gameplaydate.com. We are almost through the main three user verbs I have on the front page. We can now add games and personas to our user profiles. We can find friends through a paginated list of users. Now, we need to make sure users can accept or refuse event invites. Once that’s done we’ll have a very basic version of the site on hand. From there, I’ll start on one hell of a refactoring and then begin to refine the user interface.