• The Secret by Ken Blanchard

    The Secret

    I recently read the book The Secret by Ken Blanchard. It’s a book about leadership and it gives five principles to lead by in the form of an acronym: S.E.R.V.E. The premise is that if you are a leader that serves his or her team and practices the five principles outlined in the book, you’ll be a more effective leader.

    The book is written in the form of a long parable. Although I was somewhat skeptical in the beginning, it ended up being an interesting story that very effectively made it’s points.

    The story centers around Debbie Brewster, her team, and mentor. In the story Debbie’s mentor guides her through these five principles and helps her make a dramatic turn around with her team.

    Overall the book was helpful in giving me some principles to keep in mind while leading my team. It is all too easy to live every day simply putting out fires and never spending time planning for the future or having any real goal in mind other than “survival”.

    I’d highly recommend the book both to experienced leaders and those like myself that are new to the role.

    Notes and Quotes

    General

    • Great leaders are great listeners
    • Leadership has nothing to do with ones level in the organization.
    • Question to ask yourself: Am I a self serving leader or a serving leader?
    • You don’t become a great leader in a moment, month, or year, but rather one day at a time.
    • Leadership is more about what others don’t see than what they do see.
    • Leadership is like an iceberg. Above the waterline: skills, doing. Below the waterline: character, doing. The stuff below the waterline (i.e. lack of character) is usually what sinks leaders, not their abilities.
    • What big and small things can I do to serve those I lead?
    • Service alone won’t make a leader great. A person can service without leading, but a leader can’t lead well without serving. Must do the five prinicples outlined in S.E.R.V.E.

    See the Future

    • Creating a vision of the future and ensuring the team is aware of it and on board should be one of the top priorities.
    • Must create a compelling vision and is one of the privileges and most serious demands of leaders.
    • There’s a constant tension between ‘Heads Up’ work (planning, setting direction) and ‘Heads Down’ work (implementation). Time must be invested in both.
    • The leader’s responsibility to ensure ‘Heads Up’ work gets done.
    • Values are the beliefs that drive our behavior.
    • A responsibility that cannot be delegated.
    • Questions:
      • What is the purpose of your team?
      • Where do you want your team to be in five years?
      • How many members of your team could tell you what the team is trying to become/achieve?
      • What values do you want to drive the behavior of your team?
      • How can you communicate your vision of the future to your team?

    Engage and Develop Others

    • You must have the right people in the right roles, fully engaged, if you are going to accomplish the things you identified under See the Future.
    • If you don’t have the right people in the right job it can be very expensive and time consuming to fix.
    • Other people suffer when a poor performer is on the team.
    • Must engage people’s hearts and minds and have them buy in to the vision of the future. You don’t want them simply to get work done.
    • Should invest a lot of time trying get people engaged and buying in.
    • Some people aren’t suited for a role they’re in. Need to find their strengths and weaknesses and find the role that suits them. Sometimes people just need more training if they’re underperforming or to have better defined responsibilities.
    • Helping people leverage their strengths is one of the most rewarding parts of the leaders role.
    • Questions:
      • How much time do you invest looking for talented people to join our organizations?
      • What are the key characteristics do you look for in the people you select?
      • To what extent have you successfully engaged each member of your team?
      • What are ten specific things you could do to engage individuals more effectively in the work of the team and the organization?
      • What have you done to suggest to them that when it comes to Heads Down implementation activities, you work for them?
      • How are you encouraging the development of your people?

    Reinvent Continuously

    • A healthy disrespect for the status quo.
    • The best leaders are those that continue to learn.
    • If you stop learning, you stop leading.
    • The leader must model the behavior he or she wants people around to emulate.
    • Critical so that we can keep up with competitors and the rate of change in the world.
    • Ask questions like: How can we do the work better? How can we do it with fewer errors? How can we do it faster? How can we do it for less?
    • Important on three levels:
      • Personal: How am I learning and growing? What am I doing to encourage others in my group to constantly learn and reinvent themselves?
      • Systems and Processes: How are we doing the work and how can we do it better?
      • Structural: What changes in organization or team structure could be made to become more effective and efficient?
    • Questions:
      • Who are your mentors?
      • What are you reading or listening to?
      • What systems or processes in your area of responsibility need to be changed to enhance performance?
      • How could the areas under your leadership be structured differently to enhance performance?

    Value Results and Relationships

    • Profits and financial strength are the applause we get for a job well done.
    • Better relationships leads to better financial results.
    • If you don’t have followers, it’s very hard to get long-term results.
    • Must have high expectations for results and relationships.
    • High level of accountability, solved problems that negatively affected performance, celebrated success are all critical.
    • Must make time for those you lead and genuinely care for them.
    • Catch people doing things right.
    • Listen.
    • Each person has his or her own personality and temperament. Building meaningful relationships can never be reduced to a checklist of activities.
    • Get to know people beyond who they are at work and what they do there.
    • Find out their goals, dreams, struggles.
    • Ask ‘Is there anything I can help with?’
    • Questions:
      • How much emphasis do you place on getting results?
      • How many of your people would say that you have made a significant investment in their lives?
      • What are the ways you have expressed appreciation for work well done in the last thirty days?

    Embody the Values

    • Genuine leadership is built on trust. Living consistently with the values you profess will help to build that trust.
    • Establish, articulate, model, and enforce core values.
    • If you don’t Embody the Values, you miss and opportunity to shaped the culture of the organization, and you do tremendous damage to your own leadership.
    • People follow leaders they can trust.
    • You win or lose credibility based on how well you embody the values, but you also set the tone and the example for the team.
    • Questions:
      • How can you better integrate our organizational values into how your team operates?
      • What are some ways you can communicate our core values to your team over the next thirty days?
      • How can you alter your daily activities to create greater personal alignment with these values?
      • How can you recognize and reward people who embody these values?
  • The Martian

    Today I finished reading the book The Martian by Andy Weir. It was a phenomenal read and I highly recommend it.

    The story centers around Mark Watney, an astronaut left behind on Mars by his five crew mates due to a freak accident.

    This book kept my attention with every page. The seemingly accurate scientific details, Watney’s goofy sense of humor, and the extreme conditions he finds himself in and his incredible ingenuity to work his way through it all make this book a pleasure to read. I couldn’t recommend it more.

  • Highlights of 2014

    2014 is now over and it’s been a great year. Last year my wife and I moved to Austin, TX which was a fantastic move. We’ve really enjoyed living here. The city and people here are wonderful and there’s never a shortage of things to do. While this year didn’t see as drastic a change as moving, there were some notable happenings.

    Travelled to Hawaii

    For our five year anniversary, my wife and I travelled to Hawaii. It was the most relaxing vacation I’d ever been on by a long shot. We stayed in Maui for a few days and then flew over to the Big Island for another few days. There’s breathtaking beauty everywhere you look.

    With Hawaii crossed off the list I only have five or so states left before I will have visited all 50. Looking forward to my travels to see the rest.

    Dipped a Toe Into Management

    This year I was charged with leading a team at my company. Before this I had only informally lead small teams and projects. But this was my first chance to really be put in charge of a team. My team consists of around 20 developers, testers, analysts and a few others.

    I knew that this position would be different than being focused on programming but it was far more different than I realized. The skill set is totally different, my daily schedule is completely different, I only code a few hours a week. That said, I haven’t minded these changes. I get to work with a lot of great people much more so than I previously had.

    Also, it’s nice to be in a position where I can affect change in the company. As a programmer I only had so much influence but it’s a good feeling to draw on my experience and actually cause change to happened.

    Learned Scrum

    Because of my role change at work, I’ve had to learn a lot more about Scrum. I’m functionally the Scrum Master for my team.

    Before I had understood conceptually what agile meant but this year I feel I really learned it. Previous jobs have very much operated in a waterfall process or no process at all so I hadn’t really had any experience with agile.

    I certainly appreciate why so many companies have moved to it. It’s nice to have a process that everyone can agree on and follow. That said, Scrum isn’t a panacea, but it does seems to be effective.

    Stayed Organized

    I’ve always been interested in efficiency, productivity hacks, task management software, and the like. There’s something fun about it. Mostly I think I just like playing with the tools.

    But I wasn’t that busy. This year that changed. I got much more busy at work and really with life in general.

    Because of that I’ve had to stay organized just to remember everything. That means I’ve been using Omnifocus to keep track of tasks, Google Calendar for meetings and appointments, Evernote for notes and files, as well as other tools. I’ve tried hard to keep my email inbox empty, keep files organized and in general just tried to stay on top of things.

    I wouldn’t say I’m more productive than I was last year but I certainly have had to stay far more organized just to keep track of everything.

    Angular Woes

    Oh Angular, how I love thee. It simplifies a lot for developers and it’s focus on testability is great. It’s a pleasure to use.

    But it is starting to show some warts.

    I’ve now developed a handful of Angular of apps, one of which is truly massive (I don’t use that word lightly). My experience is proving that creating large, complex, and performant apps in Angular can be very challenging. The problem is that the very things in Angular that make things easy are a black box for developers. I suppose it’s a case of leaky abstractions.

    It seems to me that for a large application written in Angular you absolutely must have devs with Angular experience. Otherwise what I’ve found is that Angular makes it so easy to start building things without knowing what is under the hood that you can write very slow code that goes unnoticed until it’s put it together with many other devs’ slow code.

    No framework is perfect. They all have their issues. And Angular’s seems to be this. I’m really looking forward to Angular v2. Hopefully they can improve performance as well as eliminate some of the other cruft that has built up over the years.

    Fountain Pens as a Hobby

    I’m not sure where the idea to buy my first fountain pen came from but it came nevertheless. I bought a Pilot Metropolitan earlier this year and fell in love with the way it writes. I’ve since purchased a few more and tried many different inks.

    I think the tinkerer in me is what loves them. There are an endless combination of pens, inks, nibs and paper that you can try together for wildly different combinations. It’s a lot of fun. I’d recommend everyone try a fountain pen at least once. It’s quite a bit different than your typical modern day pen.

    Conclusion

    So there you have it, a few highlights of the last year. It’s been a terrific year and I’m looking forward to finding out what 2015 has in store!

    Hope you all have a wonderful 2015!

  • Count Your Angular Watchers

    In my day job we’re building a very large Angular app that is having some performance issues. So today I started trying to do bit of tuning.

    One thing I suspected was that there were too many watches but I needed to verify this.

    Thankfully I found the answer in Kent C. Dodds article on counting your application’s watchers.

    Just paste the following snippet into the browser console and it’ll return the number watchers.

    function getWatchers(root) {
      root = angular.element(root || document.documentElement);
      var watcherCount = 0;
    
      function getElemWatchers(element) {
        var isolateWatchers = getWatchersFromScope(element.data().$isolateScope);
        var scopeWatchers = getWatchersFromScope(element.data().$scope);
        var watchers = scopeWatchers.concat(isolateWatchers);
        angular.forEach(element.children(), function (childElement) {
          watchers = watchers.concat(getElemWatchers(angular.element(childElement)));
        });
        return watchers;
      }
    
      function getWatchersFromScope(scope) {
        if (scope) {
          return scope.$$watchers || [];
        } else {
          return [];
        }
      }
    
      return getElemWatchers(root);
    }
    
    getWatchers().length

    Even better is that you can select DOM element on the Elements tab in the console and then execute getWatchers($0) and get watchers for only that element and it’s descendants.

  • An Event Apart: Mobile Design Now

    Luke Wroblewski did an all day session at An Event Apart about mobile design considerations, patterns, and gotchas. It was an incredibly informative talk that provided a lot of insight into what works and what doesn’t on mobile.

    Here are some highlights I noted.

    • Mobile design is more than just responsive design. Some things (like modals) just don’t work well on mobile and resizing the site doesn’t solve this.
    • Watch the scroll distance. Keeping too much content on mobile can force the user to scroll far too much.
    • Don’t simply follow the crowd (Facebook, Google, Twitter, etc.) when designing. They often get things wrong.
    • Don’t assume an icon is a convention that everyone will recognize. For example a magnifying glass could represent a search or zoom.
    • Hamburger menus are bad for usability. They hide content from the user and the icon isn’t clear enough. May be ok for some secondary elements though. An alternative that performs better would be to have a button that says “Menu”.
    • Carousels are similar to hamburger menus in that they hide content from users. Analytics show us that the first element gets the majority of clicks with the rest never seen by users. Auto scrolling through carousel is only a bandaid. Consider adding a list of all slides that the user can click on the jump to specific slide.
    • Don’t go straight to drop down menus for forms! There are often much better options. For instance, a stepper may be a better way to let the user choose number of passengers since options are limited and typical users will only pick one or two.
    • Controls that work well on desktop need to be rethought before dropping them into mobile. The calendar popup is good example of a control that could be rethought to provide better experience. Possibly use an entire screen and show multiple months the user can scroll through rather than forcing user to pick month via arrows.
    • Often times people (management) will be resistant to put the effort into researching and redesigning controls for mobile. Show them the results to sell it: more sales, less support calls, etc.
    • Keep the user in input mode. If the user starts entering info into a form field, allow them to stay in input mode by automatically focusing on the next field and not closing the keyboard.
    • Along the same lines, combine fields together to make a much better UX. Full name field vs first and last, phone number vs three separate fields. Don’t let the database ruin your user experience! Parse names and numbers on the backend if need be. This will often be much better for internationalization too. Many people from other countries have more than just a first and last name.
    • Make primary actions obvious. Don’t hide “Next” button in top right of header without any color changes because users will have a hard time finding it.
    • Just-in-time (contextual) education is much better than a one time intro/tutorial screen on first open. Users will just skip tutorial screens and be just as lost.
    • When asking for permissions (location, notification, etc.) you have one chance to get it or the user will have to navigate through many setting screens to enable it (not going to happen). It’s better to explain yourself and then ask.
    • Double dialog box is alternative for asking for permissions to preserve chance to get permission. Present dialog explaining and asking. If the user agrees, then make the one time only official request through the OS.
    • Perform actions optimistically. Rather than updating UI after save, assume the save will work and reflect that in the UI. In the background try to save multiple times and then only after some time, let the user know it failed. This can go a long way towards making the UI feel fast.
    • Start simple and get fancier for bigger screens. For example, use an image of a map rather than an embedded map on mobile but on desktop use embedded version.
    • Tables aren’t particularly mobile friendly. A better approach in many cases is to use the cards UI pattern.
    • Use content as navigation. E.g. clickable content that takes you to more detailed screens.
    • Optimize for mobile ergonomics. Based on how users typically hold their phones, the bottom half is easiest to tap. Consider putting the most commonly used elements there.