Do you remember the last time you learned a new, back-end technology like Linq-to-Sql, Entity Framework, NHibernate, the Twitter API, or some other 3rd party API? How did you first go about learning it? If you used some tutorial of some sort (be it a blog, video, or some other medium), how did you try it out? Did they have create a basic web page to present the data from the API that you were consuming? If you DID create any form or UI to consume this API, here's two questions for you...
- How long did it take you to create that UI compared to writing the code that uses the API?
- Did you learn more about the API from the UI or from writing the code that actually interacted with the API?
Now, let me restate that I'm aiming these questions specifically at back-end technologies. Any technology that deals with any aspect of a UI (i.e. JavaScript, Silverlight, etc.) obviously depends on the UI and really does not apply. However, if you're NOT focused on a UI-dependent technology, why do you create a UI to learn something that doesn't require it?
Don't get me wrong. I was guilty of this as well and what I found is that I got sick and tired and bored spending so much time creating a UI and it would take me longer to get to the subject of my studies. Throw in a dash of OCD or ADHD because I couldn't just make a simple UI but needed some form of basic layout and color contrasts at the very least and it was a recipe of boredom. It wasn't really until something clicked that I began to really realize that I learned more from the tests or the debugger while stepping through the code consuming these APIs than how the information was presented. Sure it felt good when I could apply what I learned to a UI but applying the UI layer did not directly provide any value for me towards learning the API.
But again, if it takes so much time and provides a greater opportunity for distractions, is it worth it to learn a back end process by means of applying such to a UI?
I never do. It gets in the way. If I'm learning a new technology/protocol/library the first thing I do is figure out which language has the best support for it then start with TDDing truly minimal command line apps from that language.
ReplyDeleteUIs are always based on someone's ideas of what "easy to use" means and their understanding of the lowest common denominator use case. They're obstacles at best.