So tonight I got to help demo what a fishbowl was at the ALT.NET Canada (thanks Doc!) conference and the topic of discussion was on the Fundamentals of Software development. During the session I started to realize that what I considered to be fundamental seemed to be far from what others did. After a few discussions I started to think that the fundamentals were different based on generational divides.

I’m speaking for myself, but hopefully for my generation, but when I hear “The Fundamentals of .NET development” I think, Object Oriented Programming, Design Patterns, a knowledge of the syntax of a language, and at least a base understanding of what the CLR is and what it provides for us.

Some other takes on fundamentals were focused on understanding how the underlying operating system works, Algorithms and Data Structures.

This got me a little depressed because I don’t have an intimate knowledge of how the underlying operating system works, or how to perform a deletion from a red-black tree, or how to implement a half decent hashing algorithm. Ask me to build an AVL tree and I might puke, or at least ask “why? it’s 2008″ I have a base understanding, but I’m not sure if that counts as the required fundamental knowledge to build a decent app.

When I was writing C, I cared a lot about writing well optimized code. I cared about memory allocation/de-allocation. I cared about protecting from buffer overruns. I cared about so many things, that I just don’t think about, as much, now as a .NET developer. All the things I don’t have to be concerned about allows me to focus on other things that I want to care about.

It seems like we developers are proud of being an expert at something, but when that something becomes less and less relevant in building applications today, we tag it as “fundamental”. Perhaps in 10 years or so the next generation will wonder why they would need to understand object oriented programming to build valuable applications. After all it will all be written in DSL’s, right?

Couple of more pennies for ya!

About Mo Khan

mO, is just a kid who's excited about writing software. He's a student of his profession, and just wants to share his thoughts on software development.
This entry was posted in Programming. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

One Response to The FUN-duh-MENTALs

  1. I totally agree Mo. I never written any C code for a production application, nor did I have a real algorithms course in school. That is not to say I don’t need to have a basic knowledge of these topics, but I don’t need them for writing testable, well factored C# (or other managed) code.