"Doubt is uncomfortable, certainty is ridiculous." - Voiltaire

Monatsarchiv für May 2009

 
 

Attack of the Codelosiphers from Planet Yagni

As I’ve argued before in other places I think some people in the programming profession take best patterns and practices a little too far. In my opinion these people and over engineer their code into huge messes that are only understood by programmers of their school of engineering. Codelosiphers is what I like to call them.

Now I love to read about code architectural design and patterning and do implement things I’ve learned from the Codelosiphers when it makes sense. However I’m really skeptical when somebody says “do things x way” without providing any proof or stories about how it helped their application. I think there is real value in SOLID principles and GoF patterns but so far I’ve only had uncomfortable experiences with them.

I’m working on a project now where I personally over-engineered a really simple web application by implemented an entire MVP pattern for a < 10 page website because the Codelosiphers convinced me it was the right thing to do. Now I'm stuck unraveling this highly abstracted presentation framework just to add some new features to the program.

Normally you abstract out your programs and use GoF patterns so you can add remove extensibility very simply by only changing a minimum and isolated amount of code. So far this hasn't worked out for me. Here I'm am slogging though 6 layers just to change the name of a database column and add an new one. Seems like a bit much when my, according to the codelosophers, "bad" code I'm replacing it with allows me to do it in 2.

In another project I worked with the code base was 10x as large and we found situations where these patterns only bloated up our code. We literally ignored a couple of SOLID principles and the project is highly maintainable and making the owners money.

Maybe I'm doing something wrong. However its clear from the conversations about GoF and SOLID principals that if I'm not using them I'm a bad developer. I'm not so sure about if I can trust what these guy say anymore, there are certainly examples of "bad" software that has been really successful.

Take a look at this post about the ineptitude about John Ressig, the original author of the JQuery library. The criticism looks valid and parts of the code may be utter slop and badly architected but you know what? JQuery is used in over 40% of Asp.net developers at this point and who knows how many in the Open Source world. To me its a hugely successful program that could be full of crap code.

Trying to find the real secret sauce of software development has been a true challenge. Being in the ring a little while now has made me question and doubt everything I’ve learned thus far. The real kicker is I’m always wondering if the blog owners, book writers, and bill-by-the-hour freelances are just using these practices as an excuse to sell more books, earn more money from ads, or increase the hours they bill.

Old Cheese and Blood

The best way to describe my web design and physical dress style is “not visually offensive”. I’m aware at best I’m a 7-8 our of 10 on the designer scale but I’m fairly confidant I can make something that looks pleasant enough to look at.

Now this isn’t hard or the result of practice as its usually me finding inspiration in fantastic web designs from smashingmagazine.com or any of the beautiful CSS galleries on the web so I’m a bit surprised when I see something truly ugly.

Of course I’m not going to “out” the website in question but the image in this blog post is a representation of a competitors website’s ( and I use that term loosely because they have other disciplines they market ) entire color palette.

To me that is visually offensive and I always wonder what happened in the creators mind when they designed something like that. Sure art is subjective however I’m not sure who appreciates the “old cheese and blood” look.

The Initiation Ritual

Since I started to become more serious about programming and getting my first full time programming job I’ve never really felt like part of the “tribe” you could say. I always felt like the outsider trying to be part of the game. Besides not getting programming jokes I felt like I didn’t really experience the profession enough to call myself a programmer.

In a lot of tribes one must pass a sort of initiation ritual. These rituals sometimes involve some type of pain endurance, sharp or on fire, the implementation details vary but the result is the same. After surviving the experience your tribe, your new brothers and sisters, welcome you into the tribe and you can now call yourself a member.

Today I went over to worsethanfailure.com to check out the latest IT disaster stories and one really stuck a chord in me, probably some type of major chord actually. The story involves a young and programmer who “had no commercial software experience and had only limited Web development experience” like me, who took a “C# developer job at a well-funded start-up” like me, and worked with code by “developers didn’t seem to know the difference between Cache, ViewState and Session objects” like me, and wondered what the disproportionate amount of managers did all day, like me. Wow, did I write this and not realize it?

There are some differences between the authors experience and mine. For example instead of a comfy Aeron chair I was sitting a vile creation that was probably better defined as a fancy way to store firewood ( pictured, imagine sitting in that for 8 hours ). Regardless of the differences I still connected with the author and knew that I too shared a similar experience in my programming career.

Judging by the comments in this particular article and other bits and pieces on proggit and hackernews.com it seems working in a less than ideal ( to put it lightly ) situation is just par the course.

After reading this article and getting a more solid idea of what to expect in my future programming career I feel like I’ve passed a sort of programmers initial ritual. Now I can pop into threads and discussions like this and say “me too!“. I can share an experience with other members of my tribe and feel confidant I too got the experience necessary to know that if I run into a similar situation again I can just laugh, whine with my fellow programmers, and endure knowing its just what we have to deal with in this profession.

In short I think I passed my initiation ritual, and even though I didn’t stick around a bad experience for long, I still have the burns and scars ( or backache from that chair ) to prove it.

How much can a web developer expect to earn?

An article over at ItManagement compares developer the rise and fall of developer salaries between 2004-2009 and the results just confirm the obvious.

Nobody knows a programmers value.

On one hand you have the increasing utility and ubiquitusness of software in the world always keeping demand steady for IT workers worldwide.  On the other you have the utility and ubiquitusness of developer knowledge making it really easy to get into the software game and start getting paid for it.

You don’t need a college education anymore, you don’t need to live near your clients or customers, and you can find everything you need to know to get started with any language and technology without leaving your computer screen.

7-9 years ago I was considered a savant because I could throw together some HTML pages.  These days I’m competing with kids and developers from countries with lower costs of living on craigslist.org and elance.com willing to make $5 an hour.

When you consider stories like low cost internet starups like Motormouth.com ( built for $9,800 ) and Truemors.com ( built for $12,000 ) I always worry about the future of web development and the salaries it will provide.

Maybe the embedded device / enterprise desktop app markets are different.  However how much harder is a Winforms or WPF app to make than a website or alternatively what kind of app needs a fancy OS gui when a website will do?  Maybe the cobol and assembly programmers deserve such high salaries but it just doesn’t make sense for web developers to get paid in the $70k range anymore.

The web industry is being overtaken by the cheap amateur.  Nothing new to this statement really as web developers have been bitching about the freelance cheapies for ages now.  The difference at this point is now we’ve been watching this happen for 6 years and there is no indication its going to change anytime soon.

What I wonder about is if web developers understand this is happening and trying to improve their skills to adjust or are we resisting change by being oblivious to it like the newspaper industry did?  A post over at reddit.com was about how much Php freelancer should charge for his work.  A lot of people said $40-$100 an hour and I don’t think that makes much sense anymore.

In my opinion over the next 5-6 years its going to be the web developers that bring something special to the table that are successful.  You can’t just be a plain jane web developer and you’ll have to specialize in something like SEO, social media, or high traffic OLTP applications.  Being able to design and slice up a PSD, connect to a database to spit out some rows isn’t going to be enough.

American Airlines Spanked

Dustin Curtus, a UI designer, took constructive criticism to the next level by not only taking American Airlines to task for having a website with a horrible user experience but by designing a great alternative and releasing it into the public

I'm a huge fan of what he's done with his redesign mockup.   Almost any travel website is just this huge clusterfuck of menu options and clutter that don't really help you figure out how to buy the tickets you want.  I can't speak for everybody but when I go to a travel oriented website I'm usually just looking for a baseline price to decide how feasible it is for me to travel.

For example I've been searching for plane/train tickets to Washington, CT to attend the Stackoverflow conference in October.  On almost every site I've gone to to buy tickets I couldn't just type in Hartford, CT to Washington DC and get a list of ticket options for travel.  I always had to learn some airport code or train station name to get a price quote. 

One day website / user experience designers will get over their 2003 "show all the options on the page" type of design and start guiding their users through their complex.  The first travel site that lets me type in really simple information to get a list of stations/airports/prices is going to start getting my business.  KISS/Affordance is in and I'm sure the customers will travel with whoever gets the formula right first.

Posted via email from John’s posterous

RIA Platform Mess

It should be a surprise to nobody that when the New York Times announced it was dropping Silverlight for Adobe Air the internets didn’t spring into action intelligently debating the NYT’s technical decision and arguing the merits of both platforms.  Instead the internets focused on two things:

1. Microsoft is the cause of all suffering of the world.

2. If a technology stack isn’t open source and subscribes to a set of standards it is also the responsible for all the suffering in the world.

In this discussion thread on reddit.com you can clearly see that the entire tech world is mightily confused and mystified by the RIA solutions that exist right now.  Air and Silverlight are bad because they aren’t open source. SVG, Html, Javascript are bad because the implementations of that technology aren’t ubiquitous across all browsers.  So in reality if your developing a RIA application at the moment you can use two relatively new and closed projects by two of the biggest ( and therefore evil ) companies in the world or you can use a wild west of a browser based stack and hope your app doesn’t break between nightly builds.

It seems to me that if your building a RIA application you’ve really got to put a lot of faith in your implemenation provider whether it be the Mozilla or Adobe.  You really risk complete doom for your application no matter which RIA stack your attempting to use.  All of them are unproven, nobody is using them for anything other than YATC ( yet another twitter client ), except for Basalmiq mockups, and your one patch or build away from everything breaking.

It seems the responsible and safe choice for RIA platform development right now is to focus on a stack that can work on an easily deployable like say Silverlight 2.whatever and Google Chrome, of Firefox Nightly 1.2939 and SVG/Html/Javascript and and just take any cross platform compatibility you get as a bonus.

My opinion is that if your attempting for some kind of cross platform magical idealist goals your just going to be fighting the same battles over and over again as the vendor of your RIA application releases patches and such.  For me I’m really fucking tired of fighting this war with Css/Html and I have no intentions of repeating that fight.  Especially since this time I’m dealing with a lot more complexity than making a logo float over there and getting my div’s to clear correctly.

Is that the best you’ve got?

So I'm always taking breaks from writing real code to check out an article ( or twenty ) about Php, seeing some patterns implemented, looking for best practices, etc.  Last night I came across this tip that blew my mind in its complete impracticality. Now most uselsss Php tips and best practices I see have to do with insignificant things like micro optimizations and code commenting ( which I think is bad ) but this one just takes the cake.

In a nutshell the author recommends whipping out archaic instruments of the 20th century called pen and paper while your coding and writing down what the names of classes, variables, variables your using for what piece of functionality. 

To me anyway the article writer completely misses the point of using an IDE with intellsense capabilities and also encapsulating your code into logically structured and named classes.  I can just imagine some guy out there with reams of paper he can't search through hunting for what out if he used the $li variable before or not.  How grossly unproductive can you get?  Stopping every time you add a new variable to scribble its meaning on a piece of paper?  Ick.

There isn't a larger point here although I'm tempted to mock the Php community for its… well…  I'm just not going to go there.  Anybody have any good Php resources they can recommend because I'm not exactly learning a lot with the resources I've found so far.

Posted via email from John’s posterous

Launched advancedcardiohv.com

Just launched advancedcardiohv.com a site for a cardiology team serving the Hudson Valley area of New York City.  Design was by Kathy Giarrano of giarranodesign.com.

My primary involvement in the site was to “hook up” some some nice dhtml menu functionality using jQuery as well as doing adding a small amount of video and Google Maps “flashy bits”.

What I’m trying to take away from this project is how awesome the jQuery javascript framework is.  During the process we decided that some flash and static images could be replaced by simple jQuery functionality.

The rotating blobs of text that appear around the site are filled with cardiovascular keywords.  Originally these blobs where bits of images that we replaced with html and text.  Now instead of static images these blobs will be spidered by google and hopefully increase the site’s traffic by way of search engine traffic.  All it took was a little bit of typing to reproduce the text, < 20 lines of jQuery/CSS to make them fade in and out and we’ve given the site a nice visual touch and increased the chance the doctor’s could gain a customer from it.