The problem of resources

Programming, as a profession, is really difficult.  There are at least forty eleven different things you must be able to do respectably for your stinking application to even work…  and that’s just the beginning of expectations, not the end of it.

Outside of those fundamentals, which already include myriad of things like: data structures, class vs. interface usage, encapsulation, inheritance, polymorphism, basics of building software, dynamic vs. static language usage, framework support, etc… you have whole other worlds of things like:

* Design Patterns
* Usability
* SOA Services design
* Frontend Development (html, css, javascript)
* Rich Apps Development
* Domain Driven Design
* Database Structuring / Design for code
* Database Management and optimization
* Build process management
* Performance optimization / Load balancing
* Tracing and logging for bug tracking / handling
* Parallel Processing patterns
* Concurrency
* Cryptography
* Cloud computing
* TDD & BDD patterns
* Deploying desktop applications & managing patch deployment
* Mobile phone development

That’s not even a comprehensive list.  Couple that with the expectation that developers are going to work with the business and drive requirements, and it’s honestly a surprise that software ever gets written on time, in budget and functionally “complete’”! 

This is why strategies like agile, which break these down into smaller chunks and focus groups, have become so popular.  There is just so much to do, it’s impossible to do all of it perfectly… instead, the focus must be on doing what’s important first, and doing it responsibly and reasonably well.

So… do developers really do all of the above?  No way.  In my experience, most developers deal with information overload pragmatically and humanly.  They have a small basic set of code understanding (through formal or informal learning) and they then focus their career in any one of the aforementioned areas.  Great programmers have awesome basics, and can do MAYBE any 2 of the above list reasonably well. 

Want software that does all of the above well? Find a team of people who are passionate about 2 of the above and let them focus on doing those things.  Great teams delegate and have clear roles and responsibilities.

But wait, what about software security?  Get in line.  If you are vexing about why apps are <insert blank here>, or not <insert blank here> I want you to re-read this post all over again.  Programming is flipping hard.

Post a comment or leave a trackback: Trackback URL.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: