Architecture and design

I’m going to present a lecture on clean code to my coworkers next week. I reread the book, some other sources on web, stackoverflow. (BTW, it turns out that Microsoft’s onenote is the best tool to summarize things on Windows computer)

I also read the “Microsoft Application Architecture Guide” 2nd edition. It’s a bit outdated in technological means (silverlight was still alive back then), but I looked for some insights, and got them. The book was worth reading.

The main thing I got from both books and my current experience, that I’m still falling to BDUF antipattern. I should have better understand that design and architecture are different things, they are on different levels. The lessons I’ve learned were:

  1. Bad design leads to thinking that code is working without test coverage, in turn leading to inability to refactor painlessly.
  2. Architecture should be simple, even when designing a framework with unclear definitions, its better to concentrate on implementations than on thinking how it should work for the client. Again, testing to the rescue.
  3. Software Architecture is “Construction of constructions”, a meta-thingie, but it can be worked out by same approaches as a software product. And definition of an architecture for a project can change iteratively and evolve together with the project.

I think that using agile techniques towards not only software development can be a good thing. Look, some people are using them for parenting!

In my opinion the most important aspect of doing things now is the fast feedback. This approach can’t be used on everything - like you can’t measure strength after on gym visit. But on process where deliverable are small, measurable and incremental it can be great.