During my current stay in NYC I’ve finally found time for my old coding projects. I’ve been doing a lot of thoughtwork about them recently. I’ve found out that most of them have problems with their design. I am talking here about design in broader sense (like ‘задум’ in ukrainian), not the visual part.
I started rethinking my projects’ organization and design being heavily inspired by the Rich Hickey’s talks “Hammock Driven Development” and “Design, Composition and Performance”. I recommend you go and watch these right now.
I’ve decided to start with the simplest project I’ve done — the static site generator. It had been written in a week, while I was getting into Go programming language. The site generator had been written just for this blog with almost no initial planning and designing, so I’ve ended up with working, but ugly solution. I haven’t even published it on github, because it was impossible to reuse it by others. But you can find my motivation about blog at that time in the very first post (in ukrainian).
I’ve come with an idea to improve my blog generator into something well designed and great to use. Some people improve their skills by doing coding katas and tutorials and I will improve my by creating design and implementing real systems. My ambitious goal is to come with the best design and the least possible coding. All this should be done in limited amount of time — because you can maintain things forever. Lets say this should be done in a week, as I think that having constraints leads to better design.
I’ll be writing posts about my technical and design decisions in order to get feedback, so you should point out flaws in my design, I’ll be grateful if you do, really, prove me wrong and test your own design skills.
PS. Yeah, from now I’ll be posting in English. I want to improve my English and there is just not enough ukrainian programmers I know to get feedback from.