Recently, I had the chance to revisit an article I wrote on Code Project. I had never written what I would call a tutorial before that article and I haven’t written one since, but it did get me thinking on why I wrote it, what I knew and what I learned from it. I thought I would share that here.
I have been bouncing around Code Project for years, and had seen many articles, read many comments. I rarely took part, as I didn’t feel I had the ability to comment or I just didn’t want to write something critical of another persons work. There was a post by a member that the articles contained on the site were of an increasingly poor quality. And I agreed. But, I had never contributed, is that fair of me?
I set off down the path of writing an article on interfaces. I planned on creating a tutorial with solid, working examples that could be applied to every day development. What I learned from this experience is that it is incredibly difficult to put together a real-world example of a concept such as interfaces. You’ll see if you take a look at the article that I eventually ended up on little more than a text book example. Further to that, the comments after publishing show that I really didn’t understand as much about interfaces as I thought I did, or that I just couldn’t apply the knowledge to an example.
So, what makes it so difficult?
From a real-world example perspective, the issue is that we can never provide enough code (either through proprietary restraints or pure code scale). Our brains work better at breaking things down into small, bite-size pieces. And showing a more fleshed out example of interfaces without spanning multiple articles you’re not going to get to show everything about them.
Some authors would tackle a sample system, something that allows you to see how the pieces fit in in the overall system. So, I might have expanded the article by several installments, put in a WinForm app that had buttons and you can see the results as we go. The issue with this is that those sample apps suffer another issue, they are too focused on the subject and never show enough about how the pieces fit into a real world system. Sure, they might show some very solid examples of interface usage, but a real-world system is rarely a single component. The time necessary to write up the other code, without explaining it outweighs the benefits of the sample in the first place.
After editing my article, I received an extremely lengthy comment from another poster telling me that I perhaps should have waited, that I didn’t understand interfaces well enough. And to an extent, I do agree, I didn’t understand enough to be able to show absolute proficiency with the subject. But, I did choose to try and share what I did know and understand with others. I put together an article that laid out an example, that described the usage and I hope that it helped a couple of people. I appreciated the comments from this new poster, and I took the time to read the response and will hopefully produce a better, more rounded article next time I choose to post something.