code development leadership programming security

Thoughts about @codecraftuk conference

I really enjoyed the CodeCraftConf last Friday. Well done to the organisers for a great set of discussions. A very different style of conference, and a refreshing change from the lecture-based conferences. A lot of good discussions, and I just wanted to throw some thoughts down whilst it’s still fresh in my head.

technical lead discussion

Technical lead discussion summary available here.


The questions in this session were based around the Agile Manifesto:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

There was a lot of folk agreeing with the things on the left, but it was hard to find people who saw much value in the things on the right until directly challenged on it, which I found an interesting dynamic. There was also a lot of talk about feedback and communication and how that works. Plenty of interesting thoughts.

lean coffee

Prior to lunch, I joined the lean coffee session, where a number of topics were proposed.

There were a few topics covering mobile development, javascript frameworks and some other good topics, but the one that sticks out most for me was about Code Reviews.

The question was “How much should we nitpick in Code Reviews”, and I can easily see Code Reviews being a great guided conversation on its own, especially with the side discussions on what code reviews are for, who should do them, and when they should be done, which reflect conversations I’ve been having at work.

I think it’s a great format, and I look forward to trying it at our next lunchtime session in the office.


This session particularly interested me as I used this topic as a dry run in the office before I guided my session on the day, and regular readers will notice that security is an interest of mine. The key questions here were around application security, but a lot of the discussion covered testing and social engineering, and why we still trust some companies that have been hacked, but not others.


I had trouble deciding which session to attend at the end of the day, but as I was late in, the decision was made for me, as there were no seats left at the other talk. So there was a slight musical chairs element to proceedings.

The session itself was particularly interesting to me as I’ve been exposed to some of the ideas and technologies related to Behaviour Driven Development, but I haven’t had a chance to discuss using it for actual projects, and following the discussion, I understand that it requires a particular relationship between the developers and product owners to work. Definitely something to explore further.

There was another interesting discussion in this session, that had been bubbling through most of the sessions in the day – the idea of “Cargo Cult process”, where the memes and practices of techniques such as TDD, Agile and BDD have been parachuted in to a project, or organisation, without understanding the purpose of the techniques or the problems they are trying to solve. As discussed in the Agile session, the successful processes are those that start with a problem, a pain point, and find ways to address that, and put a feedback loop in to ensure the problem is addressed, and then move on to the next pain point.

If customer engagement isn’t your problem, the BDD Three Amigos session might not give you much value. If your product owner trusts your developers, or can read CI results, you may not need Cucumber to write your tests.


I was a little but unsure about a conference in a pub, but there was a great space, and some of the best conference food I’ve had. The room itself could get a little noisy when the conversations got heated, as there were 2 converations going on at once, but the organisers were working to address that on the day and at future

I’m looking forward to the next one.

code development leadership

Technical Leadership at @codecraftuk follow up

I had a great time at the CodeCraftConf, and I’ll be writing up my thoughts on the other sessions shortly, but for the benefit of those who attended the technical leadership session and those who were interested in the questions, I made a few notes on each question to reflect suggestions, and discussion points that we covered, as well as a couple of additional questions that came up during the conversation. Feel free to use them as inspiration for running your own session around these questions.

Before that however, I just wanted to give a few thoughts on guiding a session, for anyone interested in running one themselves.


The best questions are open, and not technology specific. I also found that phrasing similar questions in different ways can help to draw out additional detail. I had the questions reviewed by a couple of trusted friends in advance, to make sure they covered enough ground and were good starting points for discussion.


I chose the first question as an ice breaker, as it was something I felt anyone interested in the topic could give a short answer too. Don’t be precious about the order of questions. Know what’s coming up so you can pull questions forward when the conversation naturally flows into it.

Try and pick up the subtle cues for people who want to speak, and use your authority as guide to try and spot them. This may often mean liking away from who’s currently speaking.

What is a technical lead?

Role model
Build your relationships
Technical Architecture
Decision maker
How to build software better
Facilitate not dictate
Coach / mentor
Coding standards
Person I go to when I have a problem
Encourage communication and collaboration
Challenge and grow the team
Arbitration and negotiation
Scrapper – fighting external stakeholders in behalf of the team.

What are the most important behaviours for technical leads to exhibit?

Calm under pressure
Promoting knowledge
Don’t have to know everything. Knowledge is an inverse hierarchy, it collects at the bottom.
Drawing out quieter team members
Open minded

What most inspired you about your previous technical leads?

Clarity on code knowledge
Removal of fear
Encourage learning from mistakes – mistakes happen, so learn from them when they do.
Protect from blame – collective ownership, no scapegoats
Guiding rather than fixing – not grabbing control of the keyboard
Tailoring messages to the audience
Simplifying solutions.

Why do you want to be a technical lead?

“I didn’t want to be a technical lead ”
Help people
Drift into it
Job description makes it uncomfortable / or gives you ammunition when scrapping
Earned authority

What scares you most about being a technical lead?

Responsibility – easy to make big mistakes
Not keeping up with technology
Friction with the outside and non-technical stakeholders
Being reactive vs proactive

How do you measure success as a technical lead?

If nobody needs you
Happy management – no meetings
Happy team

What one thing would make your life as a technical lead easier?

Open minded developers
Customers who know what they want and what the requirements are
Unified working practices and strong management
Ban the word “just”
100% utilisation is bad
More time to just think
The right work environment
Flexibility and respect
The right tools

How much coding should a technical lead do?

A lot!!
Structured time boxes
Lead on one project, developer on the next
1/3rd – 2/3rds coding was the accepted range in the session, but some unhappy leads were doing less
“feature lead”

What responsibilities are you happy to delegate, and what do you want to control?

Delegate everything. But know it will be OK.
Control to make sure the delegated work is complete and the team feel supported.
Map delegations to the team
Delegate by negation – military strategy :
– “I will do this”, give leader option to refuse, then carry on
– This style can take a while to get used to
Constant communication
Don’t micromanage

How do you plan for your own absence, so you can rest on holiday?

Good team mix – senior vs junior
Choosing your staff
Building the right relationships internally and externally

What qualities do you want your team to have, and how to you help them get that?

Ran out of time to cover this question, skipped to a combination of the following two.

How do you deal with conflicts in the team?
How do you deal with external pressures on the team?

Life experience
Soft skills
Project Manager should be the political front to the outside world
Have to work in partnership with the PM
Compassionate, put yourself in their shoes
Smaller teams are easier

Additional questions :

What happens to the project when the technical lead changes?

Do you need a tech lead? Are techniques like voting to resolve conflicts enough?

code programming

HTML5 : The language of the cloud

I had a great time at DDD Scotland, so many thanks again to the organisers and everyone who came. As promised, here are the slides for my talk : HTML5 : The language of the cloud? in HTML5 format. The talk was given in Firefox 3.6 with the MiniMap (geoDiscovery) and Tails Export (microformat) extensions. If you have to make any tweaks to get it working in your favourite browser, let me know and I’ll update the file.

For a bit of fun, I’ve put together a short survey on HTML5 to gauge responses to some of the discussions I’ve had since the talk. I will publish the results in an upcoming post.

Finally, for ease of access, here’s a list of the important links from the talk for those of you who missed them:

And here’s Google’s demo using the dev version of Chrome :

code programming test

DDDS2 : TDD? I Don’t Have Time round-up

As a final sign-off on my talk, before it’s released fully to the world, I wanted to discuss the feedback I got and direct people to other thoughts on TDD. It’s all in the interests of openness, so feel free to add any further comments.

First of all, I would like to say that my slide decks and code are now available on the Developer Day Scotland website (Thanks Colin):

Speaker: Craig Nicol
Title: TDD – I don’t have time

2009 Slide Decks – Developer Day Scotland


Overall the feedback was fairly positive, and it seems that a lot of people got a good sense of TDD from the demo, although I accept that the pacing was a bit wrong and it was bad form to end the session with some failing test. Still there were some good questions in the Q&A so I’d rather have finished a couple of minutes earlier and had more questions than push on with the coding. I few people suggested that fewer slides and more code would have been good. I’m all for that, I’m a nervous speaker, and it’s been a while since I last presented, so more typing and less speaking works for me, especially when it gets interactive.

I do accept that I probably spoke too fast, and it’s not the only time I’ve been told that, but I hope that will resolve itself with a bit of practice and some better breathing.

For the person who wanted a better comparison of tools, I wish I’d had the time for that, but all the tools worth using have free trials, so have a look at this list from my previous post and try them out yourself:

I don’t know what tools to use

Test Driven Design : Developer Day Scotland 2 « Craig Nicol’s Weblog

For the person who wanted a take home message to answer the point over “I don’t have time to test”, I think I mis-sold the talk a little, and I should have made the mythbusting part more prominent than my original catchy title. I hope I answered a few points about why it can save you time in the long run, but my apologies if I did mis-lead you.

Thanks to Richard for this review. Glad you found the live coding helpful.

10:45“TDD? I don’t have time” by Craig Nicol Craig talked about TDD from baby steps and I gained a lot from it. Was a real shame that the tests he wrote ultimately didn’t pass but the promise of code to finish off gives me something to dig into!

irtimaled: My #dddscot Sessions

Other Resources

If the talk has whetted your appetite for TDD, have a look at the books linked from my previous post and have a look at these three links to help you join the discussion.

TDD Tests are not Unit Tests
Let’s start with the distinction between TDD tests and unit tests. On the surface, TDD tests are very similar to unit tests. This is not surprising, since you use a unit testing framework such as Visual Studio Tests or NUnit to create both types of tests.

TDD Tests are not Unit Tests

good design is far more beneficial and important than the practice of unit testing. However, good design + TDD/Behavioral Driven Development/Acceptance Test Driven Development? That’s where the real rewards happen. Don’t settle for mediocre efforts. Do both and reap the rewards.

Design and Testability – Jeremy D. Miller — The Shade Tree Developer – CodeBetter.Com – Stuff you need to Code Better!

If you do want to dive into TDD, you should also look at Behaviour Driven Design (BDD). I’ve heard it called TDD without the T-word, or an extension and refinement of the philosophy, but however you see it, if TDD is your thing, you owe it to yourself to have a look at the BDD road to design and testability. This link has a lot of good onward links, and it’s a podcast so you can listen while you work, or on the bus. It’s a bit more interesting than Eurovision.

This week on Herding Code, Scott Bellware educates and entertain as only he can. Scott talks about Behavior Driven Development (BDD), Test Driven Development (TDD) and Lean Software Development, gets “all preachy” and donates to the show a nearly endless batch of outtakes.

Episode 42: Scott Bellware on BDD and Lean Development | Herding Code


Thanks again to all the organizers and attendees of Developer Day Scotland.I’ll shut up about TDD for a bit, unless anyone’s got any questions. If you decide you want to use this presentation, it’s open via the Creative Commons license, but please let me know, as it’s interesting to see where it goes.

Blogged with the Flock Browser

Tags: , , , , , ,

code programming test

DDD Scotland roundup : TDD talk available for download

Thanks to everyone who attended my TDD talk at the weekend. I’ve already got some good feedback, and I accept that maybe I didn’t have a clear enough title or take home message. It was about more than just not having enough time, but the take home message of TDD should be that the overall cost of development will depend much less on debugger and tool performance and much more on the quality of your tests, which is something you have far more control over.

The final cut of my presentation and code is available via the ScotAlt.Net code repository, and it will be available from the ddds site. It is also current available at:

I’m still following the #dddscot and #tdd streams on twitter if anyone wants to send feedback via twitter, or post a comment here.

If anyone can make it to Glasgow city centre this week to talk development, you’ve very welcome to join us at the ScotAlt.Net meeting in Waxy O’Conner’s in Glasgow this Tuesday 7th May at 7:30.

For anyone at my or horn grok talk, or who was interested in the links at the end of my talk, here they are again in clickable form :

Amazon referal links for the books referenced in the talk, other book sellers are available:

Blogged with the Flock Browser
code google programming search test

Developer Day Scotland 2 is tomorrow

OK. Slides are written, code is prepared. Laptop is charged up. Hopefully I’m ready for tomorrow. The final cut of the presentation is quite different from the one linked in my last post. I hope to be able to get it up for sharing on Google Docs, but it is available via the ScotAlt.Net code repository, and it will be available from the ddds site.

I’ll be following the #dddscot and #tdd streams on twitter if anyone wants to send feedback on the day (I may be nervous now, but I’m always willing to learn). I may not be able to respond to the feedback straight away, but It’s always gratefully received.

Hope to see lots of folk there, and be sure to bring your questions. If I can’t answer them, I’m sure someone in the audience can, or bring them along to the ScotAlt.Net meeting in Waxy O’Conner’s in Glasgow this Tuesday 7th May at 7:30.

Blogged with the Flock Browser
code programming test

Developer Day Scotland : Talk refactoring

An update for anyone following this. I’ve decided to refactor the talk linked to from my last post. I’ve created three sections to try and create a better flow and justification. The first act sells the idea of testing itself. The second act looks at the test-first approach, and the final act looks at Test-Driven Design as a methodology that builds on the the ideas of testing and test-first. I’ll post the updated talk up once I’ve had a chance to batter more shape into it. Hopefully the talk will now build up, and people who only pay attention for the first 10 minutes will hear enough to keep them interested for the next 10, and then the next 10… (Yes, I did enjoy proof by induction thank you)

Blogged with the Flock Browser
code programming

Developer Day Scotland 2 : 2 May 2009

Just heard about next year’s Developer Day Scotland 2 event in Glasgow. I may be attending, and I might think about giving a talk. Possibly IronPython, possibly Alt.Net. I’d be interested to hear any of your talks to, so pop over and have a look.