Andy Crouch - Code, Technology & Obfuscation ...

All Tech Is Broken

Broken TV Set In Run Down House

Photo: Unsplash

Tech is still broken and still, no one cares.

Our lives rely on technology in every sense yet we have become immune to the fact that it is fragile and badly built. Five years ago Scott Hanselman wrote a blog entitled “Everything’s broken and nobody’s upset”. It resonated with me then and it still holds true today, perhaps even more so. In the post, Scott lists many issues he encountered over a week. The issues cover a wide range of both Windows and Apple related software and apps. He also pointed out when you do experience an issue you end up in one of two situations.

“Here’s the worst part, I didn’t spend any time on the phone with anyone about these issues. I didn’t file bugs, send support tickets or email teams. Instead, I just Googled around and saw one of two possible scenarios for each issue.

1 No one has ever seen this issue. You’re alone and no one cares.
2 Everyone has seen this issue. No one from the company believes everyone. You’re with a crowd and no one cares.

Sadly, both of these scenarios ended in one feeling. Software doesn’t work and no one cares.”

He summed up by asking why the situation was so bad and stating that he knew we could do better.

He is right! We can and should do better.

Here are the immediate things that I have experienced over the last week:

  • Setting up an Amazon Dot. The setup wizard in the Android app did not work and I had to Google to find alternative web-based setup mechanism.
  • The official Reddit android app has the power to reboot my phone randomly.
  • After reinstalling Windows and running the setup for Dropbox on a data drive, it did not resync the existing directories. It instead installed the Dropbox directories within the existing directories.
  • The Great Suspender Chrome add in regularly loses the original page I suspended.
  • My son’s iPhone refuses to keep a particular wifi password. It only affects one network and doesn’t do it for any other network.
  • Outlook configured with Google App Sync has stopped searching email. This could be Windows related as it has affected my whole team.
  • tmux has stopped working at all on my Arch laptop. It appears to be related to a screwed up locale which occurred during an update.

So what has improved over the last 5 years? On the face of it, not a lot. Who is to blame? Everyone! Users need to be much more demanding and less forgiving. Product teams need to do a much better job to meet the increased user expectations.

Why is it that modern software company’s feel they can release untested and sub par products? Where is the pride in the companies and teams that build apps and services? Would we accept this quality from a firm of Architects? “Yes, I know there is a door in the wall but it doesn’t open. You will have to climb in through the window”. There would be an outcry.

Why do users feel unable to report issues and head to Stack Overflow or other support sites instead? Do company’s distance themselves once their app or service is released? Why do company’s not watch the support sites like Stack Overflow? Or do they and they disregard everything but the most damaging (security exploits etc).

The following four reasons are key to the problem:

  • Pace of development. There is a very real need to develop increasingly difficult software fast. Not just quickly but really really fast. Competitive advantage, proving an MVP for funding, adding a killer new feature. In the past, I have often been asked to start a new feature while wrapping up the current one.
  • Quality Assurance. Tester’s, Quality Analysts, call them what you will. They are the missing members of too many development teams. Yes, we have automated tests and they are great. They are also written by the developers. True quality assurance is an art form. They should in place as early in your development teams existence as possible. Arguing that the business team can test the features they requested is not right on many levels. Firstly, most non-product team members will only ever test the Happy Path. Secondly, testing should not be an “also responsibility” for someone. It should be their primary focus and they should be given the time to focus on it.
  • Too many targets. Desktop, web or phone? OS? Runtime? Web Server? Database Server? There are many possible options and teams test against a limited combination of hardware and software stacks. How many times do you hear “it works ok on xyz ….” I do not really care if I run jkl ….
  • Conflicting implementations. A standard is a standard. If you are going to implement it then do so in whole or not at all. Do not bend it to suit your corporate will or advantage. This relates much more to web browsers and their conflicting implementations. We are in 2017 which makes it more laughable.

This is a serious issue that needs addressing. Nothing has improved in the lat 5 years. With the wider adoption of AI and AR on the horizon do we want quality and reliability to still be an issue in 5 years time?

Selecting A New Development Laptop

Vintage Typewriter

Photo: Unsplash

It’s time.

My main day to day laptop is nearing its end of life and I need to find a replacement. For some reason, this brings dread and fear and months of searching for a replacement.

First off, I am not a Mac fan. No offence, they make nice looking hardware but not nice enough to sell a kidney for. Also, they now have no Esc key which for a Vim user is unthinkable. I have long been in awe of their marketing approach, though!

I am a Lenovo Thinkpad fanboy though and have been for many years (long enough that they used to be IBM Thinkpads). They have amazing keyboards and Linux works flawlessly with little issue. There are two main problems with Thinkpads. The first is costs and justifying the cost to a CFO type person. The majority of their line are less that Mac’s but, and here comes the real issue for me, their specs are average. For Windows based development, which we use at Open Energy Market, I need a machine to power Visual Studio. This seems like a humorous comment but our 18 project solution takes about 1 min 30 to open on my current laptop. Building the solution is getting slower by the day even though my current machine is not low end. So getting a decent spec Thinkpad turns out to be a costly affair for my needs.

Ten years ago a friend and colleague recommended a UK based company called PC Specialist. They are now a fair sized custom PC and laptop manufacturer. They provide base spec models with a range of base models and then allow you to configure them as you wish. Way back in the day I was quite dubious as they used OEM cases and parts. I was very impressed with the first laptop I brought with them. I was using it on average 15 hours a day 6 days a week for 4 years and while the “R” key fell off the keyboard it was solid. I have used them ever since and recommended them at the past 3 companies I have worked,

The only issue I have with PC Specialist is the choice, there is too much. Their configuration pages allow you to toy with everything and it becomes overwhelming. The trick I have learnt is to set your budget first and then build to it. The trouble is that it leads to a lack of focus until you finally get your spec right. I have been looking elsewhere to see what other options are about for similar price and spec but I am not finding much. The only other real option is the Dell XPS range which I have read lots of great things about.

So I have narrowed my search to three:

  • Thinkpad - should I find a great deal on a great spec.
  • Dell XPS - If I can find a supplier near my budget.
  • PC Specialist - Likely choice but I will lose days to their configuration screens

I have set my budget to £1000 (inc VAT) and I’ll let you know what I buy.

Founders At Work

Founder At Work Cover

Photo: Andy Crouch

Founders At Work by Jessica Livingston is one of those books I have long meant to read. A collection of interviews with various startup founders about their company’s early days.

Released in 2008, the book covers a very interesting time in technology. The interviews are with company’s which we all take for granted today. Max Levchin from Paypal, Steve Wozniak, Paul Buchheit (Gmail), DHH, Mena Trott and Joel Spolsky are all featured. Some of these services have defined or built modern life as we know it. Gmail, Paypal, Apple, Ruby on Rails. The scope is immense.

There are a handful of obvious lessons that can be learnt from these interviews:

  • Focus - Focus on your core product.
  • Customers define you. Listen to your customers as they are the people that will drive your success.
  • Learn to scale & fast.
  • Be prepared to pivot. A few of the interviewees started with one idea but ended up pivoting to build a successful business.
  • decide on the funding that is right for you. VC’s work out well for some people, some have bootstrapped.

Although dated by the lack of recent high value startups, this book is enjoyable and valuable. Recommended reading for anyone looking to build their idea out to a business.

Problem vs Product Developers

Messy Painter Hands

Photo: Unsplash

We all know it, there are all types of developers in the world. Good ones and bad ones. Ones that work best during the night and ones that seem so much more productive than others. (By the way, they are not Rock Stars, they usually have flaws like many other perceived genius). There are also the ones that crack problems that mere humans seem to be unable to conquer.

The ones that I am always most impressed by are the product developers.

Great problem-solving developers are not great product developers.

All developers crack problems all day every day. This feature needs to do x, the UI needs to do y. We need to write the calculation engine to handle z. Problems are everyday work for the majority of developers.

Product developers take this to the next level. They consider their code and it’s impact within the product scope. “If I change this code here what is the impact?”. “How can I test all routes through this?”. “How can my tests ensure I have the correct logic?”. So far standard thinking for any good developer. In practice, many do not even have these thoughts. The product developer always goes further. They always write Clean Code and will refactor code that they see as unclean. They consider changes and dependency’s when added to the project to minimise technical debt. They question the UI and they feedback to the customer and question design choices. They are part of the design process and feedback loops. They are mindful of the impact of their approach and choices to the product.

They are the best developers to work with because they care. Solving the hardest problem in the world is to have amazing talent. Building a product that your customers love is to have empathy with you customers. They will not care what you cracked to build the product they are using. They will love that product and they will keep loving it.

These are the developers you want to hire to build your next product. These are the developers I want on my teams.

Genders & IT Recruitment

Woman On Laptop In Cafe

Photo: Unsplash

I’d like to discuss something that happened recently relating to IT recruitment. It’s about the approach taken by recruiters when compiling candidate lists. It is something that I will admit I have never noticed until now and it is they never include women.

Never? Never! I thought back to the times I have resorted to hiring via traditional IT recruiters. I, never once, have had a woman’s CV forwarded for a developer role.

At Open Energy Market I have held a large number of interviews over the last 2 years. I prefer to target developers via job boards and favour Hacker News as a great resource. In fact, the best developers I have hired over the last couple of projects I have worked on have come from there. Last July I wanted to hire a Full-Stack .Net web developer but came up short. For once Hacker News came up short.

I am targeted by recruiters on a daily basis and have spoken to a selected few that came recommended. Due to an urgent need to hire I decided to see what candidates these recruiters would present. On purpose, I limited myself to only 3 recruiters.

The first round of CV’s sent over were not particularly impressive. In talking to the recruiter that provided them I asked why this might be. She told me that it was the best of the current applicants local to our office. I reminded her that I was not worried about location and was happy to hire a remote team member. She started to get very excited and ask what other variants would I accept. Would I like to talk to Full Stack developers skilled in other languages and frameworks? Was I concerned with age?

I answered her questions and I realised that being very flexible still ended in the same result. Male only candidates. So I asked, “Do you not deal with women developers?” The response I got was “Oh! You would want to review the CV’s of women developers?”

“Oh! You would want to review the CV’s of women developers?”

This recruiter was a woman I should add. “Yes, of course, I would,” I said gobsmacked that she would respond in this way. The result was around 10 more CV’s added to my review list.

This made me sit and think when I came off of the phone with her. Is that a normal approach? Do I have to prompt a recruiter to include women’s CV’s for technical roles? I started to try and think back to the conversations I have had with recruiters. Had I said or suggested something in my requirements that would cause this approach. I called up the other two recruiters I was dealing with at the time and repeated the conversation. “CV lists are weak …” “Remote is fine … “ “Other language experience is OK …” Then I asked each of them “Do you not deal with women developers?” Once again they responded in line with the first recruiter. Once again I said that I was keen to interview great developers regardless of their gender.

As it turned out I hired a developer that resulted from these conversations. She is remote based and was by far the best and most suitable candidate I interviewed for the role.

This experience made me think, is this a common issue with recruiters? I have always had a mix of candidates regardless of gender when using job boards. I have never once had women’s developer’s CV forwarded by a recruiter. Should it be my responsibility to actually give my permission to allow women to apply? I 100% do not think that should be the case at all. I do not think any hiring manager should have to even consider this in 2017. Is it caused by the target-driven nature of the recruitment business? Is it a hangover from less equal times? Whatever the reason it is wrong.

I hope when I hire next I do not find this still to be the case. It likely will be and I will be mindful to ask earlier in the process.

I encourage you to as well.