Archive for February, 2009

Reflections on myself as a software developer 1

About a month ago, I felt myself entering one of those periods in my life where I had to face my self-doubt and challenge my complacency.  It wasn’t the first time I’ve been challenged with this, and by far will not be the last.  Each time I am reminded how important it is to be passionate about what it is I do and how vital it is to keep learning, because new learning and constant challenge breathes life into what can quickly become a monotonous and stagnant career.

In the past, I have been asked why I try to learn so many things in my time away from my day job, and why I don’t put all that extra time into what I do at my day job.  Here is the answer: that is the one way road to becoming burnt out or complacent.  The constant challenge of learning new technologies and practices keeps me on my toes, and also opens my eyes to what software developers outside my shop are doing.  This constant evolution of my skill set also makes me hold my code and the code of others to a higher standard.

I am a .NET developer now, but that does not necessarily mean that’s all I will ever be.  I am a Software Developer first, my focus in .NET is merely the current “tool for the job.”  If I was told tomorrow that everything was being converted to Ruby on Rails, I’d jump on it in a heartbeat.  I cannot, and will not, limit myself.  That being said, as a .NET developer, I do not limit myself to just what Microsoft says or what tools Microsoft releases.  I use the best tools for the job, when I have a choice in the matter.  If I were a Java developer, my perspective on this would not be any different: not all of the tools come from Sun, and the ones that do may not necessarily be the best for the task at hand.

I do a lot of work in my personal time, some evenings I come home from a day of programming to do more programming.  Some of it goes unfinished, but I still learn from it.  Some of them are not meant to be “finished,” as they are just conceptual projects to help me learn and understand something new.  To be perfectly honest, I would rather be doing some of my personal projects for clients, so there would actually be some sort of deployment strategy involved, and so my work would actually mean something.  As I am still a young developer, this is an area I’m not too terribly experienced with, but would like to be.

This year my focus is on networking, and getting out to participate in workshops, conferences, and the like as much as possible.  This has been my weak area so far, because I don’t live in one of the bigger cities and have access to a much smaller pool of developers (in fact, I hardly know more than those in my own office).  This is definitely something I’m looking to change, and learn all sorts of new things in the process.

Bob Martin Presentation on Agile, Professionalism, and Software Craftsmanship 1

Sergio Pereira recently posted two videos of a presentation that Bob Martin (a.k.a. “Uncle Bob”) did at the February meeting of the Chicago ALT.NET group.  It is a very interesting and informative presentation, and highly recommend it if the above topics interest you at all.

One part I particularly liked is the talk about software craftsmanship with respect to a martial arts-style system, where you have masters, or black belts, who train their students, and when those students become black belts, they go off and some may further develop and create their own style, which then gets taught to more students.  The idea really resonates with me, but so does the idea of software craftsmanship in general, and I would very much like to see the industry move in that direction.

Presentation: Video – XP: After 10 years, why are we still talking about it?

Q&A: Video – Uncle Bob Q&A at Chicago ALT.NET

We don’t support the (insert name) browser 4

There are lots of web browsers out there now, which makes browser support a daunting task for any web developer or designer.  It doesn’t help the fact that even though there are standards, each browser has its own quirks as to how it interprets those standards.  Add to this the recent surge in mobile web use, and things get even more complicated, as you have mobile browsers that can support most web conventions (i.e. the iPhone) and older or smaller phones which cannot.  It may be permissible, for now, to say you cannot support all mobile browsing situations, but rarely is there a good excuse for not taking the time to assure quality in a variety of desktop browsers.

By adhering to the standards, you can get a website that is compatible for most situations.  There will likely be a few places where it is not, and more than likely the offending browser will be Internet Explorer.  There have been situations where I have spent hours just trying to work out a small kink in a design because of IE’s lack of full support for established standards.  Nevertheless, with some time and testing, all of this can be worked out if the design is good and the designer is familiar with browser quirks.  Not taking the time to test multiple browsers and versions is a sign of one or more of the following things: laziness, rushed to delivery, or poor quality assurance testing.

Laziness, or perhaps more appropriately, apathy about whether or not a site or application is cross-browser compatible, is probably the worst excuse for lack of cross-browser compatibility.  This is when the designer or developer of the application only tested it in, say, Internet Explorer, and didn’t care whether or not it worked in any other browser.  When people ask for support and are asked what browser they are using, if the answer is not Internet Explorer, they are met with the response “Oh, I’m sorry, we only support Internet Explorer.”  I don’t really find that to be acceptable today.  It is not difficult to install Mozilla Firefox or Google Chrome, at least the latest versions of them, and test the site.  At least know where the issues are!  And do not even get me started on the IT guys who will not let you install Firefox on a network computer because it is “insecure” (yes, I have actually encountered one).

There are some products that are rushed to delivery without the attention to testing that needs to happen.  Really, with these types of products and/or sites, the UI being cross-browser friendly is probably the least of their concerns, because there’s probably a lot more going wrong.  Tied together with this is the constant rush to get new features out the door and paying little attention to what’s happening with the UI.  As things are added, manipulated, or taken away, the chances of every little thing on the page working across different browsers decrease dramatically, especially if they were rushed, not tested, and thrown out into the world.  If the product is actually going so far as to throw errors in certain browsers, then you really have issues.  I have come across components from a certain vendor that would blow up when you viewed them in Google Chrome or Safari.  While this component vendor should have tested their product for cross-browser compatibility a bit better, so should the company using the component for their own product which produces the same error when viewed in those browsers.

Poor, or complete lack of, quality assurance testing means that any cross-browser issues that would have been caught will not be.  Even if there is not a QA “team” in place, some testing can be done by the designers and/or developers working on the project.  UI issues are generally pretty obvious, and testers with keen eyes can identify differences as small as one pixel.  In some respects, this is very similar to my explanation for laziness above, when it comes to the person designing or developing the project of checking their work in different browsers.  Having a team in place for testing means that additional eyes are looking over stuff that the designer or developer has been staring at for hours on end, which can be very beneficial.  Alas, not all companies can afford this luxury.

Cross-browser compatibility testing has become an important part of user experience testing, and it is not one that should be taken lightly.  The more popular the site or web application is, the more types of traffic it should be designed to accommodate.  One area I see this growing even more is in mobile web browsing, especially since mobile web browsers tend to have tighter restrictions as to what content they can actually display, and display correctly.  Many sites already have separate mobile versions, and it may be that this is the best way to address that particular issue.  All in all, the number of browsers that we need to support is not getting any smaller, so our workload is only growing.

Next Page »