Posts

Showing posts from May, 2011

The ruby and java fightclub

As a person who has one foot firmly in java and another in ruby, I'm often in a situation where I try to have an objective conversation about the advantages and disadvantages between the the two. Unfortunately, both of these camps are not very objective about themselves and each other. Ruby guys seem to think that ruby is all sunshine and lollipops and java is spawn of satan and visa versa. Find any java developer who knows nothing about ruby (or ruby on rails) and strike up a conversation about the advantages and disadvantages between the two. If they in any way care about programming, you will typically end up with a seriously heated discussion about: Performance, Scalability, Compiler Safety, Support, Maintainability, other stuff. On the other side of the equation, I'm a bit at a loss because I've never met a ruby developer who didn't previously work as a java (or C) developer. Typically a new convert from java/whatever has all the zeal of a new religious co

Productivity, billable hours, and expert craftsmen

I read a great article about productivity and I think there is a side issue alluded to that needs to be addressed. A common problem is that the actual direct amount of time to do something is minuscule compared to the prep work necessary to be able to execute rapidly and effectively. The story I'm reminded is something like this: A man had a squeak in his floor and no matter what he tried to do he could not get rid of it. He finally called a master carpenter referred to him by a neighbor and explained the problem. The carpenter walked in, paced about the room for a minute, pulled out a hammer, hit the floor with it and the squeak disappeared. The carpenter handed over the bill and the homeowner was livid: "Are you crazy? You want to charge me $100 for just hitting the floor with a hammer?" Without missing a beat, the carpenter grabbed the bill, scribbled a few changes and handed it back. The bill now read: Hitting floor with hammer: $2

The difference between Scalability, Performance, Efficiency, and Concurrency explained

I thought I'd give some explanation of the difference between scalability, performance, Efficiency, and concurrency. To make things more accessible (and because I'm watching a cooking show on TV) I'm going to use a baking metaphor to help explain the differences. In our case, the system in question is baking cookies for consumers. Scalability, is how well something responds to adding more resources. If we can double our capacity by doubling the number of resources, we've got linear scalability. In our baking example, if we add more ingredients, we can scale to a larger number of cookies. To contrast with our other metrics, this doesn't actually increase the performance of creating a single cookie (they still take 10 minutes to bake), and the efficiency is the same (we just have more capacity). We also cannot bake more cookies in a fixed time period, but over a larger time period we can produce more cookies. Performance is how fast something can get done, u