I was talking with some people in a Skype thread about a conference pitch. The theme of the pitch was acceptance testing driven development (ATDD), and one of the points mentioned as a take away was having a better understanding of ‘shift-left’. Shift Left is the idea that testers should develop a skill set that allows them to get involved in testing much earlier in the development cycle, and also that companies should create a culture where that is possible.
One person in the thread had a gut reaction and claimed that they hated the term shift-left. They dismissed is as nothing more than a buzzword people use to get talks.
I think buzzwords are meaningful, let me tell you why.
We picked up the latest generation of the Amazon Fire Stick about a month ago. We had been using the previous generation and were happy with it. My mother in law wanted to be able to watch PBS shows while babysitting my son, but her Samsung smart TV doesn’t have any PBS apps available. We installed the first gen Amazon Fire Stick over there to solve the PBS problem, and ordered the latest version for our house.
We have been using the new Amazon Fire Stick for a month now and have some initial impressions
I was talking with a friend last week about some shakeups at the company he is working for. This is a fairly well established company in Nashville, but they aren’t profitable yet and are in the process of taking another round of funding. This friend is seeing some instability in the company and is thinking about moving on to something else.
I’ve been through three or four of these funding rounds now while working at startups and have noticed some patterns. Maybe my experience will help you decide if you want to stick around, or move on.
McKinsey & Company, the world’s predominant consultant on management by the numbers, had a famous insight known as the “general survey.” The company analyzed every step in the value chain, from taking the order to creating the product and shipping it; they then looked at cost. They basically wanted to find a way to do everything cheaper. A way to outsource product development, centralize marketing, find cheaper workers, find cheaper supplies, and eliminate transportation costs. To any management that is looking to boost profits, cutting expenses in half sounds like a good idea.
Except when it doesn’t work.
We don’t do deliberate practice enough as programmers. Instead, too much of our time is spent trying to get the next piece of work done. Perhaps we’ll clean it up tomorrow. Perhaps we’ll do it right next time.
Perhaps monkeys will fly.
Instead of trying to clean it up later, I recommend developing skill outside of production code. The Kata is one way to do that. CodeKata.com describes them this way:
“A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long).”
Today I’ll talk a little about Katas in Ruby, how I set them up, what they are good for – and the kata generator tool I wrote. Continued »
A few years ago I was working with a development team at the end of a very long release cycle. About 15 of us were gathered in a meeting room giving our status update. Most of the developers said they were done with implementation and were either waiting for feedback from testers, or were going to start looking at the next sprint. The rest of the developers were still working on building features for this release.
After everyone gave their updates, the manager said we were about to have a code freeze. No more checking in code.
Developers were still implementing features, testers were still finding bugs that would probably need to be fixed, and we had not produced a candidate build yet. But, out manager said we were going to have a code freeze.
Over the weekend United Airlines overbooked a flight. They chose a few people, who had already paid for their tickets, to remove from that flight so that United employees could board as standby passengers. This is the age of cell phones, recording public life, and social media. Twitter, Facebook, Reddit, and news sites were flooded with the video of a man being dragged from the United flight. By Tuesday morning, United stock had dropped by $1.4 billion dollars. Yes, billion.
Social media is a powerful tool that some companies use for marketing and product support. Other companies are destroyed by it. Many technologists I know use social media heavily to build their personal brands.
Every company I have worked for has a spectrum of employees. The people in the middle get their work done quietly. They do a good enough job, generally get things done on a deadline, and don’t make too much of a fuss. At the bottom, the low performers, are the people that you’d rather not work with. These folks do a poor job in general, they forget important parts of the project and are late with most of their work.
At the top are the high performers. The high performers get their choice of the newest and coolest projects, they raises and bonuses when the company is on a hiring freeze and there is no extra budget, they get sent to conferences, and are on the list of people to be groomed for when a management position opens. The high performers get the attention and adoration of management.
Have you ever seen a poor neighborhood suffering from a lack of funding in education and infrastructure?
This is a similar problem.
Most of us are familiar with the iron triangle of quality, speed, and price – pick two. Some people extend that to four elements, including scope. Yet there is another, deeper dichotomy, the tradeoff in life between comfort and happiness. To many of us get it confused, equating the two as the same.
Today I will argue that nothing is further from the truth. If you want to be happy, you’ll need to be uncomfortable – the right kind of uncomfortable.
Earlier in March I wrote about the difficulty of working through cost trade-offs. A team I am working with was trying to decide the best way to create an environment for nightly run of a UI automation test suite. We decided on a solution. Our IT person created a clean virtual machine and gave me admin access, and I installed the tool we are using for automation. I logged into the virtual machine, set everything up for the nightly run and called it a day. When I logged in the next morning, nothing ran.
I spent the next day and a half scouring the internet for documentation that might explain what had happened