Ok, so there is no doubt that it is difficult to become a software architect and extremely difficult to become a good one.  I read people talking about experience is key, but what about the experience gathered. 

I am developing all the time, and I would class my self as a CAN DO developer who is improving each job that comes.  My issue is my inquisitiveness, in that I might have done something once before, but then I think:

“Hmm ok, but if I do it this way, or If I use this pattern or this method or this technology it will be better | it will be faster OR it will be quite cool to try even if I am unsure of the outcome!”

I have found it extremely stressful, rewarding, tiresome and fulfilling to work for myself, but in the process I have come across so many different ways to, well, SKIN A CAT.  Lets think about Object Relational Mappings ORM, now when you get to this juncture what do you choose:

  1. Create your own, writing it by hand.
    1. Well this sounds fun, but unless you are planning on working with a small data store you have quite a task ahead of you. 
  2. Create a dynamic one through reflection
    1. This is one approach recommended by the Patterns of Enterprise Architecture By Martin Fowler
  3. Create a Code Generation Policy.
    1. Now if you combine the following then you will both learn and have an extremely useful tool in which to create your ORM for present and future projects.:
      1. Point 1 above
      2. A code generation tool e.g. Code Smith
      3. Some time to learn the syntax of the Code Generator
  4. Using a Sub Framework for the ORM e.g. NHibernate, NetTiers, CLSA etc…
    1. Again you would combine this point with a code generator, or you could create by hand.  Would get tedious and prone to human error though
  5. Use ADO.NET
    1. Another option which is recommended by Martin Fowler.  ADO.NET is an extremely powerful way to work with Disconnected Data.
  6. Use LINQ to SQL
    1. Great tool, although I have read that its future is uncertain and the focus will be directed on the ADO.NET Entity Framework.  I love the delayed execution and also the PIPES and FILTERS pattern.
  7. Use the ADO.NET Entity Framework
    1. From my initial exposure, I have found this to be quite amazing.  My first exposure to it has been coupled with ASP.NET Dynamic Data.

So off the top of my head there are 7 points which can also me combined in some cases and these will handle how you communicate to your Data store, quite commonly a database.  BUT WHICH TO USE.   From a risk assessment standpoint, I think it obvious to say that 5, 6 and 7 are the least risk, as in they are tried and tested frameworks from Microsoft themselves with powerful wizards and very little setup and do not require that high a level of knowledge of programming to start using.  Using 4 and 3 together come in next with 1 and 2 bringing the most risk, BUT if you choose 1 or 2 combined with 3 then of course you have the ability to build a complete tailored approach to your Domain Model or SOA.  I am not sure if risk is the correct word, may be complexity and the requirement of experience.  I think that is a better point.

Another point is Test Driven Development.  Purists would say that you should write a test before you create the object which you want to test.  I am find with this, but what if the underlying technology you are getting into is new and you are still un aware of its capabilities.  What do you test, I would need to write some code to see its functionality first and then see where I am at with it.  Once I have an idea of what I can do, then I will then know what to test, so definitely a research stage when pursuing the bleeding edge.

I would love to find out about testing TSQL, as ,my work leads down that route often and sometimes I get stuck with a problem which requires a query that to me, is a head ache.  Ok I want everything from table A and even if it does not exists in Table B with a sub query for the conditional count yada yada yada which involves 5+ tables with complex query parameters.  Then you have the Stored procedures, the scalar, table functions, views, indexes etc…. 

I think my point with this post is the level of learning that you can get drawn into when you dig deep enough, I feel it is like you get to the edge of a cliff, and you are peering over, then all of a sudden WHOOSH, you get blown off the edge and you are surrounded with hoards of material, tutorials, reviews, white papers, books, videos, Do’s, Don’ts, Design, Discussions, Difference of opinions etc….

One thing that is always in the back of my head at the minute is I read a quote from Bjarne Strousup where he says he teaches you how to program and as a by product you learn the language.  I love this quote as it tells me that I can now apply my programming in other languages, and guess what I DO!  What a rant! Right I am signing off.  I found the following image which I thought was extremely good!

 

lightweight-system

SOURCE: http://niksilver.com/

Cheers,

Andrew


Thursday, February 12, 2009 12:43:43 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer
Feb
05
2009

Where am I at?

Literally I am at my desk, looking at Windows Live writer with a bottle of Fosters with Lime in.

Programmatically lol here is my current brain dump,

The things running through my head at present are (and I do mean running or SPRINTing):

  • SCRUM
    • I am, like a lot of freelancers the Scrum Master and Team rolled into one
  • Agile Development
  • Test Driven Development
  • XP
    • Being that I am a freelance programmer you could class my team as myself and the client, the project always changes so I always want to be able to adapt for it as quick and efficiently as I can, with in boundaries:

I cannot make a car in the off chance it needs to be a boat and sail to Spain!

  • C++
    • This is a topic, Language, and gateway to something I have wanted to tackle for a while now.
  • Maths and Physics
    • This goes hand in hand with the above point I feel and with any programming language you want to take on, I mean applying it with 3D in mind is mind blowing.
  • Enterprise Architecture
  • Debugging

I mean I cannot see when these topics will stop running round my head as they are part of a complete WHOLE of programming.  Another thing which happens to me is the following: So there are lots of really interesting service api s out there like EBAY, AMAZON, BET FAIR etc…, but you look at them and then you start thinking.  it is the thinking part which restricts me lol, as I continue to think after thinking of an idea.  It is a vicious circle I need to learn to control.  BABY STEPS one might say, or ROME WAS NOT BUILT IN A DAY etc… . 

Then after Service APIs you have Software SDKs, man the choice is endless, you can NEVER EVER get bored becoming a programmer, unless you need to work, and then a task that is given to you maybe time consuming but not necessarily difficult and constraints that are on you prevent you from questioning the given methodology, you literally have to DO AS YOU ARE TOLD.

As I said this is a brain dump and things are just spewing out at present.  Another thing I like to think about is associating images with the mood I am in or the problem I am given or my view of the problem or the solution.  Standing on top of the Eiffel Tower looking to the ground saying, IS THIS A BIG ENOUGH PERSPECTIVE OF THE PROJECT, WHAT PROJECT THE PROJECT IS A DOT, TOO FAR!!! 

Well one benefit of this post is I have seen a few areas in which I would like to write a blog post about and those being the bullet points above.  I am not sure who this applies to but writing these blogs is almost therapeutic and definitely progresses the learning curve through discussion.

Cheers for now,

Andrew


Thursday, February 05, 2009 9:29:25 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer
Jan
03
2009

Settling In

Welcome new blog, how are you.  I have downloaded dasBlog for my blog and currently setting up.  I like everything so far and the design looks really user friendly and also developer friendly I like to say.  The macros available to you and also the extensibility of allowing you to create yourown macro through the API is a really nice feature.   OK so things to do:

  1. Check everything is integrated from feed burner perspective
  2. Check out the macros on offer and customise the display

There are other things I need to do but at this moment I am testing out the Windows Livewriter integration with which I use to write my blog entries for this and also the one over at http://weblogs.asp.net/andrewrea

I have decided to have two as I am developing on a few platforms and languages and my blog over at asp.net is really for things revolving around ASP.NET and .NET in general.  I want to also Blog about JAVA, Action Script, Flex and definitely my learning of C++ in the dawn of C++08.  Anyway lots to do this year and not enough hours in the day.  Best get started!!

Image Test, this was our most recent holiday which was Canada and it is Lake Louise below.  I think dasBlog sends the image to the MetaWeblog API which is really fast:

Photo009

To keep inline with my chosen title for my personal blog, I am going to choose a set project and work through different avenues of its construction including database, distributed architecture, the web, desktop clients.

I have not thought of the domain name yet so like Microsoft does, and for good reason I suppose, I will forge a code name for this:

Project Name: Orion's Belt

Meaning behind the code name: I suppose I chose this name due to the fact that there are numerous stars on this constellation and my philosophical comparison in that the stars are the languages or platforms and the project as a whole is the constellation i.e. each are a part of the whole.

  • C#
    • A WCF base layer for a Regular Expression Create and Share Service.
  • Java
    • A Java Client to consume the WCF Service, interoperability.
  • ASP.NET
    • A Web site to consume the WCF Service and also a look a Performance Counters and how an ASP.NET Website can also make use of these.
  • C++
    • Boy this is the hard one.  I have wanted to learn C++ now for about a year, I see it as the biggest step in my Career, and I cannot wait to leverage its power.  Anyway this will be a Native C++ Client to consume the WCF Service and will use the MFC, interoperability.
  • Action Script
    • This will be an Adobe AIR client for the WCF Service, interoperability.
  • SQL Server 2008
    • The actual database which will act as the storage layer for the project.

Deep Breath, and .......go!

Cheers,


Andrew


Saturday, January 03, 2009 3:00:10 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer