Today (Thursday 22nd May) was my last day at the SDD Conference. Although it doesn’t officially finish until tomorrow I couldn’t attend the Monday and Friday workshop sessions. I will write a summary post and general review of the SDD Conference over the coming days. For now, here is the review of my final day.
Today I attended these 4 sessions
- It’s a kind of magic! – hosted by Andy Clymer
- Test Driven Development – hosted by Allen Holub
- Creepy C# – hosted by Oliver Sturm
- The computer says NO! – hosted by David Wheeler
SDD Session1: It’s a kind of magic!
Presented by: Andy Clymer
I couldn’t go one day this conference without attending at least one of Andy’s sessions! First session of the day, so I decided to start with something simple. Inside the debugger! What happens when you compile code? Do you care? Do you want to know? To be honest, I’m not really sure what drove me to pick this session, but I am really glad that I did! I admit that I generally cut some code and then hit the build button. If it’s good, I run it, check it and move on. I haven’t really given the debugger much thought before; I just let it ‘work its magic.’ Not anymore! Andy gave a really good presentation that provided insight in to what the compiler actually does to your code and how your coding practices can impact the performance of the executing code. What happens to your ForEach statement? Is ForEach and For the same thing? Well, thanks to Andy’s session I know understand how my code gets altered by the compiler and how to write better code to make it execute better. He took us through looking at what the code looked like post compile, using DotPeek from Jetbrain. It’s good and free and although I have a license for Redgates reflector (which is a good product) I’m wondering if its worth it after see DotPeek in action. We also learnt that the compiler really is out friend, since it allows us to write simple, clean code that declares our intentions whilst taking care of the hard work for us at compile time. It was a great first session.
SDD Session2: Test Driven Development
Presented by: Alan Holub
Approaching testing your code can seem like a minefield for beginners. TDD, BDD, ATDD – too many acronyms, too many options and too many scenarios. Alan gave a great presentation which really focused in on the correct approach to testing. Write a small test, implementing only whats needed. Run the test and watch it fail. Implement the smallest amount of code foo to get the test to pass. Refactor, replacing the code with proper working code. Simplify and remove duplication. See it’s simple isn’t it. No need to go to his session now, no need to read a book, no need to go on a course. No not quite. Alan went through the motions of how to get to the point of writing a test. This is something that I often find people miss out on. They write code and then retrospectively write their tests, and they write them to pass! NO! Write them first and write them to fail. Then fix and make them work. But what tests should you write? Alan took the audience through the process of starting with a story and then building out the scenarios. This is a typical process that I have gone through before when working with some external developers who approached development from a BDD process…
As an account holder
I want to get money from a cash machine
So that I can buy some cool books on Test Driven Development!
Scenario 1: The account has enough money in it
Given the account balance is at least equal to the money the user wants to withdraw
And the card is valid
And the user enters the correct pin number
When the account holder requests his money
Then the cash machine should dispense the money
And the cash machine should print a receipt for the account holder
And the cash machine should give the account holder his card back
It was great to run through again and find that the approaches I have followed make sense. He also discussed how using a BDD approach can enable you to write your tests at a more abstracted level than when using a TDD approach. We also cut some java code and looked at some basic mocking. Finally Allen mentioned some recommended reading
SDD Session3: Creepy C#
Presented by: Oliver Sturn
At every conference you attend there is always a comical moment that you never forget. It’s normally at a party one night when everyone’s had a few beers too many. The SDD Conference went one step further! It actually happened through the Creepy C# session. Oliver presented some truly amazing (and shocking) examples from the real world of what can only be described as crazy coding. Sure, at some time, somewhere, some guy, fueled by far too much coffee and too little common sense (probably on a Friday afternoon at around 1630) decided to actually write this stuff. I am very happy to say that I didn’t see anything that related to the code I write. Phew.. that’s a relief! Oliver also took us through some examples where we explored ‘why’ people may have done these things and the impact they can have. He finished off with sharing some examples of real world code comments as well. The session was great fun. Thanks Oliver!
I have included some photos below for your amusement.
Oliver can be found lurking on twitter when he isn’t working hard for DevExpress. If you haven’t tried out any of the DevExpress tools yet, do. They are awesome! I personally use them to power some amazing projects that I am and have worked on. And no, I don’t work for DevExpress and they didn’t pay me to write that!
SDD Session4: Computer says NO!
Presented by: David Wheeler
This session covered design topics and usability of application interfaces. David talked about things such as how users expect a pause from the UI when we ask it to do something (but not a ……………………. long one) as well as looking at some design principles of everyday objects. We also *cough* touched on Windows 8 and how the revised UI has caused some adoption problems (there I said it). A lighthearted presentation that offered some great insights in to how we as users think and also, how we as developers think. Should we as a developer design the interface for a product or should the user? Application aesthetics – why do we prefer beauty, potentially over usability? He demonstrated some issues in well known products where poor product control has spawned inconsistent experiences for a user (*cough* MS PowerPoint) as well showed how we (as humans) perceive what we see and in turn how we can benefit from knowing this when designing our UI and UX. Needless to say, my colleague and I both left the session with some thoughts around some UX and UI changes on the product we are working on at the moment! One comical example of poor UX was demonstrated using a well known ‘download’ site – 6 clicks of Download buttons and you still can’t get the product you want! Overall, a very useful and thought provoking session.