Tag 'software'...
Engineering for Engineering's Sake
Software engineers are sometimes very, very prone to making things more complex than they need to be. In the engineer's mind, "complex" can be replaced with the word "cool" (or some other amazing adjective). Such a mind has gotten lost, has lost sight of the fact that there exists a most-efficient path from the problem to the solution. Such a predicament is not uncommon -- probably because of something physically wrong in the engineer's mind; And because a certain amount of tinkering is usually required to begin work toward a solution. But, when one becomes enveloped in the problem and forgets about the priority of actually solving the problem, large, unrecognizable apparatus are concocted.
Read full article...Release It! Stability Review
I recently read Release It! by Michael Nygard. I became interested in this book when the NFJS 2008 panel cited it as their #1 suggested read. In my view, the essence of Nygard's expose boils down to two points:
1. One can build software that passes QA with flying colors and still fails miserably in real environments.
2. Problem in production are unavoidable. Good software will be able to navigate them as gracefully as possible.
That said, the book was mostly conceptual, offering real-world examples of how antipatterns in software development made problems that were encountered even worse. Then, he counters with patterns in stability, capacity, general design, and operations. The principles discussed are those that most developers have at least some exposure to, but those that we don't necessarily consider every day. These consist mostly of non-functional requirements that do not often enjoy QA scrutiny. The set of antipatterns and patterns is one that I think all developers, QA, and project managers would do well to consider within the scope of their current and future projects.
Overall, it was a thoughtful book. I particularly enjoyed the sections on capactiy and stability that seemed more immediately applicable to my everday life in code. I found the operations section to be the driest, but giving me opportunity to consider the plight of sys admins. I would agree with the NFJS panel and highly recommend the read.
I have included a short slide deck on the stability section with some highlights on what one might consider and what is explained in much clearer detail in the book.
Read full article...Seagull
Context Processors Put Content On Multiple Pages
In software development, be dry, and define data once. But, what if that data needs to be used in many places? This is the case with parts of a web page, for instance, that are common to many different pages. Django has a great mechanism for this: it is context processors.
Read full article...Slow the Flow
Recently, I've been appalled at a stated software development management strategy: slow down your development. To aid slowness, perhaps we could:
1. Pair keyboarding
2. Use Windows
3. In addition to kickoff and handoff, add halftime shows to stories
4. Left-hand only days
5. No hotkeys days
6. Triple programming
7. Switch roles: dev and dba, designer and qa
8. No IDE days, or better yet, use Eclipse
9. Do spikes on interesting, yet inapplicable things
10. Stay home and mow our lawns
11. Alternate foosball between every step of the dev process
12. Downgrade hardware
13. Lower screen resolution
14. Call more meetings
15. Naps (made better with cups of cheerios and water)
16. Spray Endust upside down around your desk
17. Afternoon LAN parties
With all this fun, one might ask why we didn’t think of going slower sooner.

