I just picked up this link from a private mailing list but wanted to share it (and put it in my rememberall). Thanks Ken!
I read this article at SD Times (referred to by Scott Allen’s blog). Scott looked at it with a humorous slant but I tend to get frustraited when I see these kinds of attempts to draw a nice neat box around what the various positions in the IT industry do.
The reality is that computing as a profession is still too young to define in any meaningful way what the role of a software architect is let alone develop a test to judge a candidates suitability for the job. Further, the materials that we use to do our job are different depending on which platform you use, so a certification supported by Fujitsu, HP, Hitachi, IBM and Sun is definately going to be slanted towards the approaches that work for their platforms.
Today we essentially have something skin to very diverse and geographically distributed tribes of pre-historic man, each isolated enough to be developing unique approaches to tackling their problems. If you force them together too early there is a great opportunity lost to cultivate new technologies and skills.
In response to this recent post on The Daily WTF, I’d first like to point to the second last entry on The Klingon Programmer’s Code of Honour. But this post is more than a lame attempt to get my blog associated with the word “Klingon”.
When it comes to comments I actually have the opinion that less is more and I despise those educational institutions and coding guidelines which dictate the use of verbose commenting. Now I am not talking comments in the form of good code structure, I’m talking about the wall of green can often be described as a code smell.
Comments aren’t bad, they are just often mis-used, for example if you are using a low level API where the function calls really don’t describe what is going on, then a quick comment can be helpful, but seperating that chunk of code out into a method by itself would serve exactly the same purpose and at the same time contribute descriptive to the call stack in the event of an error.
So there you have it, light comments aren’t just good coding style – its good from a maintainability point of view. Now that I have put the cat amongst the pigeons let me step back a bit and acknowledge that there are always exceptions. For example, demo code is great when it has comments, especially if you are unfamiliar with most of the frameworks that are being used, but my advice is simply this – when you are compelled to enter a comment, stop, and think if there is a better way to describe this to the maintainence programmer.
Earlier this month I found a link on Larry Osterman’s blog to an article by Herb Sutter entitled “The Free Lunch Is over: A Fundamental Turn Toward Concurrency in Software”. I strongly encourage to go and read that article now. It talks about the apparent ceiling that we are hitting in the performance capabilities of CPU’s and how in order for software to get the most out of upcoming multi-core processors software will need to be designed with concurrency in mind.
The interesting thing is that at the application architecture level this has been happening for some time. Software architects dealing with extreme performance requirements have been designing their applications to be scaled out not just across processor cores but entire farms of computers. What we will witness is this design philosophy filitering down into some aspects of business algorithm development.
I’m not saying that products like Microsoft Word are going to require multi-processor/multi-core machines, but the algorithm could detect the capabilities of the environment and spawn up a thread for each available core to process up a result set that had been broken up.
Platforms that work at a level of abstraction from the underlying OS like .NET are in the best position to ease developers into this new world because the runtime can make optimisations at execution time to split the workload, but thats not the whole picture.
While .NET implements a consistent asynchronous programming pattern which is supported by the compiler and exposes a number of the underlying concurrency primitives I’ve got to wonder how long its going to be before we start to see first class language constructs in mainstream languages to cater for concurrency like Paul D. Murphy’s data bound dispatcher which is kind of like a foreach statement where each data element is processed on a seperate thread.
Personally I think that your basic CRUD-style business application isn’t where you are going to find interesting uses of concurrency (unless you are running at the big end of town – 20,000 simultaneous users or more), instead I think it is going to be these more interesting ones where it will count.
I caught up with Caroline Price on IM tonight. She’s the awesome lass who used to work with Frank Arrigo and the DE folks at Microsoft here in Sydney. She moved to Singapore to work in the regional office but is now back in Australia! I managed to convince her to start up a blog over at MSN Spaces! Hopefully Frank can update his OPML file once again.
So come one Caroline, tell us a little about yourself – what are you doing now that you are back in Sydney?
Unless you have been living under a rock you would have heard by now that Microsoft’s long awaited replacement of the ever popular Application Blocks – Enterprise Library has shipped. You can go straight to the download from here.
Enterprise Library, more affectionately known as EntLib is more than just an update to the application blocks, its an evolution. With this release the Patterns and Practices team sought to integrate the blocks in the obvious ways, in particular configuration is drastically simplified due to some new tooling (note the Design namespaces) so you don’t have to remember the sometimes complex configuration schema required to support the level of extensibility.
Just surfing the code for the first time now, it looks like they have actually integrated with the VS.NET designer which means that if you a component designer it might be possible to integrate your own components with the blocks at design time to squeeze even more productivity out of your environment.
Good work guys! I’m looking forward to working with the new bits.
P.S. Naturally, Readify is looking at its INDUSTRIAL STRENGTH .NET course to incorporate these new tools and advise on how best to leverage them.