Sunday, 24 November 2013

Engineering to management/leadership - you're doing it wrong

Congratulations!

Imagine you’re a long-time and/or hard working engineer who has been promoted to manager/leader...

Let me tell you the story of how the transition from engineering to management/leadership often plays out in NZ...and paint the picture of what I think is a national problem faced by NZ, and a bug bear of mine.

The choice of who to promote is right – as a nation, we do this well; by merit. Rather than just promoting the most senior person on a team, we will usually promote someone has demonstrated leadership and/or a propensity to take care of their team mates; make sure their colleagues are happy and have the right tools, etc. I think that this is a reflection of our low rating on the power-distance index and perhaps our perceived relatively low level of corruption - couple of links for reference:

So back to our story - where you find yourself in a leadership/management position. This part is great – as I mention, in New Zealand I think we choose our leaders wisely. Unfortunately from there, I think we tend to drop the ball. Too often, we fail our emerging leaders and managers; sustaining sub-optimal practices.

Here’s how it works – we blame our parents

Because you have probably been given no indication to suggest otherwise – other than a pat on the back and a few gladly received “well deserved” comments – you are left to think that your promotion is attributable to your being a “naturally gifted” manager/leader and that you will be able to take care of a team easily and/or “learn on the job”. But you’re trained and experienced as an engineer; you probably have no formal training/coaching in leadership or management, what you know, you have most likely learned on the job and picked up from others. So when the rubber hits the road and management decisions start falling to you, you fall back to emulating the style of the most influential managers you have worked with in the past. And in most cases (and this is purely in my opinion) those people are probably – guess who – your parents!



When you (and/or your siblings) were born, your parents were also thrown into a management/leadership role and learned on the job, cutting their teeth and learning their lessons on – guess who – you!

And, hey, you are successful person. After all, you have just been promoted – so your parents must have been pretty good managers, right?! Well, unfortunately, unless you had some remarkably enlightened and/or thoroughly experienced parents, in my opinion the majority of the techniques you (and I) are most likely to have learned from them are of the command-and-control genre – remember all those “don’t touch that!”, “go over there!”, “because I said so!”, etc*...? That's what sticks - the more enlightened parenting we get during our teens (once our parents have learned better how to manage and lead), mostly goes in one ear and out the other. At the end of the day - kids are most vulnerable when they are little and are not able to make decisions for themselves (wisely) - arguably, command-and-control works best in this case.

So that’s probably where you start with your own staff; and unless you seek out training/coaching yourself (or an enlightened manager coaxes you in to taking some) – that may well be where you stay. You treat your staff like young children. They get stuff done, but they may well feel dissatisfied, patronised and perhaps even bullied.

Sustainability gone wrong

Basically, this is a vicious cycle; management comes to be seen as something that does not in itself merit dedicated, specific, learning or study – it comes to be seen as something that we are expected to know how to do inherently. Habits are formed and sub-optimal management/leadership styles and patterns are sustained.

Despite this, NZ companies certainly punch above their weight and many are doing rather well currently. In my opinion though, this is not thanks to good management, but despite of relatively poor (or "patchy") management. Our strong current run-rate I reckon is more attributable to our grit and ingenuity. Yes, NZ is doing well currently. In my opinion though, if our organisations were to pay a little more attention to the quality of their leadership and management, rather than throwing our emerging managers/leaders in the deep end and hoping they learn on the job (by testing and refining their potentially flawed/primitive philosophies on their staff), we could be doing much, much better.

All this being said - I certainly think that we are improving. In my relatively short career (to-date) I have seen gradual improvement and recognition that there are smarter, more productive ways to manage and lead people. After all, it's a journey, not a destination!

A prescribed medication

Be assured that there is no doubt we can resolve this situation. I am no pessimist; like I say, I have simply sought here to describe a problem as I perceive it - a bug bear of mine. See my previous post entitled “Agile as an Antidepressant” for part of the antidote. Other things I think we could do are to identify and groom potential leaders and managers earlier, encourage on-going development and training, etc. The whole solution though I think it multi-dimensional and requires on-going attention. It's a cultural issue - there's no easy fix; acknowledgement though, I think is a fair enough start.

PS:

The inspiration for this article - which is perhaps a little on the bleak side (and will be followed up with more writing on "the solution" for balance) - comes from two sources:

  1. The Catholic mass ceremony that I attended on Sunday 24/11/2013, in which we heard about Jesus the "servant leader" and the conversation that he had with the two thieves he was crucified next to. There was an emphasis in the story on the style of leadership that Jesus demonstrated. Servant leadership being one of the key tenets of Agile.
  2. A 2011 article (admittedly, much bleaker times for the global and NZ economy) that was relatively critical of NZ managers. Here is a PDF version and here is the original article. This article was was presented to me as a reference by a trainer named Daniel Vidal at a course I am currently attending on business strategy
To be clear, this is not a story about religion - there is no ulterior motive. I like the values of the Catholic Church and/but I am not a “man of faith”. That’s another story.

--------------

* There is recognition that the quality of parenting leaves a lot to be desired in NZ and elsewhere in the world also – institutions like “The Parenting Place” can help – like any other form of management and leadership, parenting is an important role, which I think produces the best results when it's well supported, coached and consumes the occasional bit of formal training.

--------------

Saturday, 28 September 2013

Buying a House in Auckland - Mortgages and Interest Rates

This post retraces a section of the house hunting and buying "journey" that my Wife and I have been on recently; having bought a house in Auckland. Many aspects of the process were both trying and interesting - and I reckon, worth writing about. In this post I ramble through a few of my thoughts on mortgages and mortgage repayment, interest rates, and loosely how they relate to the 2008 Global Financial Crisis (GFC).


Interest rates

We have found a few particularly useful resources for coming up-to-speed with what's gone on historically with interest rates in NZ and globally, including the Reserve Bank of New Zealand's (RBNZ) website, which provides a great overview of what's happened with fixed and floating mortgage interest rates since 1990. Also, Tony Alexander's weekly overview (includes a useful "If I were a borrower what would I do?" section), which is quite candid, and very useful. I found the following chart on the RBNZ website...




[Source - The Reserve Bank of New Zealand: http://www.rbnz.govt.nz/statistics/key_graphs/mortgage_rates/]

Interest rates and the GFC

On about this date five years ago, the US stock market crashed. Apparently there were actually a few hours on 29/09/2008, when the US stock market went into free-fall, that it was thought the entire US economy could melt down - not just the stock market.

I find the RBNZ chart (above) pretty interesting. My layman's interpretation (which could be entirely misguided!) of that the huge drop in interest rates in 2009 is that it was a response to the US Government flooding the market with cheap credit to keep the economy going following the GFC. And the steady hike in interest rates prior to that, is presumably what led to the sub-prime meltdown that triggered the GFC. Vast numbers of sub-prime borrowers in the USA no-longer being able to afford their mortgage repayments - presumably due to escalating interest rates(?) - defaulted on their payments, causing the whole securitised house of cards to collapse. Happy times...not!




["A Metaphor for The Global Financial Crisis" - Source - not provided (I like the image, but I don't like the site it came from)]

Mortgages and mortgage repayment

Thinking about the the GFC, and looking at the amount of money we will be borrowing on our mortgage, the repayments required on the mortgage, and what's happened with interest rates in NZ over the past few decades...is somewhat unnerving. Still, this process (of borrowing a large amount of money to purchase a home) seems to be an entirely acceptable financial risk, a long standing tradition, and perhaps even a rite of passage - at least, to most first-home-buyers in NZ, and to the banks that lend them the cash. That being said, provided nothing terrible happens with the market, our income, or our health - and we have our insurances setup right - we will be able to make our repayments and have a house to call our own. That is a pleasing thought. Here's hoping!



["Our House!" - Source, TradeMe: http://www.trademe.co.nz/]

Mortgage repayment structure

So anyway, our research has essentially reinforced our thinking that trying to predict what's going to happen with interest rates is probably a mix of black magic and luck, and at best, an educated guess. 

With regard to our repayment structure; we think that it's best for the most part to map out we think is going to happen with our own circumstances over the next few years, and assemble a fixed repayment structure around that. The theory being that we may have somewhat more control over what happens with our own situation than the global financial markets (at least, so we hope!).

Some useful links for Kiwi home-buyers looking at mortgage interest rates: 

Parting thoughts

Our "house hunt" has been a pretty interesting journey. I'm thinking it'll be useful to document our experience further and I hope to bang out a couple further blog posts on related matters such as the house hunt process, etc, also. For our own future reference and perhaps to help others who may stumble across this blog.


Monday, 9 September 2013

Rewriting and/or Refactoring Software - Recommended Reading

As time goes on, the world is becoming more-and-more automated by software. This essentially also means that there is an exponentially growing surface-area of legacy application code. This matter is especially pertinent to older software product companies, which may have deep bases of legacy of code to grapple with.

Here are a few recommended readings for those who deal with legacy code...

Refactor vs. rewrite


Joel Spolsky wrote the following article way back in 2000, entitled "things you should never do, part 1":

http://www.joelonsoftware.com/articles/fog0000000069.html

Spolsky is a very good writer,  and expresses simple ideas very well. This article says that it can easily become a strategically disastrous move to rewrite an application from the ground-up. Spolsky recommends against doing that, if at all possible.

On the other hand, there Dan Milstein prodives a counter-argument to Spolsky's, in the following recent response (only 13 years later!):

http://onstartups.com/tabid/3339/bid/97052/Screw-You-Joel-Spolsky-We-re-Rewriting-It-From-Scratch.aspx

The "strangler application"


Martin Fowler also gives us some options around how we can better manage the replacement of legacy software with new software, by applying the "Strangler Application" pattern:

http://www.martinfowler.com/bliki/StranglerApplication.html

Coined by Martin Fowler, this pattern enables the gradual phase-out of a pre-existing codebase into a new one. Fowler of course makes it sound far, far easier than it actually is (or would be). Like Spolsky though, his thinking is clear and he makes a good point.

A recent article (July 2013) written by Paul Hammant discusses a few "strangler application" initiatives that he has been involved with at ThoughtWorks:

http://paulhammant.com/2013/07/14/legacy-application-strangulation-case-studies/

If you read nothing else in Paul Hammant's article, go to the the "best practices" section at the end and just read that.


Technical and innovation debt


Ward Cunningham introduced us to the concept of technical debt as early as 1992 - really this is just a version of the old economics mantra of "no free lunch", translated to software engineering:

http://www.c2.com/cgi/wiki?TechnicalDebt

Then Peter Bell reminds us of the perils of not taking the opportunity to aspire to the cutting edge and resting on our laurels (that is, current/former market success), with his article on "Innovation Debt":

http://blog.pbell.com/2013/03/19/innovation-debt/

Innovation debt is essentially technical debt, but applies to people, processes and businesses - instead of nuts, bolts and code.

Refactoring legacy code


Michael Feathers provides us with some highly recommended reading on refactoring and working with legacy code in his book of the same name (I've bogged/reviewed on this book here previously):

http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052

Feathers defines "legacy" code as essentially being any code that is untested or currently untestable.

The book is written in the style of the "Gang of Four" Design Patterns book - there are three sections; the first sets the stage, introducing Feathers' reasoning, definitions, and some tools. The second section is scenarios (essentially suggestions as to how to apply patterns to deal with problems, like "My Application Is All API Calls") and the third is a reference for a stack of dependency breaking patterns.

Of course, there is also Martin Fowler's original book on refactoring:

http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/

To me, Feather's book however seems to be a much easier read.


Sunday, 8 September 2013

"The Good, The Bad and The Ugly" - a Review and an Observation

Watched this film yesterday, on the recommendation of a person who's judgement I trust. Also, it gets a pretty high rating from IMDB and Rotten Tomatoes.



What I realised is that like many great movies, above all, what makes this film great is it's study of the composition of the three main characters. "The Good" (Eastwood) and "The Bad" (Van Cleef) are consistent in their behavior; fair and ruthless respectively - they are interesting elements. "The Good" is essentially a Spaghetti Western version of "Robin Hood". "The Bad" is simply a complete psychopath. By far the richest and most interesting character is "The Ugly" (Wallach) - AKA, "Tuco".

Tuco is vengeful, confused, greedy, clever, frustrated, skilled, brave, passionate, conniving, cowardice and empathetic - the list goes on. Despite this tangled mix of characteristics, as a character Tuco remains uncompromised and believable - he is essentially a survivor. Tuco is seemingly suspended between the hard lines of the other two key characters (Bad and Good). In-fact, it is my opinion that Tuco is a close-to-ideal study of what it is to be human.



Most of us (at least most people I know) tend to swing from being the best we can be, to being...how can I say this...more "relaxed" with regard to our own moral standards. Sometimes we do our best, sometimes we could do better. I think that this is part of what being human is about - the environment we find ourselves in regularly (often unpredictably) challenges our intellect and our moral aspirations.

An observation that I have made of life; it seems the more we relax our own moral standards, the higher the stakes of the intellectual and moral challenges we encounter become. A potential corollary of this observation is - the more we relax our own moral standards, the luckier we need to be in order to survive. 

Tuco is perhaps the portrayal of a person who is more relaxed about his own moral standards and is subsequently more "challenged" than your average Joe. He is certainly a very lucky character.


Tuesday, 30 July 2013

Gestalten Arbeitsgruppe

People can be seen by a business as an appreciating asset - hence the concept of "human resources". 

The more time the asset is associated with the business, the more value the asset accumulates. A business is no more and no less than the historical and on-going product, of the effort of people - individuals, and teams. That's why we call formalized businesses "companies" - they are a company of people working toward a business objective.

We tend to think of appreciating assets as shares, property, etc. People who own property will tend to invest their time and energy in the property; looking to increase it's value, or at least make it a better place for them to live in. We can do the same with people also - invest in training them and helping them understand a business better.

A team can be seen as combination of an appreciating asset and a product. Like an appreciating asset, a team’s value increases over time; as the team becomes more familiar with the business and its members become more familiar with each-other (that is, team cohesion develops). The more a team works together, the better the team will become. So a team is also like a product; one that improves with use.

The German word “gestalt” comes to mind...




...which means “the whole is greater than the sum of the parts”.


Saturday, 13 July 2013

Rock on with your bad self

The Mrs and I have been watching Breaking Bad recently. I find this programme pretty interesting; I enjoy the irony and juxtaposition of the two main character’s partnership. They are like chalk and cheese, yet are linked inextricably by their illicit drug manufacturing venture. Their enduring relationship is the dynamo of the story. Over time, Jessie, who is Mr. “bad boy” turns out to be the partnerships’ moral compass, whereas Walter, who is initially painted as Mr. “straight and narrow”, turns out to be a gleaming psychopath.
The show really is not so much about drugs, etc., as it is about people, relationships, psychology, and the way we operate within and around the construct of the societies we live in.

The programme got me thinking about honesty, and about being honest with ourselves. How it’s important to admit that although we try to do well, we sometimes make mistakes, and even knowingly do nasty stuff. I think that by bearing this in mind, we can become better people – or at least, feel better about ourselves. When we keep this in mind, it gives us the option to forgive ourselves and try to do better. As opposed to thinking that we must always do good and beating ourselves up when we fail. Being honest with and open with ourselves in this way also helps us interact more openly, perceptively and compassionately with others. And it helps us to recognise more readily our mistakes and enables us to learn more from them.

Philosophy on this matter has been written and talked about for thousands of years, I’m certain. Let me finish the post though by briefly examining the thinking of a couple of other (non-fictional) characters from popular culture…


LL Cool J on the other hand revels openly in his glorious badness – “Not bitter or mad, just proving I’m bad […]”


["I'm Bad!", LL Cool J - source: http://www.youtube.com/watch?v=oVDfyc2lh4Q]

Not everyone sings (or raps) about it. Instead, people may go to church to pray, talk with family and friends for comfort, write a blog post, or simply take a brisk walk. However you choose to cope with this fact of life – I urge you to enjoy yourself, and keep it real!


Tuesday, 9 July 2013

Education, Success, Training Budgets, and The Cult of TechEd®

With TechEd 2013 almost upon us in NZ, this event - which has gained "cult status" in NZ's Microsoft software development community - has inspired me to write a blog post.

The cult of TechEd

A ticket for TechEd can be used by companies as a carrot – many MS developers are very eager to be able to attend this event. Admittedly, initially there is a definite sense of prestige associated with being sent by your company to TechEd (or any high profile professional development type event). I’ll admit, I’ve been there – on both sides of the fence – as a Microsoft developer in the early days of TechEd in NZ, I pined to be a TechEd delegate, and as a manager of .NET developers, I have used TechEd as a carrot.



Having been through that process though, and experienced the awkward reality (following a spend-up on TechEd) of a near-empty bucket (budget) for training until next EOFY, my current opinion is that there is far better value in mixing it up; by seeking out alternative events and encouraging regular attendance of local user group meetings - for example leveraging .NET and/or SQL Server user groups, subscribing to TechEd type events sparingly, and if possible, catching the satellite gatherings (e.g. the free weekend-based Code Camp events) that occur before/after events like TechEd.

That thinking has inspired me to write this blog post, which as usual, has grown into something much longer than I thought it would be!

Act local; think global

The calibre and content of local user groups is often superb (it is in Auckland at least). To list a few of the groups I've been involved with recently:
  • AkJS - the Auckland JavaScript meetup group.
  • Agile Auckland - the Auckland Agile meetup group.
  • GDG Auckland - the Auckland Google Developers meetup group.
Like the drifting sands (how poetic!), the inspiration and liveliness levels of local user groups in my experience, changes often; they also come-and-go. One really needs to keep one's ear to the ground to have a fair idea what's going on when, and where. Going the user group route though, enables one to hone one's networking skills, meet your local community of keen people, and learn about other weird and wonderful events in the process. One may even be inclined to run a presentation!



By engaging it's collective right brain, leveraging the heck out of local user groups, and encouraging contribution where possible (through active sponsorship of communities/groups and rewarding it's people for speaking, for example) I think that a company can realistically elevate it's profile and esteem in the eyes of it's community, industry, staff (existing and potential) and even it's customers. Also, it can hang on to more of it's training budget for those occasions when true gems come rolling through; for example Jurgen Appelo's recent "Management 3.0" training visit to NZ.

Variety is the spice of life

So, back to TechEd (and other "cult status" events or programmes like it)...I am of the opinion that depending on the size of the company/team, bulk-buying tickets and sending a bunch of delegates along to a ubiquitous event like this, can be a fantastic waste. This is money that could otherwise be going into supporting just-as-good-if-not-better (and less expensive) local/homegrown events. This bulk-buy approach may also reveal a dearth of imagination and lack of interest in the improvement of people.

To name but a few great NZ/AU locally run events:
  • Agile New Zealand – 2-day event in WLG, fantastic event that covers a range of material from (e.g.) TDD to Agile adoption.
  • Canterbury Software Summit – half-day event in CHCH, rapidly becoming a big deal for the NZ tech industry and a bargain at about $100.
  • YOW! – 2-day event in Aussie (three cities, SYD/MELB/BRIS), which including airfares and accommodation, can still break more-or-less even against a TechEd ticket.
  • PyCon – 2-day event, held on the weekend, Auckland, $100.
Also, in my opinion, in order to truly understand your own place in the world as a person and a professional, it’s quite important to step outside of your comfort zone now-and-then - what I mean is; learn a new programming language, get amongst a bit of OSS, etc - basically, get a fresh perspective. Events like YOW! for example, provide a very well established, platform agnostic technical forum, and smaller events like PyCon may even provide an inspirational breath of fresh air for your garden variety ace, number-one, top-hole .NET developer (for example).



So, why not take the opportunity to send people on excursions to check out weird and little heard-of events? Incentivize people to attend Code Retreats, for example. Explore what's out there in the wider world. Encourage people to look outside of their own backyard - perhaps there is a vibrant user group in the next town that has managed to snare an amazing guest speaker for an evening - fly a delegate over there for the night! Encourage people to leverage their networks; visit their friend's organisation, see how other people and other companies do things.

A change of scene and an input of new information can do amazing things for morale and creativity levels.

Roll your own, and laud your success

Of course, a company should not forget to look under it's own nose and encourage it's people to share their learning and their knowledge. Most developers worth their salt will have their own projects on the go in their spare time - given the right encouragement, people are often more than willing to present to their colleagues on these sort of things.



Also, as suggested earlier - people may be encouraged to speak at local user group meetings and at conferences. Companies can share their success with others - people love to hear success stories, especially if there's a bit of drama in the mix!

There is no difference between a company whose people speak publicly about the company and the things that they do there, and one whose people don't - other than the fact that at one company, people are willing and encouraged to talk about what they do. Success to some extent is a self-fulfilling prophecy - a company that is willing to talk about it's success, I think will be more inclined to be successful.

You get out what you put in

Like I say, I’m guilty – I’ve been there and done that with the cult of TechEd - I've leveraged it and had it used as leverage on me. I also like to think that I’ve learned though. And to be clear, I certainly think there is value in TechEd and events like it (that's how they attained cult status in the first place, right?). At the same time, I think companies should consider carefully what the relative value in these events is, in comparison to what else is out there, before shelling out a large chunks of their training budgets on them.

 

["Cult" skateboard wheel - source: http://www.skatecultwheels.com/blog/dominator#]

This post is about learning, education, and the different options that are out there for those companies and managers interested in software and product development. A company that uses it's imagination, contributes to it's community and industry and looks for genuine opportunities to help it's people improve, I think will fare better in the long run, than a company that treats training as an administrative task that gets in the way of real work.


Friday, 24 May 2013

HOW-TO: Apply a “baseless merge” in Team Foundation Server 2010 (and 2012)

Another purely technical post on TFS...

The scenario

We wish to migrate code between branches that do not have a branch/merge relationship, in order to expedite urgent changes being made by a project team, without disrupting on-going BAU development work.

Sample branch hierachy/strategy

Imagine the following branching strategy in TFS (visible by connecting to TFS via Visual Studio 2010 or 2012):


Essentially you have a "DEV" branch, which has a "QA" branch, which in turn has a "PROD" branch. DEV is the branch that you would be using for BAU development. As a piece of development matures, you move it into QA, where it is tested by your internal QA team. There may be further changes made in DEV that are moved into the QA branch as the QA team pick up issues. Once the QA team are happy with a packaged of changes, they will move them into PROD, which is essentially the hand-over to the customer. The PROD branch represents the software that the customer has.

Movement between these branches is "change controlled".

The "DEV-ProjectX" branch, is a branch off of DEV, that is being used to develop a package of work that is independent of BAU work that is going on. Perhaps for example, this represents an urgent or complex change that we do not want to get caught up with day-to-day activities in the codebase.

You can visualise this branching strategy by right clicking DEV and then selecting "View Hierarchy":



Sometimes a picture really can say a thousand words - I find that the visualisation tools provided for TFS by Visual Studio really help.

Our objective

So, imagine that in order to "skip" getting caught up in BAU developments, there is a desire to merge code from the DEV-ProjectX branch directly into the QA branch; this expedites the change and avoids getting it mixed up with other on-going development. To achieve this, we follow these steps:
  • Merge changes from DEV-ProjectX into QA using a “baseless merge”. This is a feature of both TFS 2010 and 2012 where a merge can be made into an unrelated branch. History of both the files/branches being merged are retained, but the files/branches do not have a branch/merge relationship: http://vstsguidance.codeplex.com/wikipage?title=What%20is%20a%20baseless%20merge
  • Once DEV-ProjectX passes QA and is released into PROD, a merge should be performed from QA back into DEV, so that on-going development is integrated with DEV-ProjectX as soon as possible.

Baseless merge in TFS 2010

A baseless merge can be performed on a TFS2010 server, but is not available using the VS2010 UI – it is only available using the command line. In the UI, the only target branch available to be merged into, is the one that the source branch was originally branched from. Note in the following image that when you go to merge the DEV-ProjectX branch using VS2010, the "target branch" DDL only has a single entry in it:


This is what the same popup looks like when you go to merge DEV-ProjectX from VS2012:


You can see that you basically get a browse option for both the source and the target, enabling a baseless merge via the UI.

The UI will advise that you are about to do a baseless merge - it gives a little warning, like this:


Once the baseless merge has been performed, there is a link established between the branches, and subsequent baseless merges can be performed from VS2010 (the branch will appear as being available for merging into in the VS2010 DDL).

Visualising the merge

Once you have "checked in" your changes, a neat feature of VS2010 and VS2012 is the ability to visualise the changeset histories. We can even visualise the baseless merge. Right click and "View History" of the branch, and select the event associated with the baseless merge, the follow these steps to get a neat visualisastion of the baseless merge - select the baseless merged changeset and hit "Track Changeset":


Select the associated branches in the "Track Changeset" screen to show all relevant branches:


Hit the "Visualise" button" - the baseless merge is represented by the dashed line:


To get a view of the timeline of the change, hit the "Timeline Tracking" view at the top of the screen:

Summary

This approach may be useful if you have not fully migrated to VS2012 yet and want to perform these type of merges without having to use the command line.

Also note that as mentioned earlier, a baseless merge can be in TFS 2010 using the command line - but since VS2012 is available now, I haven't covered that here. 

And finally, (if you are using a branching strategy like the one described above you will already know this I guess) it's worth noting that when making changes QA/PROD branches prior to making them in DEV, those changes should be merged back down into DEV as soon as possible in order to avoid messy business later on.


Thursday, 23 May 2013

HOW-TO: Add/edit a field in Team Foundation Server 2012 using Visual Studio 2012

It's been a while since I made a purely technical post...

So, today I wanted to make a change to a Microsoft Team Foundation Server 2012 (TFS2012) instance that I am working with to reflect "Actual" time spent on a task - mainly for reporting purposes, and because I have found in the past that making this minor process adjustment yields a relatively useful metric over the long-term.

I am using the Microsoft Scrum 2.1 Process Template (http://msdn.microsoft.com/en-us/library/vstudio/ff731587.aspx) for a project that I am working with. So that I don't forget how to do this (again!) I will blog-post the procedure I've used to add this field to the template as a screen-shot-based tutorial, as follows...

Before

Assuming you are familiar with the Scrum Process Template (2.1-ish) - open a task and take a look at the "Details" section, as follows:



 This is where I want my "Actual" field to show up.

Get the Power Tools

Download and install the latest version of the Microsoft Visual Studio Team Foundation Server 2012 Power Tools:

Open Work Item Type

You need the Power Tools to see this menu item:

Select the "Task" type

Make a "New " field


Set the field up as being a "Measure" that shows up in reports - if it doesn't show up in reports, frankly it's probably not going to be of much use (and most likely a hinderance).

Give the field a Field Reference name that makes sent to you and your colleagues - ideally, use the standard .NET namespace practice for your company.

If you want to jazz things up a bit or add a different type of field, you can get an idea how best to set the field up by looking at the configuration of other similarly typed fields - double click or "Edit" them to open and view.

Add the field to the UI

Associate the UI with the new field


Find the Field Reference in the DDL for the Field Name that you want to use in the UI.

Again, you can get an idea as best to set this up by looking at the configuration of other similarly typed fields in the UI hierarchy.

Save it...

After (Success!)


Open your task again and you should now find that there is an "Actual" field there, as above, ready to be used! You might need to refresh your browser before it shows.


For reporting purposes - you should also see that the "Actual" field shows up when you go to run a query now, or at least is available to be selected and reported on - as per the above image, showing the Query Editor.

Notes/caveats

Couple of caveats - this tutorial shows how to make the change directly at the server; to be safe, you might want to download the template and edit it locally, then upload it back to your TFS server. As I mentioned earlier, adding a field like this is not much use if it doesn't show up in reporting - worth reiterating.

TFS2012 (and TFS2010) Power Tools enable you to edit a range of features of the Scrum - and any other - Process Templates, including the actual associated workflow. That does not mean to say that it's a good idea to do that willy-nilly. 

These templates are the way they are because they represent the most flexible, and close to best-practice approach that the developers could get to. Any modifications you make will likely be diverting the process away from what's considered best-practice - certainly as far as Scrum is concerned for example, there's nothing in Scrum that requires the tracking of "Actual" time spent...

The "official" Scrum Guide: http://www.scrum.org/Scrum-Guides


Wednesday, 15 May 2013

Lean Startup in Politics




I was reading a paper this-morning written by NZ politician Sir Roger Douglas, in preparation for a talk that I'll be attending by this fellow as part of an economics course that I'm doing at the moment. The paper was written in 1990 and is entitled "Politics of Successful Structural Reform" - here is a link to it:

https://www.cis.org.au/images/stories/policy-magazine/1990-autumn/1990-6-1-roger-douglas.pdf

The paper is generally about policy reform in New Zealand through the 1980s and to some extent, as with most political rhetoric, is about the writer patting himself and his colleagues on the back. There is a clear tone in this paper however of an urge to improve the nation and look past petty political posturing and toward the "long game" of improving the nation's situation. Sir Roger urges the reduction of wasteful posturing and a focus on developing policy that will improve the long-term prospects of a/the nation - regardless of what party is in control. Lean Thinking comes to mind.

While reading, I stumbled across the following passage:

"Before you can plan your perfect move in the perfect way at the perfect time, the situation has already changed anyway. Instead of a perfect result, you wind up with a missed opportunity."


...regardless of what you may know of Sir Roger Douglas or what you might think of him; and despite the fact that other parts of the paper perhaps imply thinking to the contrary - this passage seems to light up the philosophy of the Lean Startup movement very, very neatly. At least, I find it to be insightful and relevant (to the Lean Startup movement), and worth quoting!

For a quick overview of "Lean Startup", take a look at this recent HBR article:

http://hbr.org/2013/05/why-the-lean-start-up-changes-everything

Or even better, I can highly recommend that you borrow or buy and read Eric Reis' book. If you have an interest in business or product/process development, this book I reckon, is in-fact probably on it's way to making the "must-read list" for our time:

Wednesday, 1 May 2013

Clarification: "our planet does not need to be saved"


Following a robust debate/discussion with a good friend at the weekend, on topics related to a previous post I have made, I thought it would be worth exploring further details of that previous post (made just under a year ago) and clarifying. The post was entitled "our planet does not need to be saved". If you find the title of this post intriguing and you intend to read further, I suggest you jump back and read the following link first (otherwise the following discussion will not make much sense): 

http://blog.infostructure.co.nz/2012/05/our-planet-does-not-need-to-be-saved.html

My friend believes that the original post comes across as deeply pessimistic, and in some respects, nihilistic - whereas from my perspective, it is the opposite. So I'll try here to more effectively express myself and clarify my point.

Clarification

To clarify up-front; from a young age I have been quite concerned about the environment and the damage that our species appears to be doing to it  (like, as a kid, I used to sometimes lose sleep over it) - that's, I guess, a 30+ year legacy of thinking about this matter. And this post reflects the current state of my thinking on this matter. 

If I examine the thought process behind this (previous) post, it leads to a notion that I currently entertain, which is that all life on Earth (the biosphere) having evolved essentially from the same single celled organisms, starting a few billion years ago, is connected, in a way that we are barely able to consciously perceive. I would go so far as to suggest that the biosphere is more-or-less sentient, and that human intelligence and conciseness is a component of that sentience. Perhaps, that is why people have an innate sense of right and wrong - and despite our various up-bringings that may compel us to be more-or-less selfish (and of course, the Theory of Evolution, which says that we are at essence, as individuals, 100% selfish) - we do stuff like worry about the environment, the planet, and each other; sometimes we even act on those worries, possibly to our personal disadvantage. I theorise that at some deep level, our species act individually and collectively, in the interest of the biosphere - not only the species - and that it's "built-in" to us (genetically?) to do so. Think of the way that migratory birds sense how to reach a precise destination, thousands of miles away without a map - I guess, like a sixth sense.


[Human tech and nature living side-by-side in downtown Auckland - http://goo.gl/maps/4jDCe]

So, at heart I am essentially an environmentalist. And, I have also come to think that supporting a(ny) cause without purpose and understanding is lost, perhaps even dangerous. I don't believe that campaigning for the saving of the environment/"planet" for the sake of "being part of a worthy cause", is in itself, a worthy cause. I think that people should truly understand why they stand for something. Here is the crux - my original post expresses from my perspective, what my cause is. I think that one of the worthiest causes that we as individuals, a species, and members of the biosphere can strive for, is to propagate the awesome, beautiful life that has bloomed on Earth, on to other planets (thus, as I say, providing redundancy). And I think that the best way that we can support that cause is simply by following our innate sense of right and wrong, and by doing our best at whatever we choose to do in life (whether we choose to be an environmental activist, a computer engineer, a road worker, or anything else), with purpose and understanding.

A couple of questions to play the devil's advocate:

  • Q: What if we are not the dominant species on the planet? 
  • A: OK, we may not be - in fact it is perhaps naive and arrogant to think that we are. The real questions are then - if we were not the dominant (or most technologically advanced) species on the planet, how would we identify that? How for example, do seagulls (assuming that humans are a more advanced species than seagulls that is!) identify that? And, would there be any benefit in being able to identify that? Personally, I think there would not be any benefit - it would in-fact only make us frustrated and sad - surely for example, seagulls don't bother thinking about how amazing human technology is; they most likely just get on with their business and believe that they are the kings of the world! Wouldn't you?
  • Q: What if it were humanity that were to be wiped out?
  • A: This question helps clarify one of my initial points in the original post; that I think although we should be aware of it and concerned about it, we should not fret too much over the destruction of some species. Think of it this way; almost all of the things that you and I take for-granted and use every day (spoons, food, tables, cars, computers, clothes, etc) directly or indirectly contribute to the destruction of species - for example, as rain forest is cleared to make way for farms and factories, etc. If you truly wanted to absolutely halt any further extinction, would you not need to give up using almost all modern technology? And so, the argument for the conservation of all species is deeply political - deeper I suspect than for any individual to successfully navigate. That being said - yes, I would most certainly take exception if it turned out that some other species decided it were no big deal if humanity were wiped out!


Summary

This "clarification" may turn out to be a further confusion on what evidently is already a confusing post. I hope that it is not though, and I would be more than happy dear reader, to discuss this matter in further detail, should you with to consider it further with me - write me a comment and/or let me get you a coffee one day - a Fairtrade one!

Sunday, 28 April 2013

Two DIY half-day walking tours of Sydney

Last year Melissa and I visited Sydney and had a wander around for a couple of days. Very pretty city - we didn't have much time, but managed to get a couple of very nice - and relatively inexpensive - DIY walking tours in.


[A manhole cover that I liked and photographed with my shoe - near Sydney Central Train Station]

Both tours start and end at Circular Quay (CQ) - so theoretically say, if you were in Sydney on stop-over for 12 hours, you could catch the train from the airport to CQ and start from there.

So, here they are:

Balmain and Harbour Bridge - 

Synopsis - this tour takes you on a ferry ride from CQ, under the harbour bridge and around a couple of beautiful old suburbs. Start early/mid afternoon so that you walk back across the bridge about dusk – take in the view of the city at sunset from the walkway across the bridge.

(1) Start a Circular Quay – get a return ticket on Balmain Ferry (about $12): http://www.131500.com.au/upload/docs/sydney-ferry/DarlingHarbour-ferry-timetable.pdf

(2) Jump off at Balmain, find a cafe, have a coffee and a wander around – some nice historical walks: http://www.leichhardt.nsw.gov.au/Library/Local-History/People-and-Places/Walking-Tours/Balmain-Walking-Tours

[L2R: ship-size sprocket, Colgate-Palmolive factory (now apartments), nice house - Balmain]



(3) Wander back to the ferry terminal and jump back on the next ferry – ride the ferry around Darling Harbour.

(4) Jump off at Luna Park, go for a swim at the pools and/or check out Kirribilli Village: http://goo.gl/maps/1LUkm


[L2R: 
view from the walk _under_ the bridge from Luna Park, 
Melissa on the bridge footpath, 
Melissa appreciating the view from footpath to city]

Caveat emptor - the bridge footpath is HIGH, and the grill that separates you from the drop is...how can I say this..."rusty"...? I'm not that good with heights and had sweaty palms and a relatively consistent surge of adrenalin the whole way across (I have sweaty palms thinking/writing about it now!). That being said - it is an awesome and relatively easy experience.

(5) Finally, walk back across the Harbour Bridge and through "The Rocks" to CQ.

Here's a very rough map that shows the course we took - you can work out where we jumped on/off the ferry easy enough. A return trip essentially lets you jup off the ferry and then back on again at any stage in the ferry's "loop":


[Follow the red line!]

Watson’s Bay and The Gap - 

Synopsis - this tour takes you out to Syney Harbour's heads (and back) and includes some delightful walking around the heads - with stunning views from the tall cliffs, and finishes up with a wander through some of the beautiful (and very plush!) old eastern bays suburbs. Do this one starting quite early in the morning, so you get the beach (Bondi) to yourself. We went on a Friday morning, started out about 7:30am.

(1) Catch the bus or train from Circular Quay to Bondi Junction – EOL, not much to see there.

(2) Catch the bus from Bondi Junction to Bondi Beach, find a cafe, grab a coffee (we went to this place - http://goo.gl/maps/JWNTK - "Gusto" - it was very nice, but the muffin that we had hadn't been cooked quite though - delicious nonetheless!) and have a wander along the beach – if you go early, it’s probably going to be pretty empty.



[L2R: early-bird surfers at Bondi and a nice view from South Bondi]

(3) Catch the bus from Bondi to as close as possible to Watson’s Bay – not sure what the bus number is (380?): http://www.sydneybuses.info/network-interchange-maps/east_map.pdf

(4) Walk from about here http://goo.gl/maps/ZcYv3 to The Gap (http://goo.gl/maps/bdtQf) and around.



[L2R: 
The view across the cliffs close to Waton's Bay and The Gap, 
the Watson's Bay Pub, 
and finally, Watson's Bay!]

(5) Go to the wharf and get some Fish n’ Chips at Doyles (http://www.doyles.com.au/ - website doesn't seem to be available currently, trust me through, the fish-n-chips is fantastic) and take them on the ferry back to Circular Quay (first ferry leaves about 10:45am).

(6) Jump off at Rushcutters Bay or Double Bay (we were feeling energetic, so got off at Double Bay) and walk back through these beautiful suburbs, into Pott’s Point (King Cross) and back to CQ.

[Rushcutter's Bay Cricket Grounds]





[L2R: 
wandering toward Elizabeth Bay from Rushcutters through one of the neat little alleys between the bays, 
Elizabeth Bay - neat little cafe area where we stopped and had a coffee and a cake, 
King's Cross, spherical fountain]

Finally, here's a(nother) very rough map that shows the course we took - as I mention, the first ferry leaves Watson's Bay (on Fridays at least) at about 10:45am, so there's a bit of time for just wandering about and enjoying your fish-n-chips, or perhaps even a dip in the bay, if the tide is right!


[Follow the red line!]

So that's it, dear reader - I hope that if you choose to do one of these tours, that you enjoy it as much as we did. One last point FYI - we went in early December - the weather was very nice, and not too hot.