What does a developer gain by embracing Scrum? I’m a strong believer of Scrum, but some time ago, I got my beliefs questioned. That is always good because it forces one to think them over again and reason about why one believe in certain things.
It was not until several months later that I realised how much I learnt from having my beliefs questioned. At the time, I guess it was too painful for me to find out that things I thought were universal truths where merely my own beliefs. Working on a project with a plan that is constantly moving (even on things where coding has started) makes me feel uncomfortable, so for me as a developer, scrum is a way to make me feel better. I don’t need any more arguments for why I should embrace scrum. When I was faced with the question “why” it was an awkward experience, because I didn’t have any good answer.
To be honest, my first instinct was that becoming more professional is sufficient as an argument. But when I think deeper of it, that is not a good answer. Just because I find it so important to be professional that I see it as a value in itself, that doesn’t mean that everyone else does. No, I have to answer the question:
What’s in it for me as a developer, if we adopt scrum?
It’s now two years since I started the Passion for Coding blog. I’d like to share a few thoughts about blogging and also say a big THANK YOU to everyone reading and commenting and sharing my posts. It is strange to know that my writing now reaches to almost every country in the world – to far more places than I have ever been or will ever be able to visit myself.
I would also like to thank DZone for accepting me as one of their Most Valuable Bloggers – without you I would never had got the same number of visits.
Code or Methodology Posts or Both?
Since the start of the blog I’ve published 140 posts about a variety of topics involving software development. There have been a number of posts with code samples (all code is now available in a GitHub repo). There have both been a number of instructional posts about how something specific works, but also a number of utility classes that are ready to use. I do put pride in having test run all the code I publish on the site. I do know that it works (at least until I forget to HTML escape something containing generics and all
> go missing, spoiling the code).
I’ve also written a number of posts on software development methodology, with a clear focus on scrum. Personally I do like to mix the different kinds of writing. I hope that you enjoy reading the mix too – but I’m very interested on what you think about the mix. Would you prefer more code? Or more scrum thoughts?
With EntityFramework’s support for enums, there is no longer any need to include lookup tables in the model. But I do want to have them in the database for integrity, even with code first.
I’ve been thinking for some time about to handle enums with code first. The idea behind code first is to be able to write the code as close as possible to how object oriented code is normally written. For enums that means that the enum definition itself is the constraint that is used to ensure that only valid values are used in the code.
For databases it would be possible to use a column constraint, but the normal way is to use a lookup table where the valid values are present. Any column in the database mapped against the enum type is then a foreign key to the lookup table to ensure integrity of the data.
What I would prefer is a solution where the lookup table is present in the database, but not mapped against any entity in the code.
I recently helped a team to switch SVN servers and found a few gotchas along the way. This is a short guide on what worked for me and some stuff I tried that didn’t.
The reason for migrating to a new subversion server was that Atlassian shut down their hosted subversion service. The team had been dragging out on the migration for far too long (there was more than a year’s notice). When they asked me for help, there were only a few days left before the old service was shut down. They said that they had considered moving to git and that there was probably a server set up somewhere by the operations department.
I had a quick look at the repo and asked the team about their situation and found out a number of facts to take in consideration for a move.
- A gziped demp of the repo was about 1.3GB
- The repo had not followed the standard trunk/branches/tag structure. A few levels below a
trunk directory I found another set of directories: trunk, branches, tags.
- The repo contained code from different projects. Some legacy that were no longer needed, some being actively developed.
- There was no time for a long service window. I basically had to get everything moved from one working day to another.
Agile principles are all about learning as you go and using the new knowledge to redefine the goals of the project. This is perfect for the developers and the immediately involved business representatives. But for a C-level exec it becomes hard.
Let us imagine that you and I are two C-level execs. I’m the CEO (yes, I get to pick first, because I write this before you read it). You can be the CFO and be even harder on keeping track of money than I am. In our management team there is also a CIO and of course some more C*O-people, but to make this story simple it’s just you (CFO) me (CEO) and the CIO that talks.
- I’ve got two interesting projects that would deliver lot of value to the business, says the CIO.
- That’s great, please describe what they are and the benefits, I reply.
- The first one is a trouble ticket management system integrated with the sales system’s backend. We expect that it would reduce the time for support calls by 50% on average by letting the support agents quickly find out if the customer is still covered by warranty or not. The second one is an improved supply chain management software that would reduce the number of spare parts we need to have in stock by 80%.
You (the CFO) gets eager:
- Our spare parts inventory is worth millions, so if you could bring that down by 80% it’s a huge one time profit. You never miss a chance to improved the numbers for the annual report. I continue to fill in:
- Reducing support call time is also a huge improvement. We have a hard time to find staff that are qualified and know enough about our products. Being able to use their time more efficiently would be great. We’ve got two great projects, I continue, that would give about the same level of benefits. Let’s see if we can afford them.
I (the CEO) turn to you (the CFO):
- What’s left of our investment budget?
- About a million.
- Ok, I turn to the CIO, how much do they cost?
As the CEO I am a strong believer of the full funding principle: If a project is launched, it will have the full funding required to finish. If that’s not possible the project won’t be started at all.
As the CEO I need to make a decision about the proposed projects. I have a limited number of alternatives.