The iPhone SDK is out (or “What Eric is Doing in His Free Time”)
If the title wasn’t enough to explain, Apple released a development kit for the iPhone / iPod Touch. In fact, the second beta release of it is out now. So my free time whatever that is) will be sucked up by learning Objective C and developing some apps for the iPhone, in addition to that world timeline website that I’ve been meaning to get off the ground.
Distration, Depression and Focus in a Shiny New World (or “There and Back to Your Old Thing Again”)
There is a phenomenon that I have experienced, but never really thought much about the effects. Programmers are an interesting bunch that thrive on new things, new challenges, new languages, new everything. We like new things, some may say we need new things to keep us going.
I’m sure every programmer can identify with this story:
Bob, a programmer at SuperCorp has been working on an application (SuperWidget) for a month. He likes the application. It’s interesting to him, and he can pound out code on it for hours on end. It’s challenging work, and he’s thriving.
One day, on the other side of the planet, some ingenious programmer creates a new language (let’s call it Z++#) and releases it to the world. Geeks all around rejoice — it’s exactly what they’ve been wanting for years, and it’s new. Bob finds out about it while reading through some chat rooms one night and starts reading documentation. He gets excited. It’s something new. It’s interesting. It’s challenging. Bob writes his first “Hello World” program in Z++# and is entertained at how quickly and efficiently he picked up the language. He loves it. He’s distracted by it.
Bob returns to work the next day. He opens up his IDE and looks at his task list. He starts to write some code for SuperWidget’s account management. He gets frustrated at the steps he has to take to get a simple function to work how he wants. He keeps thinking about Z++# and how this would have worked in the new shiny language. He becomes disheartened and even more distracted. He finishes the function frustrated. SuperWidget, the application that was his baby and that he loved, is now his nemesis. He becomes depressed about the state of his software, which up until last night was the best thing since sliced bread in his opinion.
Bob can no longer focus on his work without thinking about the new shiny language. It’s all he thinks about, and he work begins to suffer. His deadline looms, and coding is going very slowly. Bob stays late a few night to hit his deadline, but when it gets sent to QA, loads of bugs appear. Bob rarely had bugs of any magnitude, and now his programming prowess has suffered. All because some guy on the other side of the world came up with “a better way”.
I’m sure this exact scenario has happened to many people. This type of distraction seems to happen frequently to the type of personality that programmers typically are. It’s a vicious cycle: new thing = distraction = loss of quality = depression = more distraction.
The solution that I have found, which may not work for everyone and doesn’t always work for me, is to use the “new thing syndrome” to your advantage. Find a new thing in the environment that you were originally working in. This might be a new API, framework, or design pattern that applies to the language or environment that you’re working in. Sometimes taking a paradigm that was in the new shiny thing, and find a way to apply that to your own SuperWidget. Doing so makes your old thing the new thing, and can break the cycle.
Focusing on the positive, or bringing the positive back into your life is the solution. It breaks the depression/distraction cycle and allows you to become productive again. After you’ve refocused on your project by making it the new thing, you may find your productivity drops off again, simply because your brain is still thinking about Z++# and hasn’t embraced your old project being the new thing. Unfortunately in this case there is one more step that must be done to keep the productivity up — you have to abandon the new shiny thing altogether. Don’t look at Z++# again until your project is complete. Some people may not need this additional step, and to some people it might be more of a detriment.
Your mileage may vary.
Naive Programmers (or “Why Programmers are Like Children”)
There are some programmers out there that are naive, or even ignorant to the world around them. These programmers do not think of the full spectrum of the impact of the things they create, nor do they think of the users that actually use them. The simply come across as negative, and complaining. They only think of how things would be better if…
… all browsers were compliant
… they would just do X this way
… they would take X off their site it would work betterThese types of comments infuriate me to no end. Whether the client knows of the ramifications or not, they obviously have a reason for doing things the way they do. Creating an application based on a client’s current process is the best way to make a client happy. Changing their internal procedures is rarely the way to go, unless the client already recognizes that change is needed.
In The Bolero of trolls Mark discusses this phenomenon in relation to Fixing HTML, a rant about what is wrong with HTML and why it needs to be fixed.
The truth is I doubt there would be many web people out there that would deny that HTML could be better, I for one sure do. But the fact is that we’re not working in a bubble, and this is not a utopia. We’re working with other constraints, such as backwards compatibility, and billions or trillions of existing content out there.
It’s very naive to think that we can just go out and change something like that without thinking of the ramifications throughout the system. Maybe Douglas Crockford had thought of that, and he simply didn’t want to deal with that part in his writings. That’s perfectly fine, but maybe it is a point that needs to be discussed more in depth.
Programmers with this viewpoint do come across, as Mark Pilgrim said, as very naive and 5-year old like. They simply don’t understand that there are more things to take into account than the simple “rightness” of how something should be done.
What we as programmers need to do when creating systems is to think of the user’s experience first, and implementation second. You’re not going to make clients happy otherwise.
Profilactic v3 is out
The guys over at Profilactic have released v3 of their web app. Profilactic is a mashup site that takes all of your friend’s social media content and puts it on one nice page for you to see — it makes it easy for you to see what’s going on with your friends a lot easier.
iPhone / iPod Touch Firmware 1.1.4 Released
Looks like Apple is preparing for the SDK release. Firmware 1.1.4 for the iPhone and iPod Touch was just released.
