December 2003 Archives

Scoble hurting Visual Studio's marketing

| 0 Comments

In reply to article written by James Robertson accusing him of hurting Visual Studio's marketing Scoble writes;

I'm learning to program. Not learning to use Visual Studio. I wanna know how to branch my code. How to properly call objects. Send around strings. How to write algorithms.

I entirely agree with this statement. In actual fact (fundamentals of programming aside) I'd go so far as saying that everyone should learn the fundamentals of the dotNet Framework and how to manually do the mundane things such compile and link their applications before getting too familiar with the short cuts Visual Studio.net offers.

Visual Studio.net does increase productivity by enumerating the object model, and automating those mundane things (I wouldn't want to go back to manually compiling and linking etc!) but this can lead to a incomplete picture on how everything fits together. By going back to basics you get to fill in those spaces giving you a greater insight to the shortcuts visual studio offers you. Then if anything unexpected should go wrong you are better able to deal with it.

If we're talking about hurting dotNet's marketing then surely badly written programs are higher up the list then one man saying he wants to learn the fundamentals of programming by using note pad!! Visual Stuido.net is an excellent product but when learning to program in dotNet I personally think we shouldn't run before we can walk!

Is being a generalist really a good thing?

| 0 Comments

Let me get one thing straight before I start! Although I pay particular attention to design and usability issues I'm a generalist by nature. I fit to where ever I'm needed in a software development team; I'm just as happy coding as I am designing architecture or creating GUIs and I wouldn't want it any other way!

Of course being a generalist has it's problems, although I pride myself in having a pretty good understanding of software engineering principles, processes, architecture etc. by definition I can't know the nuances of the subject that a person with a specialism in that area knows! Today, I find myself coming up against just such a problem!

I've been part of a team which has written a website that outputs the whole of its data (screen text and database derived data) in the form of a XML document. This is then transformed against an XSL document thus separating the business and design layer, a sound architectural decision (well not quite there are a number of drawback but I'll leave that for another time). Rather unsurprisingly loading the XML stream and XSL document into an XML DOM each time and then transforming them each time is starting to cause a bottle neck in our web server's performance. After spending a little time researching about optimising the XSL (the static part of the equation) I've realised the I'm missing whole parts of understanding on the DOM and on XSL template! Also, I'm pretty sure that I could optimise the data retrieval and the following transformation to XML process to boot! How did I/we get into this problem?

In my experience being a generalist works well when in small scale or non-critical projects but when the stakes are high, people with specialist skill should be employed to make sure that security, performance, design and architecture are sound. Does this mean that a generalist should not work on high-stake projects? No because if we're honest there are one or more areas that we specialise in. Mine is user focused design , in such a situation we should play to our particular strengths rather than building by committee, having ill informed developers making critical decisions.

Where does that leave the companies who want *all* their developers to do a bit of everything instead of specialising. In my experience the products they produce are not as good as those produced by a team of people who are focused on their own area's - middleware, GUI's, databases etc. I'm under no illusion that having a team of specialist is a golden bullet to successful software projects, all team have there own problems such as communication but I am pretty confident that that product that they produced is considerably more robust, with better performance then anything a team of pure generalist can come up with!