Pages Menu
TwitterRssFacebook

Posted by on Jun 7, 2010 in Development

Development Manifesto

I was going through some old files the other day, and came across a poster I created about 4-5 years ago.

I was working – actually I wasn’t working on a project that was going wrong. Some of my colleagues were working on the project – I was doing something less interesting at the time.

It was a big, bold project, and things had started to slip badly. The deadline date was approaching fast, things hadn’t been written, people were getting stressed. The developers were pulling ridiculous hours, and it was starting to affect them personally. Bad Times.

I only really got involved because I was sitting behind them, and could hear what was going on. Also, I was young and opinionated. (I’m still opinionated!). I started suggesting things: smaller work iterations, more feedback, that sort of thing. This was when I’d just discovered Agile, and thought some of the ways of working could pay off.

Well – the project manager went on holiday for a bit, or something, I can’t quite remember, and I somehow got to plan a bit of the project. The first thing was the release Deadline (capital intended). This was a massive line in the sand – it was the Unmovable. People had announced it, it was even on the Internet! However, it was totally unattainable.

So, I telephoned some of the clients (the software was for a closed-group fixed number of clients) to talk about the Deadline. It turned out that they really weren’t bothered when the thing was released – they just wanted it to be working properly when it was released. That turned the Deadline into a deadline. So we slipped it back by 3 months. That was probably the thing I remember most: this date that everyone internally got so fixated on, but that, when we asked the user-base, it really wasn’t a biggie for them.

At the end of that development project we all got together for a wash-up meeting. The salient points were condensed down into 10 sentences which were made into a poster and displayed all over the development office. This was the file I found the other day.

Reproduced for you here and now, is the Development Manifesto*

  • Engage our customers, from start to finish
  • Be open & honest with our customers. Improve communication channels.
  • Be realistic when planning dates. Don’t make the work fit the date.
  • Fully design features & details before development starts.
  • Have regular milestones and reviews.
  • Have contingency plans.
  • Have someone appointed as the definitive leader of a project.
  • Work as a team, the whole team.

I’ve re-printed the file again, and put it on the wall. It serves as a good reminder for how bad things can get, and gives you something to concentrate on when you’re trying to do everything right. Feel free to put it on your wall too.

* Like I say, this was some years ago, and the mist of time may have clouded my memory somewhat. I’m fairly sure each of these points is original text. However, if you recognise them from elsewhere, please let me know and I will credit. I can’t remember if we found the list and agreed with it so much we copied it, or if we made our own, or a mixture of both. No offence intended. Also – if it is from a book, I’d love to know which one, because it must have been a really, really good book!

select tpd_name as [ProductName],
tpd_product_code as [TCC Code],
tpd_sage_product_code as [Sage Code],
tpd_range as [Range],
tpd_price as [Price],
tpd_weight as [Weight],
tpd_no_boxes as [NoOfBoxes],
tpd_lead_time as [LeadTime],
tpd_purchase_multiple as [PurchaseMultiple],
tpd_visible as [Visible?],
tpd_hide_button as [Hidden?],
tpd_direct_despatch as [DirectDespatch?],
tpd_external_dimensions as [ExternalDimensions],
PS_Discount.Description as [Discount],
tpd_delivery_details as [DeliveryText],
tpd_delivery_additional_msg as [DeliveryAdditionalMsg],
tpd_additional_info as [AdditionalInfo],
tpd_set_tick as [IsSet?],
tpd_home_assembly as [Old Home Assembly], PS_Assembly.Description as [Assembly Option],
tpd_finish as [Old Finish Assembly], PS_Finish.Description as [Finish Option],
tpd_material as [Old Material Assembly],PS_Material.Description as [Material Option],
PS_Colour.Description as [Colour Option],
PS_Origin.Description as [Origin Option],
PS_Room.Description as [Room Option],
PS_Style.Description as [Style Option]

from tbl_product
left outer join PS_Discount on tbl_product.tpd_discount_id = PS_Discount.DiscountID
left outer join PS_ProductAssembly_LINK on tbl_product.tpd_id = PS_ProductAssembly_LINK.tpd_id
left outer join PS_Assembly on PS_ProductAssembly_LINK.Assembly_ID = PS_Assembly.AssemblyID
left outer join PS_ProductFinish_LINK on tbl_product.tpd_id = PS_ProductFinish_LINK.tpd_id
left outer join PS_Finish on PS_ProductFinish_LINK.Finish_ID = PS_Finish.FinishID
left outer join PS_ProductMaterial_LINK on tbl_product.tpd_id = PS_ProductMaterial_LINK.tpd_id
left outer join PS_Material on PS_ProductMaterial_LINK.Material_ID = PS_Material.MaterialID
left outer join PS_ProductColour_LINK on tbl_product.tpd_id = PS_ProductColour_LINK.tpd_id
left outer join PS_Colour on PS_ProductColour_LINK.Colour_ID = PS_Colour.ColourID
left outer join PS_ProductOrigin_LINK on tbl_product.tpd_id = PS_ProductOrigin_LINK.tpd_id
left outer join PS_Origin on PS_ProductOrigin_LINK.Origin_ID = PS_Origin.OriginID
left outer join PS_ProductRoom_LINK on tbl_product.tpd_id = PS_ProductRoom_LINK.tpd_id
left outer join PS_Room on PS_ProductRoom_LINK.Room_ID = PS_Room.RoomID
left outer join PS_ProductStyle_LINK on tbl_product.tpd_id = PS_ProductStyle_LINK.tpd_id
left outer join PS_Style on PS_ProductStyle_LINK.Style_ID = PS_Style.StyleID

–inner join PS_ProductType on PS_ProductType.ProductTypeID = tpd_product_type_id

where tpd_site_id = 3 and tpd_latest = 1 and tpd_visible = 1

Written by Tom Morgan

Tom is a Microsoft Teams Platform developer and Microsoft MVP who has been blogging for over a decade. Find out more.
Buy the book: Building and Developing Apps & Bots for Microsoft Teams. Now available to purchase online with free updates.

Post a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.