This was an interesting read: http://www.tomdalling.com/blog/software-design/fizzbuzz-in-too-much-detail/
The end goal rather than introducing more complexity for the sake of introducing more complexity is more along the lines of introducing more syntax from a particular programming language.