Archive for July, 2008

Working in the code factory

Thursday, July 31st, 2008


 

There is a tendency in larger software organizations to value “hard work”. At face value, this makes sense. We all want to be known as hard workers. Some of us love to be known as the hero on the team that can stay up the latest and check in the most code. In truth, a “hard worker” can meet a goals, but this has no reflection on how innovative they are.  This is because, we are not factory workers, we are creators. 

 

The process of creating is vastly different from that of working on a production line. Creators bring things into existence that did not exist before. This creative process is important to protect because without having a prior example of what is to be created, time must be invested to dream up every possibility and make sure that the solution that is used is the most appropriate. The need to be seen as a hard worker redefines our idea of a goal from the satisfaction of finding the most appropriate solution, to being the first to make something that is good enough to pass tests. I believe that this is what makes  a lot of software from companies more mediocre as time goes by. This is also a reason that a lot of corporations are not inspiring places to work. The book Peopleware goes into greater detail into this subject then I should, so if you have not already, give it a read.

No, I don’t want to sound hopeless. In fact, I am trying to figure out the cure for this tendency. Respecting the fact that software will be less valuable if it is rushed, requires a definition change of the word management. I think that a lot of managers still think that software can be planned beforehand, handed off to be designed, passed to engineering, then put through testing and launched. This is known as the Waterfall approach right? So is Agile the cure? Maybe it is, but unfortunately, a lot of teams have implemented a half-assed Agile process to a team without proper agile training. These teams then get convinced that Agile does not work because it did not work on their team. Unfortunately, Agile has been rendered powerless in some companies for some pretty unfair reasons but powerless just the same.

If you take the time and think back on your career, have you ever had a project that went smoothly? A project that did not go past the deadline? or require a crazy amount of hacks to get it out on time or close? For those of you who would say no, I am sure this was not for lack of hard work and reasonable preparation.

iFeel a little better about my Phone

Monday, July 14th, 2008

Okay, day three playing with my new iPhone 2.0 software and I can say that this is ALMOST better then my iPhone 1.1.4 that was jailbroken. The only missing piece is my Last-FM Audio Scrobbler Plug-in for iPod. They did release a Last-FM app, but were unable to include the Scrobbling of iPod songs yet. Getting that out of the way, here are the new apps that I have grown to love (in order):

  1. Todo - took me a while to find it, but it syncs with Remember The Milk. Finally, I can have my list wherever I go, even if there is no internet connection. For instance, my Trader Joe’s as is in a dead zone for AT&T. I forgot the milk more then a few times.
  2. Mobile Flickr - There are a few Flickr Apps available and some for free, but this one is a bit more polished and lets you upload.
  3. MotoRacer - This is a fun game. I was dyeing to try a game that used the entire phone as to steer. That is just cool.
  4. Pandora Radio - Solid app. Works over EDGE very well.
  5. midome - This will guess a song that you hum. Yes Really! This is not very useful for me as is does not work for a lot of the obscure music that I like, but it is cool nothing the less. It guessed “Bullet With Butterfly Wings” from “Smashing Pumpkins” on the first try.
  6. FileMagnet - Will transfer and show a variety of file types. So far I have tried png images and pdf files. Simple and elegant interface.
I my neck hurts from looking down at this phone all weekend but I have not been able to stop myself. I am not sure if I feel compelled to get the 3G iPhone with all of these new features to play with. Maybe I will wait for the next big breakthrough. More battery life? Edible case? Who knows.

iFumble

Friday, July 11th, 2008

Well… I am one of the thousands holding a useless iPhone today. At 6:20 am PST, I started the the slow upgrade. I went through a download, backup, 3 restarts, and a restore. Then after all of that, in the process of activating, I get a long “Accessing iTunes Store” wait.

Accessing iTunes Store

This goes on for 20 or so minutes, in which time, I decided to check to see if MobileMe was up… OOps, looks like that is down too:

MobileMe is down

Then, iTunes finally gives me an error message:

iTunes Error -2

I am not exactly going to sell my stock now but this will not be good marketing. Apple is trying to break into the enterprise market and I think this will make I.T. departments think twice. From reports that I have seen this is effecting both 3G users and EDGE users that are upgrading around the world. My Advice… WAIT.

You only get two

Wednesday, July 9th, 2008

In web app development, as in anything else you have to have a balanced set of requirements. As the business folk have always said: “Cost, Quality, and Speed - You only get two”. It just seems to work out that way. Now for us in web development we have a different three to choose from: Speed of development, speed of served product, and flexibility of design. Each needs attention, but too much attention too one will deplete the others and lead to a poor product. Lets inspect each:

Speed of development

An app can not be built in a day, but it should be built in a few months. By the time an app gets through design, development, and testing a lot of things can change. I don’t know anybody who has worked on a long or short term project that did not have one or two requirement changes after development had begun. This is why we use Scrum right? Obviously if the reality is that requirements will be added during development, it makes a lot of sense that the longer you are developing, the more last minute changes you will do. However, if you are able to cut the development time, it is easier to convince the business that their super important icon color change can go out in the next sprint.

Speed of served product

Does it scale they will all say. Will your app be fast enough and your servers be strong enough to handle a lot of users and / or slow clients. Some argue that Frameworks that make development easier are less flexible and harder to scale. To be completely honest they are right but it is important to measure each and decide if some sort of balance could benefit you more or at least break even.

Flexibility of design

It is important for the app to be flexible enough to meet user needs and have an enticing interface. This one is interesting because not too long ago I would have counted this as one of the two most important along with speed to develop. That is until just before I started to get inspired to write my post “SproutCore is a chainsaw and YUI is a paring knife“. That is when I realized that a Web App is quite different from a web site and really should follow more closely the rules of a desktop app. In desktop apps we are better off using common OS interface elements that people have grown accustomed too.

Which two do I choose

As you may conclude from the last paragraph, it depends on wether it is a web app or a web site. For a web app, I would choose speed of development and speed of served product as these tend to have a need to make it too market as a complete finished product in a short time-frame and rely on the back-end heavily to process data. Also, consider this quote from UPA – ”Consistency is one of the most important aspects of a repeatable user experience. If users know what to expect, it will be easier for them to build a conceptual map of what should happen next“. On the other hand a web site has a different purpose and I would trade speed of served product for flexibility of design as the idea is to entice users to enter and look around.

JavaScript Developer, the ingredient list

Thursday, July 3rd, 2008

I was asked to list some qualities that one should look for in a good front-end engineer. Here is my list:

I wonder why it is so difficult to find all of these qualities in one developer. It seems like focusing on these areas would be smart for anybody who wants to work as a JavaScript Developer.

Apache on iPhone - Some real Jack Bower Sh&%

Wednesday, July 2nd, 2008

This morning on the train, I started to browse through the Jail Broken installer app, on my iPhone. In the past months I have installed a lot of cool little tools that have really integrated themselves into my life. LastFm, Locate Me, and SSH to name a few. I have passed over the Apache server every time, failing to see why somebody would need one on their phone. This morning it hit me–Freelance web designers! WOW! think about it. A designer is so vulnerable to having their designs ripped off when they make them available to show to a client. Now imagine instead that designer were to host the site from their iPhone and connect to the client’s network. For a controlled amount of time the developer would be able to show the design to the client and let them interact with all of the features. This is way better then watermarking a PNG file.