Thursday, March 29, 2007

Learn the art of system development

I read a good post on "how to prepare for a career in software development" by Jeff Atwood. This blog post really got me thinking about this topic. As Jeff points out the only way to learn is to be on the battlefield. I totally agree. What many developers seems to forget is that software development is a handicraft. You must learn from the bottom up. You must write your rows of code and you must make your mistake to become a good software developer or architect. Of course you can (and should) learn from mistakes other people made and you take small short cuts when reading the work of others but you can't skip some steps in the process.

Fairly often I see new developers (and others for that matter) trying to take short cuts and skips some steps. Sometime this works out but this often lead to small or bigger holes in the map of knowledge. This often ends up with problems for the projects they works in. So be patient and learn step by step. There are no cheap short cuts.

The most effective way to learn is by try - evaluate - refactor. Nobody makes all decisions right. At least not the first time. There are always thing to do better. Often you don't know all requirements in the beginning and often the requirements and environment shift along the process. Do what you think is right and then evalute the outcome and learn from that and change the decisions for the better. Work with constant refactoring. I haven't met somebody that made all right on the first try.

Jeff has an list of actions to get better. A couple of my actions are the same. My list.

  • Start your own hobby project. Gather some friends with good ideas and implement one or many ideas. Learn from each other and have fun while doing this project.
  • Try to get a mentor. To have a more experienced person to talk to and to help you developing yourself is very helpful. Someone who can guide you is worth so much.
  • Start a blog. Start with small ambitions. Try out what you want to write about and how you want to write. Start to read other blogs to get your own thinking going. Comment other posts and then start writing your own articles. You don't have to be to too serious at first.
  • Participate in user-groups. It's amazing how many good free seminars there are. Instead of reading and searching for information you can go for a seminar listen and get some free food instead. More fun and you learn more. I always gets a surprice when I see that out of all developers and architects in Stockholm there are only like 30 people in this seminars, and it's always the same guys.
  • Listen to podcasts and see webcasts. Microsoft, .NET Rocks, ARCast etc give out great podcasts. Listen and learn.
  • University. In Sweden the universities are free. There are alot of good classes for C#, MSF, .NET architecture etc to attend.

The role of the architect

This is a tips for a good podcast. This one is from ARCast with Ron Jacobs and it's about the architect role. http://channel9.msdn.com/ShowPost.aspx?PostID=195719

The description of the show: "What is an architect? What do they do? What kind of skills do I need to become an architect? These are the questions that are on the minds of so many developers today. Perhaps you have thought about becoming an architect and you want to know these answers. Well my friend, you are in luck because today we have Robert Daigneau Director of Platform Architecture for Monster.com here with us to find out if you have what it takes."

In one of the comments from the show there are a link to a good article in the subjet. Read it here. This article is talking about the skills needed for a good architect.

  • Software Engineering Skills
  • Software process
  • Project Management
  • Business Skills
  • Technology Expertise
  • Implementation Expertise
  • Social skills

Podcast

A good podcast from Dag König. It's an old post but it's still interesting. The podcast is about SOA and the SOA work on SAP. It's very interesting to hear how the work was done and how they thought through the implementation. Dag interview Lars Lindberg who is IT-archicts for SAP about how the implementation has gone and what they has learn along the way.

The podcast is in swedish.
http://buzzfrog.blogs.com/zabrak/2006/01/av_38_intervju_.html

Wednesday, March 28, 2007

MSMQ management tool

I have developed a MSMQ management tool called IMQT together with a colleauge Tomas Wallin. It all started when I developed another software and I needed some kind of test tool to send, read and manipulate messages in MSMQ. I thought that if I wanted this tool other developers/testers also wanted one. So I involved Tomas and we used our nights and weekends to write this software. The tool started to grow and then we wanted to try to make a more complete MSQM management product. All most needed functionality for MSMQ management is implemented. You can manage queues and messages. Search for text in messages and compare XML. Try it for yourself. Download the software here.

The tool is free to use. The only constraint we have is that you give us feedback if there are any functionality you need/want, if there are any changes you need/want and if there are any bugs.

So try it out. We hope you enjoy it. Please contact me if there is anyting...

The tool only works on Windows XP and above and we use .NET 2.0. You got a help-file included in the tool but it need some updates.

Standard system

This post is in swedish.

Det är intressant att höra vissa personer prata om standardsystem som en lösning då den egna systemutvecklingen inte fungerar. Nästan som en silver-bullit som ska lösa alla problem som man haft hittills. Det går snabbare och blir billigare säger man. Alla problemen försvinner. Jag tror att standardsystem fungerar jättebra i vissa organisationer och för vissa verksamheter. Det som måste göras före ett införande av vilket system som helst är att fixa till problemen i den egna organisationen först. Samma problem kommer annars dyka upp med den enda skillnad att man har mindre kontroll över projektet och har därför mindre chans att rätta till det som gått snett när man inför ett standardsystem. Det handlar nästan alltid om ledningsproblem när projekten går snett. Dålig styrning och planering mm.

Jag läste en intressant artikel i Computer Sweden idag om Ericssons implementering av SAP. Efter 13 år verkar det äntligen gå bra i projektet och idag är SAP infört på fler än 100 bolag i över 50 länder. Problemet verkar ha varit samma problem som i de flesta projekt som går dåligt, dålig ledning och styrning. Carl-Magnus Månsson som är CIO för Ericsson koncernen listar fem stora utmaningar med införandet av affärssystem.
  1. Effektivisera processerna på ett standardiserat sätt.
  2. Skapa en flexibel arkitektur så att det går att lyfta in och ur funktioner ur ett standardsystem.
  3. Minska antalet system som används och säkerställ kostnadsreduktion hela vägen ner till reducerad hårdvara.
  4. Skapa en gemensam informationsmodell.
  5. Leta efter verksamhetsnära it-kompetens både bland verksamhetsfolk och bland it-folk.

Jag tror att punkt ett, fyra och fem är väldigt kritiska. Jag skulle vilja säga att dessa fem punkter plus att projektledningen samt styrning och ledning högre upp i organisationen är stora utmaningar i alla systemutvecklingsprojekt och att de ofta är alltför underskattade.

Sista delen i artikeln handlar om andra organisationer som också haft stora problem med införandet av SAP. Tex så skickade AGA ut julkort ett år där de bad alla kunder om ursäkt för de problem de haft under året på grund av införandet av SAP. Artikeln avslutas med att säga att "det finns också företag som inte har problem med affärssystem. Särskilt de som inte satsar på stora affärssystem. Som exempel på sådana företag nämner en källa Scania, Ikea, H&M och Toyota".

Läs mer på Computer Sweden del 1, 2 och 3 här och del 4 här.

Cool site and pictures

I found a cool site. Nothing fancy or anything but I like it. It's http://www.world66.com/ where you can register and add the countries you have visited. I visited 13 countries and that is 5% of the countries in the world. Check out my visited countries here.

I really love to travel. I just been to 13 countries but my favourite country is South Africa. I have read that South Africa is voted for the most beautiful country in the world. Maybe it's true, I don't know but you should all go there. Check out these pictures Western Cape, Free State, Camps Bay... Check out this site and this site instead.

Another favourite place is New York City. I've just been there twice but every now and then a big craving for NYC then I go to this site to calm it with some pictures of the big apple.

Tuesday, March 27, 2007

Webcast about Service Factory

I just saw a great webcast about Service Factory. See it. It gives you a great overview over how a Software Factory works and especially Service Factory. It's called "MSDN Webcast: Using the Web Service Software Factory (Level 300)". Download it here.

What is MSMQT?

In one of my project we should send messages to a Biztalk queue. I thought Biztalk used the regular MSMQ with it's own interface but.... First of all it's called MSMQT and the T is for transport. The Biztalk solution was created to get around the 4 mb limit in the usual MSMQ. You can send the messages to MSMQT in the same way as via MSMQ the difference is in how the messages is stored. For MSMQT the messages are stored in the Biztalk message storage. This means that you cant see the queues and the messages in the MMC.

Here is a short description about what MSMQT is .

Monday, March 26, 2007

IASA Sweden

IASA (International Association of Software Architects) has just started a swedish chapter. On the first meeting about 200 architects came to listen to the interim commitee and a couple of other speakers. After the meeting there was mingle with food and drinks. It was a nice kick off for the swedish chapter.

Read more about the swedish chapter here (in swedish) and there are a link to join IASA. The fee are 50 dollar per year.

Policy injection Application Block

In the Enterprice Library 3.0 there are a new application block, Policy Injection Appliction Block (PIAB). This is very cool. Now you can write policies in your config file.

As David Hayden explains it "Put simply, the Policy Injection Application Block can save you from having to write all those boring validation, security, exception handling, and security-related code and instead allow you to write policies in your configuration file associated with them. These policies can then be mapped to classes in your application based on matching rules. The matching rules can match a policy to an entire assembly, a namespace, types, methods, method signatures, etc."

Read more about it in David Hayden's blog and in Tom Hollander's blog.

Free seminar

Välkommen till frukostseminarie med Kyle Huntley

– Tema ”Software Factories & Domain Specific Languages”Avanade arrangerar ett frukostseminarie onsdag den 18 april. En av våra mest erfarna arkitekter, Kyle Huntley, kommer till Stockholm och vi vill gärna ge dig chansen att lyssna på en framstående visionär inom framtida applikationsutveckling och tjänsteorienterad arkitektur (SOA). Kyle är mannen bakom Enterprise Library och flera av Avanades Assets (ACA.NET och SOA Factory) och ingår också i flera av Microsofts expertgrupper.

Plats: Avanades lokaler på Sveavägen 25 i Stockholm
Tid: Onsdag 18 april. Frukost serveras från kl 07.30.

Seminariet beräknas börja kl 8.00 och slutar kl 9.
http://www.avanade.com/about/news/news_detail.aspx?id=1026

Word of the day

The word of the day is creative laziness.

A good developer/architect are by nature lazy. You always check with your colleagues and on the internet to find the solution of your problems and you don't try to invent the wheel all over again. And you don't do more than needed. Often it's better to solve the problem you have today, you can never know what will happen in the future. If you try to solve the problems of tomorrow today it's a big chance you have to refactor again tomorrow because of changed conditions or changed environment.

Sunday, March 25, 2007

Natural vs artificial primary keys

A never ending discussion is about natural vs artificial primary keys in the database. There are so many fundamentalists in this area. I found a really good article in this area called "What should I choose for my primary key?".

I really agree in what they say in the summary "In the end, nobody can really tell you whether you should use an IDENTITY or a GUID(), or whether you should use a natural or artificial key; they can guide you, certainly, but nobody knows your data and intent better than you.".

There are no way to do this that always is the best. Use whats best in the current situation. Never be a fundamentalist.

Top ten lists

When I searched for more information about the commandments in the previous post I found this great post by Jeff Atwood called "top 6 list of programming top 10 lists". Number one is obviously a favourite.

  • "Complex problems require complex solutions".
  • Make hard problem look easy. Don't make easy problems look hard
  • Keep things simple.
  • Add value all the time.
  • Learn to say no.
  • If everything is equally important, then nothing is important.
  • Don’t over-think a problem.
  • Some people are assholes.

Many truth in the lists. Everything sounds so obvious when you read this but in real life...

The Ten Commandments of Egoless Programming

I found a really great article about "The post is about The Ten Commandments of Egoless Programming" by Lamont Adams. Read the article. The ten commandments originally came from a book by Jerry Weinberg called The Psychology of Computer Programming. The commandments are:

  1. Understand and accept that you will make mistakes.
  2. You are not your code.
  3. No matter how much "karate" you know, someone else will always know more.
  4. Don't rewrite code without consultation.
  5. Treat people who know less than you with respect, deference, and patience.
  6. The only constant in the world is change. Be open to it and accept it with a smile. Look at each change to your requirements, platform, or tool as a new challenge, not as some serious inconvenience to be fought.
  7. The only true authority stems from knowledge, not from position.
  8. Fight for what you believe, but gracefully accept defeat.
  9. Don't be "the guy in the room."
  10. Critique code instead of people—be kind to the coder, not to the code.

Validation Application Block - Enterprise Library 3.0

The new validation application block in enterprise library 3.0 could be really cool. Check out David Haydens short presentation. There are a short presentation of Visual Studio Integrated Configuration Editor Support as well. It will be interesting to follow this in the future. A february 2007 ctp of ent lib 3.0 is avalible here. It seems that the RTM will be released in early april.

The next release of the web client software factory will include support for the validation block.

Test the new Visual Studio Orcas

Download a pre-release of the march 2007 CTP of Orcas. This is a virtual PC image you can download, un pack and try on your computer. You can check out the new visual studio with Team System. This CTP includes LINQ, C# 3.0, Team Foundation Server, Team Developer and much more.

Web Service Software Factory

You must check out the Web Service Software Factory (Service Factory). I really think the Software Factory thing will be a generell method to develop applications now. Why invent the wheel over and over again. You can use one of Microsofts factory or design a factory by your self with Guidance Automation Toolkit (GAT). If you're using a factory from MS you can modify that one to fit in your organisation and your needs.

In december 2006 the service factory version 2 was released. This version is using WCF.

XML Diff

This is an article with sourcecode for an application that compares two XML messages and generates XML DiffGram and shows the XML and the diffs in a HTML document.

Read the article and download the code here.

Saturday, March 24, 2007

XML Notepad 2007

If you working with XML you must download XML Notepad 2007.

Webcast about Web Client Software Factory

If you want an short introduction on Web Client Software Factory you can download an one hour webcast about it here. The presenter of the webcast are Michael Puleio and Blaine Wastell, who are the product managers for the factory. They demonstrates the factory and the used patterns.

Developer Summit 2007 featuring Re-MIX 07

I visited Developer Summit last year and it was really good. High quality of the speakers and interesting subjects. So go and be inspired. The summit is between 23-25 may in Älvsjö, Stockholm. Read more here. This year there are four speakers I know so I think it would be an interesting event.

Free seminar

Mars 29 18.00 SweNUG will have a free seminar on MSF 4 Agile. Check it out.

Web Client Software Factory

The Patterns & Practice Team has released a new software factory called Web Client Software Factory. The first release of this factory was in january 2007. The factory is very interesting for example the use of page flows and workflows and the presenter/view pattern. You can download the factory and read more about it here.

First post

This blog is supposed to be a collection of all good pod casts, web casts, articles, applications and blog posts I read. Please send me an e-mail if you have seen anything you think is worth sharing to the rest of the developer community.