The Better Stand-Up – Part 1: The Best Time Of Day

For decades developers have abruptly stopped the work they’re doing in the morning to convene with a manager and give status. This practice has hurt our process, slowed our releases and even ruined good engineers. It needs an overhaul.

If you’re a scrum master or manager, you’re probably appalled by this statement, but there is a gamut of articles over the past few years that echo this sentiment and provide compelling evidence of our failure by tradition.

Three improvements that I see with the current practice are:
1. Its time of day
2. The questions asked
3. The meeting’s duration
4. The meeting purpose and meaning to its participants

The best time of day for a stand-up

Have you ever noticed how so many people are tired around 2:30 in the afternoon? Daniel Pink reveals in his book When that this is a natural phenomenon and one to be gravely aware of. Any hospital procedure (surgery, diagnosis, etc.) is more likely to go wrong in the afternoon. Car accidents peak between 2 and 4. And software engineers increase their bugs and sloppy code. The afternoon is when we need to pair program the most so we catch our bugs before checking them in and keep our quality high.

During a time in my life when I worked from 6AM to 10PM regularly, I noticed that my code was not at the quality level I expect from myself so I started to monitor when certain sloppy code and bugs were introduced. I discovered that 90% of them were after 2PM. What’s even more grim was that any work after 10 hours was counter-productive… it was so bad that it took more time to fix than it took to write.

It’s actually more productive to not fix the tough bugs that we discover in the afternoon, go home, relax, and fix the bug the following day. We want to handle difficult issues with a fresh mind, so why are we spending any of that precious time in meetings? That’s a mistake. We want to have our meetings in the afternoon – preferably at 2PM. This allows us enough time remaining in the day to start removing road-blocks, to wrap up our daily projects, and to combine efforts to end our day in a positive way.

By having a positive meeting at 2PM, we can inject some energy to the team through motivation and support that can help them cary through the remainder of the day. This is the best time to take a break, refresh ourselves and rejuvenate our efforts to make it through the rest of the day with our greatest potential.

Our most focused time and our highest peak in performance is in the morning. It turns out we have a reserve for willpower that helps gauge better decisions. That reserve is its highest in the morning and depletes throughout the day until, by 2PM we feel tired and bad things start to happen. Paradoxically, our best time for creativity and distractions is in the afternoon.

In a Scientific American article, The Inspiration Paradox, we read:

To be sure, if your task requires strong focus and careful concentration – like balancing spreadsheets or reading a textbook – you are better off scheduling that task for your [morning].  However, if you need to open your mind to alternative approaches and consider diverse options, it may be wise to do so when your filter is not so functional [in the afternoon].  You just may be able to see what you’ve been missing.

Scientific American, The Inspiration Paradox

Introspective Sprint Timeline

Be Positive

Years ago, I was presented with a question that grew into an idea. What kind of data can we mine from project management software to predict how well a current project will perform?

Though there are many factors that play in project management, the most impact comes from the enthusiasm (or lack thereof) of the people doing the work. Emotion plays such a large part of a team’s success that I was able to create a predictive algorithm around the emotional state of the words used in defining the backlog items and tasks. I was working on Sentiment Analysis before it was a term.

It’s What You Say About What You Do

What we discovered was that words like “Refactor” and “Fix” tended to elicit negative emotions while “Build” and “Create” tended to be more positive. When work was tagged as a “bug” or a “bug fix”, I’ve seen spit fly and fingers flail. It’s no wonder anytime an issue arose, our clients suddenly tensed up. And certain words can be unique to an industry or even to an office culture.

For example, “BHAG” (Big Hairy Audacious Goal) was thrown around in our office as a positive thing, though I doubt many other offices in our industry would view it the same, as it often means an unending quicksand-like project that can easily stagnate a career.

Be the attitude you want to be around – Tim DeTellis

So how do we fight all this and find our team zen? First, we need to be sensitive to the words being used. For example, WordPress’ mantra is “Code is Poetry”. That makes you feel creative, and a “bug fix” is really an “edit” … or better yet, an “improvement”. Consider how these work item titles make you feel.

  1. Fix login page to let users view their password.
  2. Edit login page so users can view their password.
  3. Improve login page so users may view their password.

Fix implies broken. Fix means something is wrong. Edit is better, as it implies something needs to change, and improve IMHO is the best. We always strive to improve things. By doing your work on a task with “Improve” in the title, you made something better! By doing the same work on a task with “Fix” in the title, you just made something par! Fixing means taking something bad and making it neutral. Nothing special with a fix, but you can put “improve” on a resumé!

Furthermore, you hardly hear of a “quick improvement” as being a hack, but “quick fix” is synonymous with spaghetti, duck tape and temporary. But when you suggest “improve”, you get something more like this:

“I fixed it” vs. “I improved it” … both “fix” the same issue, but only one is the $1,000,000 idea.

Begin With The End In Mind

Considering the end-game as a work of art changes the perception – especially when compared to an industry standard of slapping “lipstick on the pig to release it” (as I once heard a manager order his team to do). If you can’t have pride in your work, you’re going to treat it like the crap it will become. Chris Reynolds has a fun piece on this overall idea. Code has a smell and a feel to it.

Usually the term “Begin with the End in mind” is applied to projects and start-ups, but it should be applied to teams as well. What do we want this team to be in 3 months? Burnt out? Probably not. Energetic? Maybe. Well-greased, but siloed? That’s a no. Upbeat, creative and able to jump into each others’ work? For the win!

Start leading your team (even if you’re just a team player right now) towards that goal by being there yourself … every day … until the team meets you there.

What You Measure Becomes Your Goal

When I work at companies that focus on Earned Value, guess what? Numbers are great each quarter because attrition rate is high. When I work at companies that focus on Customers, guess what? Customer feedback is high (though there’s much fakery in the office). But when I work at companies that focus on People, then employees are happy, customers are happy and the numbers are healthy.

To aim for a company of happy people, you have to start with yourself. But how do we measure happiness? Two ways: 1. Introspection and 2. Retrospection.

Outside Looking In

Both Introspection and Retrospection are similar in that they require you to look hard at yourself, your achievements, your pitfalls, and your abilities. Retrospectives happen after an event takes place. Introspectives happen before an event takes place. When you doodle on your notepad while the manager is lecturing your team, that’s introspection. You’re building thoughts, ideas and feelings on paper to initiate a mental tie with whatever you just heard.

But we have a bias based on our immediate circumstance and emotion. If you’re given a crap-load of junk work to do, suddenly everything leading up to that moment looks grim and unrewarding. If you’re given praise and accolades, then suddenly everything leading up to that moment looks positive and worthwhile. Even if it was the exact same work that led up to these two different results.

So I wanted to track my immediate feelings and respond to them. If I tend to feel negative when attending certain meetings, a track record would show it and I could do something about that – I can put a spin on those meetings if I can’t bail out. At the very least, I’ll know in advance what situations that I dislike diving into so that I can prepare accordingly. At the very best, I can improve the situation for myself and everyone else as well. Chances are, if you feel that meeting with Mr. X is like a visit to the proctologist, others do as well.

Tracking Happiness

I began with the sheet I use to track my own work. What am I accomplishing right now? How does it make me feel? What just happened in the office that makes me cringe? Who walked through the door that brought a smile to my face?

Record what work you are doing, the events that take place, and overall vibe for each day.

Originally, I was recording each hour. That became cumbersome. Then I figured the same outcome could be achieved if I just kept the overall vibe of the day. I would put a number in the thumbs-up and one in the thumbs-down (with tally marks as they happened). No need to cross reference things, yet. Wednesdays are highlighted because the company used that day to measure milestones. Also, note that Fridays began the sprint cycle instead of Mondays. This was so that code could be released at the end of the sprint and give us a day to work out issues on the release before the weekend began. Fewer calls on the weekend meant happier company.

Currently, I have this in a Word document. You can download the macro version, which automatically updates the header and dates for sprints starting on Fridays, here. If you want a blank PDF version without the macro, I’ve got that too.

As an alternative, you might like the Mood Tracker Planner by Sourcebooks, or you could find some printable ones from online by searching “mood tracker planner printable“.

Other Paths To Happiness

Tony Robbins has an easy solution to fixing the overall happiness problem:

I do three things for 3 1/3 minutes each: I focus on three moments in my life that I’m grateful for, because gratitude is the antidote to the things that mess us up. You can’t be angry and grateful simultaneously. You can’t be fearful and grateful simultaneously. So, gratitude is the solution to both anger and fear, and instead of just acting grateful, I think of specific situations that I’m grateful for, little ones and big ones. I do it every single day, and I step into those moments and I feel the gratitude and the aliveness.

Tony Robbins

Other guides to happiness lead to “helping others”, as doing so means you’re not as fixated on yourself and your problems and the action in itself usually provides perspective that diminishes your personal issues. So does “thinking good of each person in the room” and “forcing yourself to smile” … there are so many different ways to improve your nature. In short, you have to experiment and try things out. Books like The Happiness Project by Gretchen Rubin and Happiness by Zelig Pliskin provide ideas on different ways to do so.

Interviewing Your Best

Lessons learned while interviewing for a position

I’ve interviewed at Google and Amazon, and although less than 2% of the people who try for dev positions at these companies make it to these final rounds, it still hurts not getting into the 0.2% of the interviewees that land the coveted role.

Yet, following the wisdom that each failure is an opportunity to learn and improve, I’m sharing my experience and some of the lessons I’ve learned.

You’re not looking for just a job, you’re looking for a culture.

Surround yourself with an opportunity that will harness your abilities and foster growth. Look for managers who encourage growth and invest in their employees education and well-being.

Sir Richard Branson provides some of the best advice out there for company owners and employees:

“Train people well enough so they can leave, treat them well enough so they don’t want to. If You Look After Your Staff, They’ll Look After Your Customers. It’s That Simple.”

If people in the company look burned out, and they pride themselves on working 55 hours a week without rest, and the company requires salaried employees to punch in and out for breaks. Run away!

If the company follows an annual cycle of huge layoffs at the end of the year, that’s not a healthy culture.

The lesson here is to do your homework. I’ve interviewed at companies that do these things. In one case I had to stop the interview to tell the directors in the room that their business model was unhealthy and unsustainable.

Look for a company that invests in their employees as teams and as individuals.

For example, one that provides a stipend for buying course materials or encourages time off to take classes. Look for happy, enthusiastic workers. If you can interview a few employees, ask them what they’re working on and see their reaction. If it’s a sudden smile and sparkle in their eye, you know the company has some good shoulders to brush up against.

Tip: Do this at non-work holiday parties and weed out the companies where your friends roll their eyes.

If the company claims to be agile, ask them to describe the end their sprints. You want to hear words like “celebrate” and “learn” and “show off” or even “demo”. Watch out if they don’t define their “retrospective”, or if they define it in the typical ask-three-questions and move on kind-of way. That usually indicates that their “retrospective” is either flat and unfruitful – a sign that there isn’t growth – or that it’s a political finger pointing exercise.

Get business cards of everyone you meet.

If you can’t get their card, write down their names as soon as you get the chance.

This is important for two reasons:

  1. You want to address them each by name when you send them a Thank You card. More on this later.
  2. You’ll know who to connect with in the future. These are generally nice people who take an hour out of their day to help you get a job. Even if you don’t connect through LinkedIn, keep a journal of the people you contacted (receptionist included) and stay in touch with them. When needs change, you’ll be on their radar.

Don’t schedule interviews back-to-back.

This was one of the biggest mistakes of my career. Not because of lost opportunity, though that did happen, but because it was utterly disrespectful. Even a slew of apologies couldn’t mend the bad first impression that occurred when I missed an interview because a different interview scheduled before it was running late.

Now if I schedule multiple interviews on the same day, I set one in the morning and one in the late afternoon, leaving at least 3 hours between them. Otherwise, I try to keep to only one company interview a day. Some places, like Google, Amazon and Facebook take four to six hours with a series of interviews. Others, like Oracle, Cherwell or SolarWinds take about three hours with multiple segments.

Be prepared to show what you know and confess what you don’t.

Always anticipate a technical interview test. Know the difference between an Interface, an Abstract, a Protocol, and an Extension. Know a few gotcha’s about some programming languages, like how Microsoft dutifully made all their C# Math.Round functions default to Banker’s rounding. Don’t try to BS your way, and be selective of how you show off what you know.

I once suggested a certain way that C# handles immutable strings under the hood based on some random blog post I read somewhere. The blog was wrong and I looked like an idiot in front of a Microsoft engineer, who worked with the very team that developed that engine “under the hood”.

Now, unless I have first-had experience with something, I am more careful with how I introduce that bit of knowledge. Knowing your sources also helps exonerate you if your information was wrong.

If you don’t know it, admit that you have much to learn. We all do. If they insist you try, then give it your best and explain why you chose that answer.  Then after you provide your answer, ask them for the correct one.

I’ve only had one manager get stodgy and say he would never reveal answers to his interview tests … only to be immediately usurped by his best engineer with an explanation.

Be prepared to learn; you will make mistakes in the interviews.

After each interview, reflect on how it truly went. What could you do to improve and do better in the next interview? What went well in this one? Was it to know a certain tidbit of knowledge better? Was it an answer you didn’t know to one of their questions? Was it a breath mint that you forgot in the car? Did you stammer? Did you do something awkward and embarrassing?

I once tried to hold back a gaseous expulsion that released itself into the wild in such a disgusting manor that the interviewer had to call our meeting short after the first five minutes!

What can you learn? In that last case it was to not eat a delicious, spicy tex-mex burrito the day before the interview! Other answers are more subtle. Scour the web for articles on “senior engineer [coding language] interview questions and answers“.

Try an online experience-based tutorial like Interview Cake or LeetCode.com. These paid platforms aren’t cheap, but they give you insight into your abilities and what needs to be improved. Coupled with “Cracking the Coding Interview”, they can get you pretty far in the interview.

LeetCode compares the performance of your code with other submissions. Mine usually came around 85 to 95% of the most performant, and more than once I got the highest performance rating… however, simplicity and legibility sometimes suffered. It gauges various properties of your code, which is very beneficial. It even breaks questions down by the company that asks them.

Interview Cake is a bit more fun and better guided, but not as focused. If I wanted to interview for Amazon, the questions and approaches they care about are different than Facebook’s. ‘Cake provides good guides, but doesn’t suggest what company would be interested in the question you’re solving.

Always consider your audience and know your role with them. That was a difficult lesson I had to learn during an interview.

Re-ask the interview questions and re-do the interview tests at home.

Try hard to remember the interview test questions and write them down after the interview so you can revisit them later. You can also go to CareerCups.com or LeetCode.com and sometimes come across your question if you don’t remember it exactly but remember the gist of it.

The questions you were asked were chosen for several reasons. They represent a difficulty they have and gives them insight to your ability to understand and solve through that difficulty.

I’ve been asked questions in interviews and later came in to find their code is nothing like what the question presented. These are usually large non-technology corporations like insurance companies or investment firms for which I think the questions are set to be broad and generic because people shift around between departments quite a bit.

For example, you might be given a question about SQL joins (how do you create a full outer exclusive set) that you would never see or do in your career there, but knowing it demonstrates a higher level of understanding than most SQL developers out there. They’re just testing overall skill level, not problem-solving expertise or creativity.

I’ve found that following up with the interviewers with the answers you worked out at home doesn’t impress them. I though for sure that this initiative would make interviewers say to themselves something like “Hmm.. This guy doesn’t stop until he has a good answer, and he likes to work out terse problems even after it wouldn’t seem to benefit him … let’s bring him on board.”

The closest thing I ever got was a response like “Your code seemed too complex with all those fringe cases. We didn’t ask for all that.”

Contrary to what many interviewers believe, it’s a bad idea to cut ties with a non-hire as soon as the interview is done. It makes for a better society of developers and potential future employees to keep in touch. Responding thoughtfully to interviewees can be very helpful. In this example, after thinking deeper into what the prospect meant, I realized that without constraints on my requirements, I really did overthink the problem and create a bigger solution to match. That was a good lesson.

Because of that response by the interviewing HR scout, I know to ask my clients – “What are the constraints here? Time allowed to code? A Deadline? Functionality on grid ‘A’ and not Grid ‘B’? Interoperability or Extensibility through an API? Performance? etc.” That experience made me a smarter coder and more sensitive businessman.

Write thank-you letters and make them personal.

Thank you cards are vital because they show respect to the interviewer for the time they spent, and they help give you one last word as to why you are a good candidate for the position (or if you don’t want that job, it at least spreads kindness).

You want to have one sentence that specifies the time you had with each unique interviewer. Make them show appreciation and gratitude: “I appreciate the care you took in setting up the tests.” and “It was fun chatting about German shepherds! Thank you for making me feel at ease with something we have in common.”

There have been a few times that I felt terrible after an interview, but I still sent cards.

At Amazon I had an interviewer say flat out “I hate these. They’re such a waste of time.” That completely shocked me because it went against everything I understood about leadership. Amazon is all about leadership. A good leader looks forward to finding other good people to bring in their fold, even if they meet a couple of black sheep along the way.

I can’t remember the exact words I wrote on his card, but it went something like this:

Dear xxxxx,

It was a pleasure to meet you. Thank you for being so candid and honest during our interview. The time you spent with me was appreciated.

Maybe that card made him hate interviews just a little less.

Days after the interview, reflect again on how you could have improved.

Write notes. Put them in a blog. Podcast them. Get them out there to help others, and doing so helps you to remember the lessons and find some final nuggets you missed the first time. Anything prize-worthy requires many little details that make it stand out. These details come by spending more time with the customers and with the problem you’re trying to solve. Failures should always lead to learning better ways to solve the problem next time. That “ways” is plural. One mistake (other than a bad burrito) won’t cost you the entire job. Maybe along with your sloppy coding it was also a slouched posture… really dig deep – it’s called “reflection” because you have to give the water time to be still before you can see yourself.

Don’t beat yourself up.

This last bit is a post to my past and future self, but it could benefit others.

You didn’t get the position. Maybe it wasn’t a good fit. Maybe you’re skills aren’t up to par. Maybe you didn’t show the level of enthusiasm they’re looking for.

Don’t reach for that bottle of proverbial hemlock! It’s just a matter of time before you will get that position because you will learn and get better skills. You will find that perfect fit and you will be crazy-jolly when that time comes!

Why? Because if you’re reading posts like this you are also surrounding yourself with audio books, podcasts, blogs and people who have achieved the success you’re looking for. Keep it up. You’ll get there.

While you’re at it, reevaluate your life goals. What is it that really makes you happy? Is it globe trotting? Is it settling in a house with a spouse and kids? Is it creating something that changes lives? There’s a good chance you don’t need that job to achieve the deep happiness you long for.

Look for people who are open and available to coach and mentor you. Even in your current job, seek out these people and keep close to them. They are the most valuable assets to your life. When I feel incapable, mine points out what I’ve accomplished and that my intrinsic worth goes far beyond the work place. (Hi, Jeremy!) The best ones are here for you in these situations and are quick to reprimand you for being bad to yourself.

Sometimes it’s not you. It’s them.

I had one crazy interview where the interviewer asked how I used Typescript. I honestly answered that I only used it to transpile code down to ES3 for an old browser requirement. They were mortified because I didn’t use it the way they use it – to enforce strongly typed members and create (the illusion of) inheritance and immutability (they’re coding to ES5). When I asked what they were looking for, their answer was “we’re looking for someone who can solve problems creatively.”

I waited silently to see if they caught themselves in their own irony. I had just proposed a creative way to solve a problem and they balked at it, and now they’re saying that the very creativity I used is what they sought. I’ll leave you to consider why a certain big-name data provider is getting blind-sighted in the market.

Learn and practice whatever you were short on.

Back to the drawing board. What do you sense was lacking in that interview? Was it technical skills? Take an online course. Was it some factoid? Find some practice quiz online or a friend to drill you. How was your personality? Take a professional character assessment like the Myers-Briggs or DISC then reflect on how you can be more aware and presentable next time. I also suggest practicing your craft. If it’s sales, join Toastmasters. If it’s development, buy “Cracking the Coding Interview” (a book highly recommended by a friend and google employee).

When you’ve learned a new skill, passed an online exam, or assessed your natural fit. Now it’s time to do specific preparations for your next interview. After enough interviews, reviews, re-examination, failures and lessons learned you’ll conquer an interview with confidence and enjoy it.