Wednesday, December 13, 2006
MCPD: Enterprise Applications Developer
To get the certifications I have to pass five exams:
Foundation
1) Exam 70-536 TS: Microsoft .NET Framework 2.0 - Application Development Foundation
This exam covers the topics I am just dealing with in the C# tutorials so I map this to my definition of things a software-developer must know (at least if he uses c#).
MCTS Credentials
The next part consists of three exams to get the Microsoft Certified Technology Specialist (MCTS) credentials:
2) Exam 70–528: TS: Microsoft .NET Framework 2.0 - Web-Based Client Development
3) Exam 70-526: TS: Microsoft .NET Framework 2.0 - Windows-Based Client Development
4) Exam 70–529: TS: Microsoft .NET Framework 2.0 - Distributed Application Development
This exams still cover topics for a software-developer.
MCPD: Enterprise Applications Developer Exam
This is the final exam and this exam covers topics of a software-engineer, therefore climbing the ladder up for becoming a software-architect.
5) Exam 70–549: PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework
So this is the "achievements roadmap" which can be mapped to the C#-learning roadmap.
For now...let's go for 70-536!
Thursday, December 07, 2006
Mock Objects Rock!
For supporting the refactoring which will occure by the constant change of the code I installed NUnit again. After completing the NUnit Quickstart on Nunit.org I studied the article Test-Driven Development in Dotnet by Peter Provost which gives a little deeper insight in NUnit.
In the second half of the article a method for testing user interfaces in a Model-View/Controller environment is introduced by also introducing Mock Objects. That example really hit me. So I quickly downloaded http://sourceforge.net/projects/dotnetmock/ and tried the example. It's great how the mock-objects simulates the view in that example, and by just passing a View-Interface to the model you can exchange the mock-view with a real winform or webform.
The example is based on an idea of the article The Humble Dialog Box and reading Martin Fowler's Mocks Aren't Stubs article will complete the introduction to mock objects and testing.
A really important topic for software-developing, imho. Also i recognized how my code quality improved by using the TDD approach (keyword "Tell Don't Ask" Principle!).
Thursday, November 30, 2006
Roadmap for learning 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...
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
- Service Oriented Architecture (SOA)
- Model Driven Architecture (MDA)
- Event Driven Architecture (EDA)
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


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!
Sunday, October 29, 2006
Excursion: Game Development
Then…was it accidentally that I discovered XNA while browsing the sites for learning C#?. Game development in C# with XNA Game Studio Express which is based on Visual Studio Express 2005. It was like a revelation! Although my first XNA Game by following the tutorial wasn’t much more than a screensaver, it is nevertheless the first step.
And then...the same colleague introduced me to blender, an open-source software program for 3D modelling and rendering. The first tutorial wasn’t real fun (building a stupid table) but the example of Gus in the Wiki-book really impressed me.
So I will try some 3D modelling…don’t games need 3D modells?But to become a 3D-Modeller you need to be an artist. You cannot model what you cannot draw! Since some time I possess a book “Learning to draw”. So yesterday I downloaded different graphics software (there are two kinds: raster and vector based) for examination: Corel Draw, Gimp, Macromedia Freehand, Paint.NET (written in C# and open source!) and of course Photoshop. I know…I should begin with drawing on plain old paper to train my skills but I made a compromise: Yesterday I ordered a used Wacom Graphire3 for only 49,90 Euro.
My new Wacom Graphire Tablet
So, isn’t it great when hobby and profession complement one another?
Sunday, October 22, 2006
Looking for C# Tutorials
Looking for a more structured approach
Just looking for code snippets and testing them seems not to be the right way for me. I want a more structured approach. The code snippets and all that blogs of C# Developers (e.g. MSDN Blogs) seem to address more experienced developers. So I have to establish a knowledge basis first. My first idea was to study the .NET Framework documentation and to learn about each namespace as if it were chapters of a book. Not very motivating.So I looked for C# Tutorials on the internet. And boy, there are many! I consider the advancement from one lection to the next as very satisfactory and therefore motivating. Very good different .NET Quickstarts can be found on the official Microsoft community site GotDotNet. But in my current situation I am looking for more “guided” tutorials in C#.
C# Tutorials
One tutorial which must not be taken too seriously can be found at csharphelp.com. You don’t need an IDE for that tutorial, just plain notepad and the command line. The four short lessons are partially a bit ironic and the last lesson ends with an interop example with a C Library.The first really good C# tutorial I found was the tutorial Visual C# Fundamentals on the website FunctionX. In 24 very detailed lessons the basics of the C# language and even some basics of information technology like data structures and object oriented programming are explained.So the FunctionX tutorial is the tutorial I will start with. I will publish a complete list of recommendable C# tutorials later.
Sunday, October 15, 2006
Snippet Compiler vs. Visual Studio 2005 Express Edition
While looking for a lightweight C# Editor to refresh my C# knowledge, I stumbled across the tool Snippet Compiler written by Jeff Key. The tool needs less than 2 MB of hard disk space besides the installation of the dotnet framework. Installing is easy: just copy the files in a directory.
The editor itself is very nice. It resembles the visual studio editor, with a very limited intellisense function but without the overhead of a whole project structure. So it’s great for the quick writing or testing of code snippets. Of course there is not built-in C# documentation so you have to use the documentation of the .NET framework.All in all it’s a very nice tool and definitely better than using notepad and csc.exe!
Visual Studio 2005 Express Edition
So I started looking for C# Snippets to refresh my C# Knowledge. I checked the german site http://www.dotnet-snippets.de/. There you can look for different code snippets via tag keywords. So I randomly selected one code snippet (ReadFromClipboard), copied and pasted it and after adding the right using directive it worked! Great, my first step in becoming a really good C# Developer…While examining the site a bit more I noticed the announcement of a Snippet Contest which ends on December 15th. The best code snippet will win a Windows Vista Ultimate Version. What a boost to my motivation! So I will try to submit an own code snippet in December.An important hint on the site was the proposal of the editor which should be used: Visual Studio 2005 Express Edition. As it is provided by Microsoft for free, I downloaded the software. With 50 MB to download and 100 MB space on the hard disk it is definitely larger than the snippet compiler. But it is worth the space!
The Development Environment of Visual Studio Express 2005
As a bloody beginner I don’t notice the differences to the full version of Visual Studio, so I am really happy about it. At that point when I discover the limitations of the express version I certainly will already be at least an advanced C# developer. So this version is great for me at the moment.Besides: I also downloaded MS SQL Server 2005 Express Edition. I guess I will need it later for sure!
Sunday, October 08, 2006
Disciplines of a Software Architect
- Software-Developer
- Software-Engineer
- Software-Architect
- IT Project-Manager
Of course I have to enlighten these roles more in the future. The upper paragraph is a first shot to describe the possible roles of a software-architect and will be enhanced in the future. But I think the contents of my studies will allways fit in one of these four roles and bit by bit it will become apparent what these roles really mean and in what way they are different.
Sunday, October 01, 2006
The First Step
This is my first blog entry (not counting the german entry above). This blog will accompany my way in becoming a hopefully really good software-architect. I hope this blog will motivate myself to go that way. And hopefully during this way my english will improve (thanks to leo the online dictionary in advance: http://dict.leo.org/).
First of all some short information about me:I am a 29 year old computer scientist. In 2003 I made my degree as graduate computer scientiest (Diplom-Informatiker (FH)) at an university of applied science (Fachhochschule) in germany with telecommunication as a focal point.
In my first job I developed applications in ASP and later ASP.NET with a MS SQL Server Database. Because I was the most "experienced" developer in the company I had no other presettings how to develop .NET applications than my own understanding. At least I visited a short 3-day training in development of ASP.NET applications and learned some things about component oriented development. But to be honest - the application wasn't really big and nevertheless the architecture was not really good.
Although I liked "hacking" code in that small company I took up another job in a really big telecommunication company in summer 2004. One reason was some more money, but the main reason was my desire to learn more about professional software development.
Now after somewhat more than 2 years I have to admit that I didn't reached my goal in that company. I learned some things about project management in large enterprises but not very much about professional software development. Since all the time I didn't wrote one single line of code - at least I should have continued coding as a private hobby. But I didn't, shame on me!
So this is the background story. This time I will keep my target in sight and do the right things to become a software architect and develop really good software. There are three important steps to do:
- Start studying the art of IT architecture.
- Find a job where I can work together with really good developers, engineers or architects.
- Document my progress in this blog.




