Archive for July, 2008

Free: Win a Copy of: JavaScript: The Good Parts by Douglas Crockford

July 29th, 2008

JavaScript: The Good Parts by Douglas Crockford is an excellent book. At 140+ pages this book is approachable and easy to read. The writing style is terse and clear, and it’s crammed with good advice.

I thoroughly enjoyed this book and would like to give a copy away. You can read my review here.

Contest Rules:

  • Comment on this post.
  • Leave a valid email in the email comment field.
  • The winner will be chosen at random and notified through email on Oct 1st.
  • I pay for shipping.

Good Luck!

This contest has commenced, and the winner is Luke Maciak!

Author: Adam Kahtava Categories: Book, Contest, JavaScript Tags:

The World is Messy and Complex: Why Should Software Be Different?

July 27th, 2008

Politics, religion, famine, pollution, and relationships; these are parts of our world. I'm messy, my hair falls out, and yours might too. The world is messy and complex, so what would make software different?

During my first real job after graduating College / University, I was horrified by the state of my project's source code. The code was spaghetti; it looked like someone crammed a stack of poorly written technical manuals through a blender that funneled into our source code. Regions (#region) were running willy-nilly, negated values were passing conditions; delegates were calling properties which were in turn calling delegates which were creating infinite loops… SQL rows were being sent across TCP/IP, centralized build servers were taboo, unit testing and TDD was unheard of. Each of the members of our team were build / release masters, developers, and ninjas.  Our job was to maintain this juggernaut and affirm the stakeholders that everything was OK.

But were things really that bad? Remember, I was a recent grad; I was used to creating pristine frameworks (like elevator simulators) crammed with design patterns and fascinating abstract data types. In a way, I was an architecture astronaut being rudely ejected into a toxic tailings pond. The courses I had taken in school, the projects I completed, the languages I used were a great start, but not a valid representation of the real world. In the academic world things were clean; out here (like the rest of the planet) everything is a mess.

I started coming to the realization that, producing software is more about managing people than science, technology, or math. Mistakes and human flaws are the norm, software entropy is inevitable, and technical decisions are often based on nontechnical considerations: time constraints, politics, religion, and relationships rather than sound research and science.

There is hope; realize that you can't control everything, that the one-size-fits-all solution and silver bullets are myths. Then focus on what and how you can change yourself, your software, and your situation. Developing good software (like living a good life) is about making informed decisions, choosing opportunities that encourage growth, reducing complexity, and having a long term vision or goal. Today I still think software is messy, and I'm still horrified by most source code, but abstractions, n-tiered design and testing sufficiently help me manage the chaos.

Science often exists in a pristine clean vacuum, whereas software deals primarily with people. Software is not a science, and humans (like software) are inherently messy and complex.

Author: Adam Kahtava Categories: Musings, Personal, Software Tags:

Gross Generalizations: Software Evangelists, Rock Star Developers, Senior Developers, and Software Architects

July 13th, 2008

Generalization like rumors usually have some truth to them _ at some point, someone formed a thought around a frequently observed piece of truth and… Viola! A generalization was born (or maybe a rumor). Generalizations are incorrect for every single possible case (the exceptions), but there is truth to them.

That’s my disclaimer; now let’s have fun with generalizations.

The Software Evangelist

The epitome of an Evangelist can be observed on Sunday morning TV:


A congregation frying like bacon on the floor, 800 numbers requesting money seared into your TV set, and an Evangelist at the helm orchestrating the show.

Evangelists are a great source of inspiration, excellent communicators, and great leaders. However, they often present a one sided biased opinion, a narrow focus, and can be driven by ulterior motives (money, power, viewership, readership, etc).  Listen to any Evangelists with a grain of salt.

Rock Star Developers

Rock Stars are on MTV, and featured in tabloids – they live hard and die young. 

The lyrics of Great Big White describe the life of a rock star:

Well I’m a wasted rock ranger
I live the life of danger
On the road to find a higher high
The music of wild rock will get me by

Some companies seek out “Rock Star Developers”, here’s an excerpt from an email I received:

are you a Rock Star? I have an opportunity for a rock star … I am reaching out to you in the hopes that you might the star I and the client are looking for!

So, what is a Rock Star Developer? My perception is a: narcissistic, self-centered, prima donna _ someone who doesn’t work well in a team, doesn’t listen, does whatever they want, and lacks dependability. Hiring a Rock Star Developer probably isn’t recommended – unless your organization has a liberal guitar smashing policy, doesn’t mind drunken belligerency, and is run by a one man show.

Senior Developers

Everyone wants a Senior Developer, but occasionally these developers are more senior than developers, and certainly not senior developers _ often the developer’s age (not experience) determines their title. Studies have shown that a developer with 2 years experience can perform at the same level as a developer with decades of experience. Still some Senior Developers have an unexplainable need to let the world know of their seniority through email signatures, resumes, business cards, LinkedIn profiles, and so on.

If you work for 10 years, do you get 10 years of experience or do you get 1 year of experience 10 times? You have to reflect on your activities to get true experience. If you make learning a continuous commitment, you’ll get experience. If you don’t, you won’t, no matter how many years you have under your belt. – Steve McConnell, Code Complete 2nd Edition

Software Architects

Software Architects can be glorified Senior Developers – an architect might be a developer who is senior (like a curmudgeon with a walker) that needed a new title.

Thoughts on generalizations:

There are two sides to these generalizations, the people who claim to be, and the people who are. The people who claim that they’re a Senior Developer are usually impostors, whereas the person who is a Senior Developer is collectively regarded as one by their peers.

Generalizations (like metaphors) are communication mechanisms, sure, there are edge cases and exceptions. Occasionally I encounter aversions to generalizations. Responses like: “Hey that’s not completely true, X,Y,Z disproves that”, or “Naw… that’s just incorrect” seem to be made when we forget that we’re just using generalizations.

What generalizations stick out in your mind?

Author: Adam Kahtava Categories: Musings, Team Work Tags:

2008 Summer Reading List: What Are You Reading?

July 1st, 2008

Summer is finally here! Well… “here” as in, “here in Canada” where we have 8 months of winter, fall, and spring…

This summer I hope to finish up the following books:

Books and reading are essential for personal and professional development. The more you read, the more you understand and the more resources you have to fall back on.

What books are you reading this summer? Do you have any recommendations?

Author: Adam Kahtava Categories: Book, Musings Tags: