Why Nothing Should Be Complicated


I’ve noticed something in my life, the better I understand a subject, the less complicated it becomes. I’ve recognized this when I would teach new subjects, and when I would get “advice” from other people.

I was reminded yesterday of a conversation that happened over 6 years ago. I was working in Southern California, and a friend of mine had just gotten a job (that I helped him get) as a web programmer. They were using a new technology from Microsoft called ASP. I asked my friend what ASP was, and his explanation was little more that “It’s pretty complicated“.

Now, I consider my self fairly adapt, I am able to learn new topics relatively quickly, I was programming BASIC in 3rd grade, I taught myself C# in a week (I already knew VB.net extensively 🙂 When I ask a person to explain a topic, I expect to be able to keep up with the answer, and to receive more than a newbie brush off. Needless to say, at the time, I was a little earked. I have since decided that when ever some one asks me a question about a topic, that I know a thing or too about, I make it a point to give more than a brush off answer. If I don’t have the time to give a solid instruction, I at the least try to direct them to a more complete answer. (Incidental, If you really want to know about classic ASP, go read the articles on Web Monkey, “Introduction to Active Server Pages”, and the great primer to relational databases “Your First Database”;  the latter is must read for anyone that wants to know about Relational Database Design, or writing SQL)

I realize now, though I didn’t then, that my friend wasn’t trying to be rude, or snobbish. He just didn’t know how to explain ASP. He didn’t have the fundamentals down, it was confusing to him, so he figured that it would be confusing to everyone. (As a side note: I understand that he has since become an efficient ASP programmer, and is running his own company as such).

I’ve seen this truth demonstrated over and over again. When I was teaching for New Horizons, I remember an instructor commenting that no one could ever explain a relational data base to a class in less than a couple of hours. Now I started every database class that I ever taught (ASP/SQL/Access) with a 10 minute overview of relational databases… I knew it could be done. Realize that this was no ordinary teacher. This instructor had been teaching Access for years, she had won awards, hands down, she was one of the best instructors there. Yet, she didn’t have an understanding of relational databases that would allow her to explain then in under 10 minutes. They were still complicated and confusing to her.

Recently, on an enterprise .net project that I have been working on, their is a business piece that I am about to tackle. Every one that I talk to tells me how complicated it is, what a large task this is going to be. All but one. The one tells me that if I break it down to it’s simplest components this is really a straight forward process. He has an understanding of this process, so it’s not complicated, it’s simple. Even the most complex system in the world can be broken down in to simple processes. Consider DNA, the most complex communications programming system ever designed, yet it breaks down in to four simple building blocks.

Ultimately everything should be broken down in to it’s most basic parts. If you find that a task is getting too complicated. Break it down in to more (easier to comprehend) tasks. Keep doing that until you can fully grasp what you’re doing. You know that you’re at a good understanding level when you can explain it, straight forward, to some one who asks “how does that work” – with out replying… “well, it”s complicated”


About Caleb Jenkins

Caleb Jenkins is an international speaker, author and 6 time Microsoft MVP award recipient, he currently works for Solera as a Director of Software Development. An entertaining and informative speaker who approaches software from a fresh perspective that spans UX, agile practices and technologies for enterprise customers from across the globe. Leading UX product design teams, coaching multi-team agile transformations and architecting and mentoring at some of the largest companies in the world, As a long time community leader and former Microsoft Developer Evangelist, Caleb is well known for his engaging speaking style, depth of knowledge and creative energy. Founder and Principal Mentor of Proaction Mentors, former UX Manager and Agile Coach, Senior Architect for Six Flags Corporation, Product Architect on a Cloud Marketing Platform, Caleb has made a career out of empowering others while building products and teams that delight customers and solve business needs. You can follow him on twitter (@calebjenkins) or his blog, DevelopingUX.com and if you're still reading this, then you could also subscribe to his blog RSS feed or sign up to receive updates by email