Tuesday, October 31, 2006

Why are all great developers not the best Architects and vice-versa?

I have seen lot of exceptions though.

First the philosophical spin. Michael Plat says that Architect are analytic thinkers and programmers are logical thinkers and hence the mis-match. He gives a simple test to figure out whether you are a Architect or not. I failed the test but I still believe that I have excellent Architect’s prospective. :)

I think that real issue is that strong programmer fails to abstract or trivialize certain aspects of system. They are too involved in details and thus , are unable to see the system from 18000 feet.

As Survic said, "abstract a little -- not too high level, but a little bit higher than programming - "design pattern."

If you abstract too high, it is time to ask your management to promote you to astronaut or ivory-tower architect designation. Don’t mistake me, I don’t have any contempt for them. I do think that Corporate needs them also very badly.

Sunday, October 29, 2006

.Net Pet shop 4.0 Architecture

Petshop Architecture 4.0

I have used earlier Petshop Architecture. It left a mixed feeling. It was simple to start with but not extensible enough for complex distributed computing needs.
I decided to revisit the new Petshop Architecture 4.0. My thoughts

Architectural ConcernObservationMy Rating
High level Diagramhttp://msdn.microsoft.com/library/en-us/dnbda/html/bdasamppet409L.gifA+
Exploiting ASP.NET 2.0Generics ,Provider ,Caching, Transaction A+
Seperation of Business Logic and Persistence LogicBLL,Model,
Pattern for transferring data between Business Layer and Data LayerModel(Data Tranfer Object)A+
Optimized for Distributed ScenarioWhether Chunky Interfaces are possible between BLL and DLL Under Evaluation
Is optimized for Service Oriented Architecture? Under Evaluation
Business Rule Processor :Under Evaluation
Businses Layer Richness Under Evaluation


Setting up PetShop Application
Setting up .Net PetShop Application has been a very daunting and time-consuming exercise.

1. Do read the ReadMe.Html File. It contain very critical steps to performed before one can run the application

2 . Try running the InstallDatabases.cmd.

3. You can Install SQL Express from this link

4. If you get error that your script is failing because remote is not allowed for SQL Express ,try this link

5. If it does not work like it did not work for me , go to your
Edit \.NET Pet Shop 4.0\DatabaseScripts\Sql and run the individual scripts.

Under Security Folder in SQL Server Management Studio Express, do add your user account.

6. Edit \Web\Web.config:
a. Modify the server path in SQLProfileConnString, SQLMembershipConnString, SQLConnString1, SQLConnString2, and SQLConnString3 connection strings, using host_name\instance_name schema. Example: server=(local)\sqlexpress;.

7. Add this section after decrypting the Web.Config file using the utility DecryptWebConfig.bat

More Information

{"The database 'MSPetShop4' is not enabled for SQL cache notification.\r\n\r\nTo enable a database for SQL cache notification, please use the System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications method, or the command line tool aspnet_regsql. To use the tool, please run 'aspnet_regsql.exe -?' for more information."}

C:\Program Files\Microsoft\.NET Pet Shop 4.0>aspnet_regsql.exe -d MsPetShop4 -ed

8. You cannot enable Notification with SQL Express, so just comment the code and voila.

Proposed changes

Monday, October 09, 2006

Agile Methodology- Process vs Anti-Process

Survic wrote very interesting comments in response to my observation on Rockford Lhotka's blog.

Since Survic has not recorded in his blog, I am reproducting it in my blog :)

Survic Wrote

Vikas said: “At least, it is giving some structure/discipline/framework where none existed”.

That remind me a weird observation of TDD in .net.

Basically, it is the downside of the same fact that Vikas pointed out.

In java, TDD represents the lightweight force -- it attracts guys who are tired of heavy process stuff. As a result, most practitioners in java TDD tend to cut corners: 100% unit testing, GUI unit testing, property unit testing? -- shut up and give me break! That is so “natural”; that goes without saying: come on, this is XP!

However, in .net TDD attracts guys who can waste time!!! -- I am sorry to say this, but it is the insight I got after a lot of surprises I got from .net’s TDD guys – TDD in .net represents process, not anti-process. It is very weird and sometimes even shameful and dishonest, in the sense that TDD is anti-process -- how can a person abuse TDD to drive the agenda to create a heavy hierarchy!

This weirdness in .Net TDD is that classic VB’s RAD is much more lightweight, so, people who likes lightweight will not be attracted to TDD. And people is the determining factor of a (sub)culture. So, TDD in .Net is pro-process!

Combining the above factor with another factor that TDD, by its default configuration, is against consulting designing, it is no wonder a person who is working on consulting framework design, and has a healthy dose of classic VB RAD sense, will be antipathy about TDD in .Net.

I am with you, Rocky ;-)

I was not sarcastic when I say “I am with you” ;-), let’s me explain:

1. We can re-interpret XP/TDD to such way that it supports or even requires using framework. It is really very simple: using a “metaphor” in XP/TDD really means picking a framework among a few well-known frameworks. Consulting in design phase means to establish the “metaphor” for a project. It requires tear apart well-known frameworks and combine those parts together.

2. The pro-process factors, which are minimal in XP’s origin (small talk), and are still heath in java (because it is fighting with heavy processes), become absolutely ridiculous in .Net -- because XP/TDD is actually fighting the classic VB RAD, go figure! So, it is right to cut those pro-process craps in TDD in .net.

I think that Survic has made very excellent, thought-provoking observations. After reading this, I think that I know why I have reservations about using extreme programming for a industrial-strength software (because of my process oriented bias).

I think that neither anti-process morts nor process-oriented purists are going to embrace extreme programming in .Net arena, it is going to restricted to a small cult of programmers ( I would definitely use it for short term project)

For record, I do use a hybrid of Agile and Waterfall Methodologies very successfully.

Note: I am going to refine my thoughts