Friday, May 30, 2008

Our Biggest Obstacle

I like reading Reg Braithwaite's blog. I think he is quite insightful and a talented writer. Recently, he posted on why we are the biggest obstacle to our own growth. Another blogger (err...Sam) posted a follow up positing that it isn't age but arrogance that is our greatest obstacle.

Now, I will be first to step forward when somebody calls for the arrogant people to come to the front of the room (if my friends aren't pushing me there, first ;). I have also passed that magic age of 35 where, for some reason, people seem to lose the ability to learn how to program the clock on their electronic appliances (Twelve o'clock flashers). So, by all accounts, I should be hopeless.

But I don't think I am (introspection is always a challenging task). As I look back upon my career, it has been marked by a steady amount of change. What I've realized is that when I'm comfortable in a job, I become extremely uncomfortable. That consistently pushes me on to new and different challenges, which require learning to be able to achieve.

I would argue that it is neither age nor arrogance that are the obstacle. Those are co-symptoms to the real cause: complacency. Complacency comes when you've decided that you've paid your dues and you can rest on your achievements, and that can happen due to age, arrogance, position, or any of a number of other ways. The co-symptoms determine how you react to that complacency, but do not drive it to begin with.

Identifying whether you've become complacent or not is straightforward: if you are doing the same things in the same ways now as you were six months ago, and you find that comforting, then, in all likelihood, you've become complacent. Are you annoyed about changes in strategy or excited? Do new technologies make you groan or smile? Does a career change fill you with dread or excitement? Most people become very comfortable in their daily patterns, but that comfort, if not managed, will inevitably lead to complacency.

If you notice that you are becoming complacent, take action. Get out of your comfort zone. Learn a new technology (like Bungee Labs' :), take some classes, volunteer for new responsibilities at work, or find a new job. The point is that by stepping outside of your comfort zone, you break the cycle of complexity. Breaking that cycle removes our self-imposed obstacles and allows us to continue growing.

Read More......

Wednesday, April 23, 2008

The Rise of Platform as a Service

I have some pretty exciting news. A couple of weeks ago, I wrote about moving beyond Assembly language web development, mentioning some of the new technologies playing in the Platform as a Service (PaaS) space. In particular, I wrote about Bungee Labs, who is doing some very exciting things to simplify development of highly-interactive web applications. Well, as it turns out, Bungee Labs and I both agreed that me working for them would be a good idea, and I am now employed by them.

First, the fine print: I am now an employee of Bungee Labs. However, this blog is mine, not Bungee Lab's. Therefore, anything I say on it is my own opinion and should never be taken as an official statement from Bungee Labs. Official statements from Bungee Lab can be found on our official Bungee Connect Developer Network blog.

The same day I received my employment offer at Bungee Labs, Google announced their App Engine beta. I have to admit, that set me back for a few minutes. Google is a huge player and not one that a small company can go head-to-head with and expect to win. I'm sure I'm not the only one who thought that, either.

However, the more I thought about it, the more I realized that this is actually a very good thing for Bungee Labs. How could the entry of the 800-pound gorilla into the PaaS space be a good thing for a small company like Bungee Labs? It is all about defining a market. As Eric Sink has pointed out many times, trying to go into a software market with no competition is incredibly challenging because you have to not only sell people that your solution is worth buying, but you also have to sell them that your solution solves a problem they really have. By having competition, you ensure that people already understand they have a problem, so you only have to worry about the first challenge (which is big enough as it is).

Google has now validated that Platform as a Service is a viable solution to the significant problem of building and managing the network infrastructure around an Internet business. Of course, Amazon's Infrastructure Services had already shown that. The thing that Google brings is the concept of building an application on top of somebody else's platform. That is what Bungee Labs has already been doing.

Obviously, if it were only about deploying an application on a grid managed by somebody else, Bungee Labs would be in trouble and I would still be at my last job. Google is taking care of the letting the market know that PaaS is truly a solution to a real problem they have; now Bungee Labs can focus on showing that we are the platform provider that makes most sense to use to solve that problem. That reduces the marketing overhead significantly and allows us to focus on technology to a greater extent.

In the near future, I'll give a new developer's perspective on the differences between Bungee Labs' and Google's development environments for their PaaS offerings. It is important to understand what you get and what you give up when choosing a PaaS provider.

After spending the last 18 months being several-to-many years behind the cutting-edge of web development, it is very nice to be back on the edge.

Read More......

Monday, April 7, 2008

Technology, Education, and the Next Generation

I've always believed that kids are capable of way more than we give them credit for. Orson Scott Card explored this idea in Ender's Game. As I've watched my own kids grow, I've seen the depth of capability that hasn't been remotely tapped by current schooling.

When my son was four, he could name any dinosaur you pointed at, from the ever present Tyrannosaurus Rex and Apatasaurus to the much more obscure Compsagnathus and Troodon. His favorite was Deinonychus. His ability to soak up information on this topic was astounding to me. Lilly is astounding in her ability (and it is for real; my wife is good friends with her mom). And, if you are a software developer and want to be humbled, check out Dmitri Gaskin's Google Tech Talk. Dmitri is 12 years old and is a contributor to Drupal. I have no doubt in his ability to code JavaScript circles around me.

Robert Cringely explored the topic of the effects of technology and change on education in a series of posts recently. The gist being that what education means and the whole process of achieving an education is about the go through a major upheaval. Technology, change, and access to information are all combining to alter not just how we learn but what the end-result of learning is.

This is not news to anybody in a technology industry who is continually scrambling to keep up with the changes in their field. If I had left my education when I finished college in 1996, I don't know if I would even be employable today. I certainly wouldn't be doing anything interesting.

The thing that kids like Dmitri show is that the revolution in education is already taking place. The Internet has provided these kids with the access to information that allows them to reach into their own potential. Dmitri did not become competent enough to give a Google Tech Talk through his school learning. It was because he has a passion and the information is now available for him to follow that passion.

Kids like Dmitri are on the leading edge of this wave. A wave that will quickly show that knowing how to learn something will become the most valuable skill; the trained skill will become secondary. This, in my mind, is the most compelling aspect of Unschooling. When a child is interested in something, their potential is truly amazing. Unlocking that potential is something that our traditional educational institutions have not done very well. In my generation, it was very challenging for a kid to excel in spite of the system. Today, it is easy and becoming easier.

That doesn't mean that training will not be important. A doctor is still going to need a lot of training to become skilled at her profession. However, as the pace of change increases, the skill of being able to continue learning will differentiate the best doctors from the so-so doctors. Technology will help, but it will still require people to drive it. Of course, this is where Dmitri's, my son's, and Lilly's generation will have a serious advantage: knowing how to find information is something they will have grown up with.

For those of us who are guiding this generation, we need to be careful. Our own innate fears and prejudices about learning could serve as a stumbling block for those we are trying to help. Technology and information access have changed the educational landscape, and we need to understand and work within the new boundaries. For some of us, that will be easier than others. No matter what, though, it is going to change. And, just like learning a foreign language, if we aren't doing everything we can to become fluent, idomatic speakers, we will be left lacking understanding.

Read More......

Thursday, April 3, 2008

Beyond Assembly Language Web Development

Many years ago, as I was finishing my last year of college (OK, maybe it wasn't that long ago ;), I worked for a game company...err...entertainment software company. I was hired in conjunction with two other junior programmers and handed a shiny, new, smoking-fast Pentium 120MHz computer, the best computer in the company.

At this time, PC games were written for DOS. There was little to no standardization between hardware drivers and getting little things like network game play working was a serious challenge. If you didn't have a SoundBlaster audio card, you likely would be hearing the game, either.

That same year, Microsoft released Windows 95 (OK, maybe it was that long ago...). Microsoft made a strategic decision that they wanted to be the best operating system to write games for, so they released the DirectDraw, DirectAudio, and DirectPlay APIs, to give developers a standard to write to, regardless of the underlying hardware.

With my spanking, new machine and the two other junior programmers, I was given the task of trying to port a DOS game (WWF Wrestlemania, if memory serves) to Windows and DirectX. The game had started life as an arcade game written completely in assembly (68000 processor, I believe). That assembly was converted to i386 assembly by a tool. Our job was to find the graphics hooks and replace them. In the end, we determined the combination of game (too much assembly to digest) and DirectX (immaturity, primarily) were too much and decided against the port.

Two years later, I was working for a company that produced 3D models for just about every purpose imaginable, from car commercials to major movies. We partnered with Microsoft, who was interested in models for the fairly new Direct3D API. At that time, I got to play around with the latest DirectX as well as attend a few game development conferences. The difference those two years had made was astounding. PC games were now exclusively built on DirectX and most work was done in higher level languages.

Aside from a nice stroll down memory lane, what is the point of this story? The point is that between around 1995 and 1998, the game industry made a significant switch out of its "assembly" days and into its "higher level" days. By assembly, I don't mean just coding in op-codes, but also needing to worry about the bare metal, the hardware underneath, from graphics and sound cards to network protocols. As it moved up to its higher level days, game developers, for the most part, were able to worry more about making a great game and not so much about the particular behavior of a piece of silicon.

I've been doing web development of some form or another since 1994. I've watched HTML grow and mature, I've seen tables turn into divs through CSS, and watched JavaScript make that which was static dance. At any given point, to build a significant web application, I have to be proficient in multiple languages and technologies, including HTML, CSS, JavaScript, XML, JSON, HTTP, PHP, JSP, Java, Python, and others. I have to understand the Web at what I consider the "assembly" level.

We are seeing tools like Intel's Mash Maker, JackBe's JackBuilder, Dapper, and others are making it easier to pull together various content sources. That's a start, but it still leaves the majority of the heavy lifting to be done at the assembly code level.

Thankfully, that is changing. One of the most interesting technologies I've seen in the past few years is in beta now. In my opinion, it takes us up above the assembly level for the first time on the Web. Instead of worrying about how to connect things, various pieces of the web are all parts of your object model. Connectivity with them is part of the platform.

Bungee Labs is providing a Platform-as-a-Service (PaaS) offering that is quite amazing in its ability to be both a general purpose framework as well as be a core integration technology. In the process, they've successfully abstracted the developer from the assembly code of the Web, just like Microsoft did for game developers a decade ago.

PaaS is still a fairly new concept. Perhaps the most notable example is Salesforce.com's Force.com, which provides an extension platform for Salesforce.com. Bungee Lab's offering is significantly more interesting, not just for its thoroughness, but also for its generality. Bungee Lab's WideLens calendar application is a great example of the flexibility and strength of the platform.

Anyway, moving on from my sales pitch here, the point being that we are at a very exciting time on the web. Cloud services, PaaS, and very smart people are taking us to a higher level of development on the web. That means we, as developers, will gain the benefits of being both more productive, building more business value, and of being able to build cooler apps.

Technology is cool!

Read More......

Tuesday, March 18, 2008

Poisonous People at Work

If you haven't seen Ben Collins-Sussman and Brian Fitzpatrick's Google Talk on How Open Source Projects Survive Poisonous People, it is well worth a look. They do a great job describing the debilitating effects negative people can have on an open source project and how to survive those effects.

Unfortunately, poisonous people don't just live inside the Cat-5 and Fiber networks around the Internet. They also live around us every day. And, worst of all, perhaps, they live with us at work.

Unfortunately, work may be the worst place to have a poisonous person. To be sure, the qualities that make somebody poisonous for an Open Source project may not be the same characteristics of what makes a person poisonous in the workplace, but the effects of the poison are the same: people become disgruntled and leave, projects stumble and fail, milk sours before its due-date.

Maybe a future blog will cover how to survive working with a poisonous person. Today, however, I'm going to focus on identifying the poisonous person. What I'm really hoping for here is that poisonous people will self-identify and work to resolve their venomous ways. However, I'm not kidding myself; the traits that make poisonous people poisonous in the first place are likely to prevent that from happening.

So, I'm not covering how to survive a poisonous person and I don't think I'm going to change any poisonous people. What's the point? First and foremost, it is to help others, trapped by the venom around them, realize that they are not alone. Similar to the group strength of a Twelve Step Program, there is strength to be had just knowing you are not alone.

What are the traits of a poisonous person in the workplace? Poisonous people are not always pricks. I've worked with poisonous people who I enjoyed going out to lunch with, enjoyed getting stomped by at the Foosball table, etc. It also holds true that all pricks are not poisonous. Some people are just unpleasant, but their unpleasantness does not cause the workplace organism to sicken.

In fact, I'd go a step further and say that any one characteristic mentioned here does not make a person poisonous, or, perhaps, the venom is just too weak to matter in a strong workplace organism. It isn't until a person pulls together several of these that they have the ability to sicken the workplace and those in it.

I've identified four adjectives that describe a poisonous person and ranked them from least- to most-venomous. I'm sure that there are more; feel free to add to my list in the comments.


  1. Maverick: Poisonous people tend to be fairly well isolated. Part of this is the effect of the poison, pushing people away. However, part of it is self-imposed. Poisonous people have their way of doing things, and the company can come around to them when it's ready to. In the meantime, the poisonous person will ensure everybody else knows they are wrong.

  2. Confrontational: Communicating with the person is never smooth. In fact, people cringe when they have to talk to him or her because they know it will be painful. People get to where they will either not talk to the poisonous person about anything they should be discussing, or they will stop caring and just let him have his way. The poisonous person considers both of these to be successful outcomes.

  3. Single-Minded: Invariably, the poisonous person will have a single, guiding purpose that is brought into every conversation, design meeting, defect report, etc. Everybody in the office will know what this person values, because every single decision needs to be heavily weighed around his value nexus. This can be anything: security, a belief in a flavor of object oriented design, the customer is always right, Emacs is the holy grail, etc.

  4. Arrogant: The final, and most venomous trait, is arrogance. It takes the preceding traits and amplifies them with an attitude of "I am right, you're wrong; I'm smart, you're dumb; etc."


Of course, just about every engineer fits into these buckets in some ways. I know that I do.

The real issue is the effects that poisonous people have on the companies and projects they work with. Most people, even with varying levels of these traits, are good to work with. On the flip-side, I've seen poisonous people nearly destroy a product release that would have tanked the company. I've seen poisonous people cause project be significantly delayed in getting started. And I've seen poisonous people cause projects to string out indefinitely with their single-minded determination.

Putting my cards on the table, I have to admit that I'm hoping if you are poisonous, you'll use this opportunity to mend your ways and move to a more peaceful co-existence with your fellow employees. I didn't lie about thinking you won't change, but here's to hope. This is my easy, four-step program for detoxing yourself.

First, and foremost, be quiet. Stop trying to prove to everybody how smart you are and just be quiet. Listen. Hear other people. You are going for the "walk a mile" thing here; trying to break down your single-mindedness so you can see how things that are important to other people can and should be valued.

Second, start asking questions instead of talking at people. There is a proverb that states "We have two ears and one mouth, that we may listen the more and talk the less." Believe it and live it. You still should be focusing on hearing other people. Don't ask questions about things that are important to you. Ask questions about things that are important to them.

Third, give input, but let other people "win." You see, outside of the poisonous world, this is called compromise. You don't have to be right about everything to win. Give your input, let others give their input, then let the others have their way. This will drive you nuts, but it is a critical step towards removing the toxins.

Fourth, do it all over again, every time.

As the toxins leave, you'll see that discussions aren't about me versus you or about you winning and getting your way. Instead, they are about how we best accomplish things. Your single-mindedness, originally one of the poisonous traits, will become an asset as you are seen as an expert who understands not just your focus, but also the implications that focus has on other areas and how to deal with the real-world problems those implications bring on. The influence you were trying to force upon others will be requested and appreciated.

In closing, a reminder. Almost every engineer has some of those poisonous traits above. The advice I've given here applies to all of us. Do yourself and your co-workers a favor and try listening more and talking less.

I'll be back with some ideas of how to deal with poisonous people in the future. In the meantime, if you are working in a toxic environment, know that you are not the only one and that we commiserate with you!

Read More......