Thursday, November 30, 2006

Roadmap for learning C#

Finally I finished the first C# tutorial and refreshed my knowledge. I also arranged a programm of tutorials for my advancement in c#:

First Step: Pass through some C# tutorials with ascending degree of difficulty
Beginner
http://www.functionx.com/vcsharp/csharp/Lesson01.htm
http://www.devhood.com/training_modules/
http://www.csharp-station.com/tutorial.aspx
Advanced
http://csharpcomputing.com/Tutorials/TOC.htm
http://samples.gotdotnet.com/quickstart/
Pro
http://www.geocities.com/jeff_louie/OOP/oop.htm


Second Step: Get familiar with the dotnet-framework.
Code simple examples with the most important namespaces of the dotnet-framework.


Overview of the most important .NET Framework namespaces.



Third Step: Continuous reading of .NET coding articles
Here are some good sources:
http://www.codeproject.com/csharp/
http://www.codersource.net/codersource_dot_net.html
http://www.developerfusion.co.uk/csharp
http://www.csharphelp.com/
http://www.example-code.com/csharp/default.asp
http://www.codeguru.com/csharp/
http://www.mastercsharp.com/
Most important: MSDN Patterns & Practices Site!


Fourth Step: Get familiar with the new concepts of .NET Framework 2.0
Windows Presentation Foundation (WPF)
Windows Workflow Foundation (WWF)
Windows Communication Foundation (WCF)


So this is the C#-roadmap for for the next time. Of course this studies will be accompanied by the other knowledge-areas (Architect, Engineer and Project-Management). So I am not afraid not to know what to do in the next time.

Concerning Java - at the moment I am concentrating my efforts on C# and not on refreshing my Java knowledge. This is a personal decision that I set my personal focal point there. In my opinion, a software architect should know both languages. I just decided to start with C#.

Thursday, November 23, 2006

What a Software-Architect must know...

Concerning my progress (in the area of coding): I am still working through the first C# tutorial. Just finished lection 16: Delegates and Events. I got stuck to this topic a bit, because the tutorial only scratches the surface of this important topic. So I intensified my studies on that subject which took a bit more time.

Sometimes I ask myself, why am I so slow? The answer is, there is so much to learn additional to learning to code. Currently I read a general basic book about software-architecture (in german): Effektive Software-Architekturen (Effective Software-Architectures) written by Dr. Gernot Starke. A great book in my opinion for a starter like me. Among other things the book proposes a way how an architecture is iteratively developed:

A) Collect information about similar problem/solutions
B) Develop a basic system idea

C) Iteration Cycle
1) Identify influencing factors and boundary conditions for the architecture
2) Identify projectrisks
3) Develop solution-strategies

Ongoing: Documentate your architecture!

Also I really love listening to and watching the many existing podcasts and webcasts. There are MSDN Webcast-Videos, MSDN Podcasts and the MSDN Arcast-Shows with Ron Jacobs. There is also the Software Engineering Radio a non-microsoft podcasts that I ran across lately founded by Markus Voelter. These are great for a long car ride or as a listening lecture for the evening, thus keeping track of the current technologies!

Knowing about the most important technologies is one point of a long list what a software architect should know. The SEI (Software Engineering Instiute) of the Carnegy Mellon Institute has made an interesting study about "The Duties, Skills, and Knowledge of Software Architects".
I think the list and proposals fit well to my separation in architecture, engineer, developer and project-manager!

Tuesday, November 14, 2006

Current Software Architectural Concepts

As a preparation for the job interviews I studied the current most important concepts of software-architecture. I identified three important concepts which I will focus on:

  1. Service Oriented Architecture (SOA)
  2. Model Driven Architecture (MDA)
  3. Event Driven Architecture (EDA)
There are plenty of ressources where these concepts are described, so I will just give a very short summary.

Service Oriented Architecture
SOA is a management concept which leads to a flexible IT Infrastructure which is driven by business needs. The core idea is to provide the whole enterprise functionality as an amount of different independent services.
The main goal of a SOA is the construction of an IT infrastructure which is geared to business processes. Changing business processes need a flexible IT which can adapt to these changes. To enable this flexibility the reusability of functionality and support of distributed systems are other goals of a SOA.

Model Driven Architecture
The MDA tries to automatically generate code via models. The models can be defined in UML so they can be developed in cooperation with the customers. Software changes should only be made in the models, not in the code.


Event Driven Architecture
Components in an EDA communicate via events. Because events are a special kind of message the EDA makes use of a message oriented communication via message channels and the publish-subscribe integration pattern.




Tuesday, November 07, 2006

Drawing for a New Job

My Wacom grafic tablet has finally arrived and I started my drawing lessons. After training circles, lines and boxes I drawed some first elements which you can admire here. It's a start and it's really fun! But you would not believe how difficult it can be to draw a nice round circle.

Look how the hatched areas give the impression of a three dimensional ball.

My Latte Machiato glass. To draw an ellipse is really really tricky!


This Painting is called: "The Lamp - still burning".

The C# tutorials have to wait at the moment, because I have to prepare for two upcoming job interviews in the next two weeks.

Please keep your fingers crossed for me!