Meta

Embracing Everything.

So shortly we’ll be doing the usual “out with the old and in with the new” festivities and crazy sales shopping! I’ve certainly had a year of disposing of old for sure, the house has completely taken the fun out of 2017, or so it seemed, so I’ve actually been quite glad to say goodbye to it.

What went wrong…

The house continued to kill our souls, finances and time – endless weeks of something else going wrong, needing to be fixed, requiring a survey, builder, consent form, something… Dreary!

Aside from that, I now wear casual fit shirts, WTF! #old

Specs descended upon my nose! Yes, I know wear glasses – This is actually both good and bad as they’ve solved my headache problems and I look rather good in them, apparently… #old

No “proper” holiday – Despite our best endeavours, for one reason or another we never made it away properly. Flew to Spain and kitted out the holiday home in some upgraded gear (in lieu of furnishing our place!) and got some well-needed vitamin D, but that was the extent of the foreign investments this year…

Lack of sports and gym activity – Time constraints and minor injuries kept me off the 5-a-side pitch, work prevented gym sessions and #2 put a halt to the tennis plans

Left 23 unfinished, unpublished, blog posts – Always been something more important to deal with, I’ll use the Christmas period to post hopefully :)

Goodbye rain, hello sun, sand and soft play!

However, when you actually spend a little time (plenty of that on my daily commute from hell… Moan, moan, moan) thinking, it certainly wasn’t all bad, here are some highlights that more than counteract the grim stuff…

The best part… I’m a hugely doting Dad of the most wonderful little boy! Managed to make plenty of time for fun with this awesome dude despite the madness this year and there really is no better a time than with him <3

Everything (and I nearly mean everything, including some bricks and mortar!) is new in the house – I learnt a lot about renovating and a lot of new tricks, not to mention all of the new toys I have to play with… My lovely Ryobi One+ gear; Impact Driver (a personal favourite!), Jigsaw and Wood planer. The wonderful Makita Circular Saw and Multitool. Yet the cheapest and most used was simply the super reliable Stanley plasterboard cutter. #needed

Work saw a dramatic improvement in personnel and process, and that’s helped clear a path for less frustration and more productivity – Always a positive!

At 40, the guys have finally agreed that annual trips somewhere are good for us – We started in Edinburgh for our joint birthdays and despite a small turnout and far less thrill-seeking than originally planned, it was a great time for just wandering and talking, instead of rushing down a pint whilst discussing politics and football in the local (or someones local) pub. Plans for 2018 are already in progress…

Talking of 40, there were plenty of 4oth birthday parties. Unfortunately, I didn’t make it to all which is a shame and I didn’t have time for my own, but an “End of 40” party to start the new year should work well in my beloved Greenwich!

Hobbies took a back seat but I did manage to find time to embark on a few new projects outside of the day job. I won’t expand on those just yet, but watch this space – All are exciting and going to be BIG :)

Commuting, despite the horror show that is SouthEastern Railways, has been a million times more enjoyable. Netflix and Amazon Prime have come to the rescue with a constant stream of great new seasons of favourites and totally new shows; Halt and Catch Fire, Startup and 13 Reasons Why. Looking forward to more in 2018!

Edinburgh Castle

Now, is this a diary entry, brain dump or something else? Well, to me it’s a reminder that no matter how hard, frustrating and downright fucking annoying times can be, that if you look back positively, there’ll be great learnings from the year with plenty of pockets of loveliness. And to never forget that we’re super lucky to live in exciting and privileged times!

Like this:

…the fun of the sale has gone! [rant]

“Why, why, why” I hear you scream (maybe, unless you’re working anywhere around Central London today and dreading being able to move!), well…

For a start, the “Black Friday” sale no longer appears to be a single day. This year all forms of retailers and service providers have decided to start this “Friday” thing a week before or have extended it to the following Sunday. It’s no longer a special day. At the very least it needs renaming! Any suggestions?

Secondly, as a consumer, this is not enjoyable and although operationally easier no doubt to spread it over a longer period (security concerns, etc.), I’d suggest it hurts sales of goods due to human-beings inability to make a choice when given too many at once! The apparent sense of 5-7 days of procrastination, hmmm, I fear it’ll end in no purchase. Forgetting that point, it also puts enormous pressure on Christmas shopping… All of sudden you’re thinking “I have to buy presents on Black Friday, I’ll save so much”, only to find the things you want aren’t in the sale and you’ve bought a load of things you didn’t want.

Lastly, and most importantly IMHO, the sale items are largely made up of stuff that wasn’t worth the original value anyway or like the ever-growing number of “brand outlets” around the country, its surplus stock or defected stuff that shouldn’t even be on shelves anyway… (what I like the call The Next Effect, after the crazy jumble sale style shopping madness after new year in store when they pull out all the old crap from 3 years ago and people perceive this as a bargain!!!).

It’s rather amusing to me that in the UK the term originated from the police and support services having to plan for the annual drink and disorderly binge before Christmas, codenamed “Black Friday”. Yet now the panic is with the businesses running the sales and thier ability to cope with the binge shopping and disorderly shoppers, which now seems to spam a similar length of time as Christmas!
I must say that 2014s Amazon sale, John Lewis’ sale last year and our sales figures sky-rocketing for a day, have all been both enjoyable and rewarding, but this year has been a constant flow of annoyance… The ever-distracting marketing emails have gone absolutely crazy, I swear one-in-three that I receive says “Our Black Friday sale starts today” or “be first to know about our Black Friday sale…”, the latter being the most irritating as it’s like saying “we want to jump on this bandwagon but haven’t decided how or what to sell yet”, then there’s the radio advertising that has been completely taken over by them, coupled with the more closer-to-life situation of having to prepare ourselves at the office for a busy day on the infrastructure. I don’t even want to mention social media, as this place is literally insane! Lucky Google and Facebook for creating such a profit making product, Twitter-schmitter…

So far, and thankfully, “Cyber Monday” has hardly been mentioned. I can only assume because “Black Friday” is now effectively “Black-Week-And-Weekend-With-A-Friday-Between”.

Rant over. Happy Friday! (oooh, there we go, let’s call it Happy Week – closely followed by the realisation of spending more than you planned to and becomes Sad Week or I’m Broke Before Christmas And Can’t Afford To Go Out And Enjoy It Week)

Like this:

A developers kryptonite is the “big project” and it scares the big red pants off them. Large projects are daunting, take months (if not years) to implement, take a huge amount of joined up effort, not forgetting spanning a long period of an ever-changing personal life that both affects and gets affected by the gigantathon!

So, how do we make a big project both a success in terms of meeting the business needs and not destroying the engineering team at the same time…

To me, project success is highly dependent on the whole team having the backing of engaged sponsors and a well-functioning steering committee. Focussed on and endorsing the process and business practices that the engineering team work to. Without this level of engagement you can almost say goodbye to that dream goal and probably your developers sanity.

A lack of focus and a step outside of a well-defined process lead to significant disruption, stress, and fear. That anxiety often transfers upward onto already pressurised stakeholders and despite all efforts to mitigate disputes with them, issues crop up which inevitably lead to at-risk projects and goals that seem as far away as Mars!

Introducing the #ConstructionFlow

My life is full of projects, the most recent being the purchase of a dilapidated 1920’s Victorian house that’s in need of complete restoration. The principals I’ll apply to rebuilding this apply to software/web development projects too, most notably:

Define the process, hire the right people, communicate.

Simple, yes?

No. Issues with the people element will always arise in a project lifecycle, these can be managed. A plumber can be replaced, a bad design can be redesigned, a bad mood can be improved, but a bad process once you’re all on board, can’t. The project will fall apart and the impact is often catastrophic, creating panic, frustration and other unruly behaviours…

For instance, an unfocussed passive aggressive stakeholder, whom may say they are in support of the project will object or create obstacles to derail or delay it at every opportunity. In order to cope with their own derailment they’ll likely blame the process; creating additional unnecessary meetings or work, all the while verbalising their commitment to the project.

This behaviour won’t get you to your end goal, it’ll be a stress-inducing, morale-sapping, trust-depleting disaster.

Using the “you wouldn’t build a house without having an architect design it first” analogy is a useful headline to describe all of the components needed to deliver a successful digital project. Satisfying the needs of those developing the product is key to that delivery.

The minimum resource requirements to the #ConstructionFlow are…

The (soon-to-be) homeowner (or client)

Role – This person has a vision, a vision that inspires them to part with their hard-earned cash and embark on a project of building their dream home.

Responsibilities:

To provide as clear a brief as possible to the architect

To set out clearly the objectives and aspirations

Equivalent = The founder or head of business area (usually the stakeholder)

Role – To come up with the ideas that differentiate the business from it’s competitors, the visionaries and the disrupters!

Responsibilities:

To set out the intent and purpose of the vision

To define the objectives and goals of the project

The architect

Role – The architect works with the homeowner to outline plans for exactly how the house will look.

Responsibilities:

To provide information that is relevant to the proposed building and which may have some bearing upon it

To design the specific guidelines for contractors to pickup and work from

To outline costs of the work involved

Equivalent = The product manager/owner

Role – Research the wider requirements to deliver the vision and provide a framework for detailing those.

Responsibilities:

To assess the viability to project

To engage with the UX team to understand the opportunities and design a solution

To document user scenarios that tell a story of what the product should do

The main contractor

Role – The company chosen to implement the architects design and bring in the required team; electricians, plumbers, builders, etc.

Responsibilities:

To assemble the team of people needed for the job

To schedule the work required

To try and avoid, as much as is reasonably possible, any changes in the design brief or any late requests for additional work. If and when such changes and late requests are instructed, to understand that this would lead to additional costs

Equivalent = The project manager or ScrumMaster

Role – To facilitate the discussions between the product owner and the team assembled to work on the product, and to create a cross-functional operation across business areas.

Responsibilities:

To remove obstacles and impediments that prevent the flow of work happening

To push back on change to avoid affecting productivity and morale-affecting scope creep caused by late requests

To monitor the effectiveness of the teams’ estimations and planning

The foreman

Role – Often known as the “specialist” as the foreman has usually been there, and done that many times before and has the experience to lead other contractors. The primary role is to manage the team and complete the project on time and to budget.

Responsibilities:

To organise tools, machinery, materials and contractors

To supervise construction activities

To ensure construction is carried out accurately, following plans and specifications

To ensure that contractor activities are co-ordinated

To ensure that tasks are completed on time and to the required quality standards

To communicate project progress back to the stakeholders

To maintain detailed and accurate site reports

Equivalent =(this is where it gets a little tricky)The CTO and/or The UX team and/or The head of development

Role – Be the Mark Zuckerberg, not the Adam D’Angelo. Although the primary focus should be to get the product live, importantly it’s to scope out the work, not being the technical expert, but to know the technologies available and what needs to be done to accomplish the goals.

Responsibilities:

To define the infrastructure and engineering team resources required

To translate use cases into clear technical tasks

To monitor development activity

To ensure that best practices are used and the architecture of the solution is future-proof

To oversee task estimations and team resources (time vs personnel)

To perform code reviews and provide adequate training if needed

To communicate project progress back to the business

The builder, plumber, electrician, etc.

Role – Perform the tasks by following the plans and specifications

Responsibilities:

To provide an estimation of the amount of work required

To report on any problems whilst doing the work

To complete the work to the required standards

Equivalent = The developer

Role – Transform the requirements from technical tasks to application code

Responsibilities:

To provide an estimation of the amount of time needed

To report on any problems whilst doing the task

To complete the development to the required standards

The construction inspector/surveyor

Role – To confirm compliance with regulations and that building work was followed to the plans

Responsibilities:

To review and approve plans in accordance with regulations

To inspect and monitor construction sites to ensure overall adherence

Apply the use of survey instruments, metering devices, and test equipment to perform inspections

Verify structural integrity to ensure building compliance

To issue stop-work orders until building is compliant

To keep daily logs, including photographs taken during inspection

Equivalent = The quality analyst

Role – To sign-off development work based on it matching the criteria set-out by the initial requirement

Responsibilities:

To be aware of the project deliverables and understand the plans

To perform manual and automated test scenarios that perform the user action requirements of the feature

To apply the use of testing software and devices to support the investigations

To detect and highlight errors in the application

To assist in fixing the process leading to failures in the development lifecycle

In summary

See how similar these roles and responsibilities are? Software and web development really is no different to other forms of development, at least in terms of project resource needed.

For an engineering team to be successful in a large project (and still be around at the end of it!), they need the process to be followed. You often hear people saying “coding is like some black art”, and it kind of is, coding is hard and not for the fainthearted. The role of the developer is to take a good set of requirements and turn them into structured computational instructions, which in turn fulfil the goals of the project. Without that being in place from the beginning, how can the developer be expected to deliver…

Like this:

One of my excellent team members showed me a neat little tip a few weeks ago on how to avoid pushing and pulling all those irritating little system and application generated hidden files in my Git repos.

Most of us here (I say “us” but I’ve hardly touched a line of code at the office!) use JetBrains awesome PhpStorm IDE these days, for the super quick text editor and wonderful integrations. So finding out there’s a nice little way to get rid of those pesky files once and for all, I was all too happy to hear!

Gitignore usage with PhpStorm and Git

Simply head over to gitignore.io, enter your operating system, preferred IDE and any tools you might you might use (Composer, Vagrant, etc.), and click the drop-down to “Download”.

Then copy that file to the root of your project, the same location you did “git init”.

This is not just for PhpStorm however, it’s a Git feature that I only found out about by using PhpStorm.