In the face of frustration.

I love to write code. I’ve written code in one form or another for the past 25 years and I’ll probably still write code for the upcoming 25. I love the pure power of creation and freedom to let creativity flow that code gives me. But like in any love story there is times when it just frustrates the hell out of me.

I have a confession. I’m not proud of this, I know it’s morally wrong and I would never do this in any other setting; I’ve taken on a mistress.

My mistress is business value. Not that code can’t be business value, but sometimes other options can more quickly satisfy business values and in the face of frustration I’ve started to indulge in those options.

In the past I’ve easily accepted blame for throwing code at most problems and tried to deliver features at a rapid agile pace. Often and early. Sometimes code is just not as rapid as I want.

Now if just the platforms I choose to install to meet business needs quickly wasn’t so frustrating to code for…

Standard products – Can’t live without them, can’t live with them.

Reflections of Visual Basic 6, when the end is near

Very soon Visual Basic 6 will go out of commission, Microsoft will cease all support and will officially bury a language, tool and platform that has been argued to carry their success with their platform penetration through the 90’s.

In the backwater of this I can’t help but wonder. Was Visual Basic an expensive detour or did it actually help bring our industry forward? The goal with Visual Basic was simple, bring a tool that makes it easier to build LOB type of applications. Lower the threshold and make the Microsoft platform dominant on delivering software. There will be arguments for success and failure but a simple fact remains, there is a lot of Visual Basic systems out there, there where million and millions of VB6 devs working everyday with the platform before .NET.

But did it backfire? Did the rapid growth of Visual Basic developers contribute to the mistrust in the Microsoft platform for mission critical applications? The fact is, there was a lot of really poorly written VB systems deployed. Enough to create serious doubt in the Microsoft platform. Was it VB’s fault?

I would say that with Visual Basic, Microsoft got it’s wish fulfilled. With an army of devs there where apps flying onto their platform. But was it the right devs?

Maybe, no matter the tool, people who can’t write software won’t be able to write software?

Maybe, with a really bad tool, people who can’t write software will write insanely bad software?

Maybe Microsoft should be careful what they whish for?

It might not be a tooling problem that people can’t write software, it might be a people problem.

With that in mind, I look very skeptical at things like LightSwitch. I don’t see any problems in making solid developers more productive. There is one thing that VB has taught us though; not every person with a keyboard makes a solid developer, and a tool won’t change that.

NDC 2010 – Day 0

Today I arrived in Oslo, Norway with a colleague for Norwegian Developer Conference. This is my first visit and the agenda looks very good. I’d hoped for a little more diversity and some more local Norwegian heros, but I’ll chat with them during the breaks instead (that’s where the interesting stuff happens, isn’t it). Day 0 was a nice meet up with NNUG and some of the speakers for a casual beer, tomorrow starts the cramming.

I’ll do some summarizing here the next couple of days so watch this space.

Sessions I’m planning to see and summarize include;

  • Data for developers, Chris Sells
  • CouchDB for .NET Developers
  • Strategic Design, Eric Evans
  • What I learned about DDD since I wrote the book, Eric Evans
  • Unleash Your Domain, Greg Young
  • Domain Driven Entity Framework, Julie Lerman
  • 5 reasons why projects using DDD fail, Greg Young

…. and lot’s I can’t decide between.

If you are here, poke me and we’ll have a beer.

Is there any value in certifications?

The last few months there has been a massive amount of voices speaking out against any form of certifications. Today this was actualized in a twitter discussion with a Cornerstone (training company) and Emil Cardell. Emil argued that certifications basically are worthless and all you need is a little problem solving and google.

I’ve been working several years helping everything from individuals to large enterprises maximize and capitalize on the competency  they have and are reaching for. In this work I’ve come to realize that I do not agree with Emil’s simplistic view of the value of certifications, I find the issue more complex.

These are my thoughts on the subject.

Certifications outside our little sandbox

There are several areas where certifications are used outside of our industry, we are not unique. There are majors ones like doctors and electricians and minor ones like “transporting dangerous goods”. As with the certifications for devs, these will never single handily guarantee that the person holding it is competent; or even the right man for a specific task. But on the other hand, you would probably avoid letting a plumber without the right bathroom certifications rebuild it for you.

The classic example is people with drivers licenses, how many times have you wondered how they passed the test? But they still did, and you can’t drive a car without one.

So why do we rely on these certifications here but disregard them for software development?

State of today’s certifications

There is several types of certifications for software developers today and the major once can be categorize into three types that each have questions of validity raised against them;

  • Knowledge tests  (aka multiple questions / answers) – can be crammed.
  • Attendance (e.g. SCRUM Master) – Only measure attendance not knowledge.
  • Reviews (Arguing for a solution in front of a board like the MCA) – Risk being based on friendship or contacts.

Does these doubts make the certifications worthless? They will certainly make it hard to guarantee competency, but that’s not unique for “our” certifications.

So why the outcry against certifications in our industry?

Reasons of outcry

I’ve come across several, more or less well founded, opinions why certifications fail us. Some more admirable then others as well.

The “I’m better then you” mentality
This is based on the same feelings that people get from others driving their cars like mad men. The simple rhetorical question of “how did this guy get certified?”. The interesting thing is that there are millions of people that never judge people outside of their car, likewise it seems that when we start writing code, some start to judge others.

Simple criteria’s
Some criteria’s can be very simple to complete. So simple that the value of the certification itself can be questioned. “Should it really be enough to attend a two day course to get certified?”

“Everybody got one”
This ties in a little to the two earlier outcries, if everyone in the industry got one. What worth are they?

This is an objection I find very interesting, since no electrician can work without a certification. It’s not the fact that you hold one that’s the value, it’s that if you don’t, you shouldn’t work.

They are only on X, not on Y.
This is a very popular argument and it usually comes from people not agreeing that X is the technology to use, anyone competent uses Y! This arguments springs from the view that it’s “my way or the highway”, a view that almost brought down the ALT.NET movement completely. Is a certification on X worthless if it is X you will work with and not Y?

So is the value only in how “hard” they are to attain, how many people got them, or  what technology they are based on?

This is the real value.

The value of a certification always lies in the perception of the people it’s presented to. In our industry; MCP certifications held a huge value when they first where introduced. But as more people attained them, the perception of it’s value faded. There are still some that are well respected, most of them have few people that’s passed them. So it seems that we only value certifications as a proof of “superiority”, not as a measurement of basic knowledge in a job role.

I’d like to argue that there is value, even though it doesn’t prove your “superiority”. There is value from a lot of different perspectives.

Value for individuals

The Dreyfus model of skill acquisition speaks about 5 levels of competency. Going from one level to another needs different tools depending on where you are on the scale (Johan Normén will speak about this on devsum10). Today’s Certifications are such a tool.

It will not take you from competent to proficient or proficient to expert, but from beginner to advanced beginner. It’s often a measurement that you grasped the basics and are ready to move on. It forms a baseline for your claims to be competent.

And most importantly, it tells people that you put in the dedication and effort and those without the certification didn’t. It doesn’t tell that you are an expert but it tells a lot about who you are and what areas you studied.

Value for organizations

There is value beyond the individual in certifications. Organizations can use them as a tool in many aspects of their business model. They can be used to inventory competency, as a measurable goal for bonuses or as an argument for higher prices. For businesses the two strongest areas of use is first a mean for steering the business direction and secondly in relationship to their vendors.

Steering

If I as a corporate leader wanted to move my business in a certain direction I will have two challenges to handle. First I need to know where I am, I can’t plot a course without having a starting point, secondly I need to know that I got there. Depending what my ambitions are, certifications can help in either one.

Relationship

It’s easy to claim that you have 100 developers that know a certain vendors technology and is a strong candidate for partnership. But how do you prove it? A showcase isn’t enough, in theory everything in your showcase could’ve been produced by one person. Certifications are a great tool here. Since it’s neutral and not based on your own perception, vendors tend to trust certification numbers as an indication. It’s usually not all that’s needed, but it’s one component in a validation of your organizations worth to the vendor.

This need of a “neutral” verification is truly visible in many organizations job-ads as well. They wish for a “engineering degree” for their applicants, not because engineers by default make better developers, but because there has been a third party involved in validating your credentials according to a baseline that can be compared to others.

Do I think that certifications are ideal to achieve these two values? No, but it’s one tool, one step towards something that will be.

What does the future hold?

I don’t think we’ll see less certifications. I don’t think we’ll see “certifications” as a concept devolve in value. I think we’ll see different forms based on work and not solely on theoretical knowledge. I also think we’ll see better tools for organizations to get a solid overview of where they are. Does it mean that certifications as they are today will disappear? I don’t think so. They do fill a basic need, much like the theoretical test for your drivers license tell whether or not you are ready to do the “real test”.

I’ll tell you what I would like to see happening.

  • I hope that basic certifications get a little bit more unpredictable, so that pure cram session will require you to learn stuff (much like university tests).
  • I would like to see an apprenticeship form that has basic competency requirements and certifications and makes you a craftsman.
  • I would want for people to stop calling themselves “seniors” and instead work with their peers and earn the title “senior craftsman” not just print it on their business cards. This could be similar to how you gain your doctors hat in the universities.

We are working in a knowledge industry, we use our brain everyday to deliver our work. There will be a need to measure what we can do and there will be times that your individual competency has to be judge along side others. For us to be able to call our self a “profession” we don’t need less certifications, tests or titles. We need the ones we have and then some. We need to make a strong statement that Software Development is not for everyone, you need skills to call you a Developer. You need to understand that’s it’s serious work, not toying around with computers. Raising the bar with certifications, tests and titles will do that.

Duoblog: Everybody wants choices but nobody wants to make a choice

Johan Lindfors, Microsoft and I discussed the growing opinion that software development and .net framework is getting to complex on MSN the other day. He suggested that we write a duoblog about it, an initiative started by Chris Hedgate,  don’t miss Johan’s view on the same subject here: http://blogs.msdn.com/johanl/archive/2009/10/08/duoblog-everybody-wants-choices-but-nobody-wants-to-make-a-choice.aspx

The last year or so I’ve read in the Swedish magazine, Computer Sweden(in swedish), listened to developers on shows like DotNetRocks, and had discussions with several developers which all have had a similar concerns about the future: “Software development is to complex, .NET is to complex. There is just to much to learn, too many choices I have to make”. This makes me a bit sad, and frustrated at the same time. This is why.

Why are there all these choices in .NET?

Let’s turn the clock back a little bit, the year is 1999 and Visual Basic 6 and classic ASP has their prime time. While developers using this platform are building e-commerce sites and line of business applications with somewhat success; they are still missing key components  and Microsoft plans to fill that with a new platform, .NET.

2001 .NET becomes a tremendous success. Advanced applications can be built easier then before and developers are satisfied, for the moment. With better understanding of the .NET framework developers soon see even more opportunities where software can help businesses and soon they crave for more. This is only natural, with every technological advance we do, we look at the horizon for the next.

Microsoft continuous to put out new functionality and adds value to the .NET platform trying to meet all the demands that arise. They learn a lot during this process and in some cases they decide that old parts of the framework, like ASMX Web Services, won’t cut it when they move forward. It gets replaced by newer and better technology. As a good tool vendor though, Microsoft leaves the old technology in the stack for backwards compatibility, not to be chosen over the new technology.

It’s now 2009 and Microsoft is very soon launching a new version of their platform, .NET 4.0 and Visual Studio 2010, with even more changes and choices and there is no doubt there will be even more in the future. All in response to customer feedback.

In the meanwhile businesses has changed.

During these 10 years when the development platforms have evolved and developers have been provided more tools, business has changed. In 1999 IT and software was considered a cost of doing business. In 2009, for many companies, IT and software is their business. I’m not only talking about companies that build software or sell consultants, I’m talking about all sorts of businesses. Business and their view on IT has changed, based on the same mechanics that the development platform has; for every advancement in business process support by software, they want more.

Today there are higher expectations on software then it was 10 years ago. Microsoft is trying to help us developers to meet these expectations by providing us the tools we need. Higher abstraction layers, more automation and frameworks that solve specific problems.

So THAT is why we are where we are.

In some ways I agree, software development is complex, .NET framework is big. But there is a reason for it, business demands on software are more complex, business itself is more complex then it was 10 years ago. But this is our job. Our job is to help business evolve, and if we don’t evolve with them we will be their stalling factor, we will fail to support their needs.

To help business with the best solution we need choices, we need even more choices. We need choices outside of the .NET space. We need to learn and understand when and where a certain choice is the best choice. This is our responsibility as software developers, this is why we are paid, this is our god damn JOB.

Software development is all about learning

So this is why I am sad and frustrated, developers seem to not understand the basics of the job requirements. As a software developer, my job always include constant learning and constant improvement of my skills. If I can’t agree with that I am a bad developer. This is not the tool vendors fault, this is because business change, improve and learn as well. If we don’t do that with them, we will be left behind.

Similar posts on this subject:

Excel as a software engineer, be a professional not an amateur