Don’t Fall Victim To Team Growth

I have spent a good part of my career working in fast growing tech organizations.  Growth is hard.  Here are some of the lessons I have learned.

Hiring

1) Unbalanced hiring. We hired too fast in one department but did not ramp up proportionally in adjacent departments. (e.g. too many engineers and not enough product managers)
2) Too rapid hiring. Typically when we were ready to hire it was because the backlog was so large “we needed people now” and rushed the process. I’d rather not hire at all than just fill a seat with a warm body.

Communication

Breakdown in communication. Growth in numbers exponentially increases the number of communication channels. With the growth in numbers we continued communicating in the same ways we always did. The message started getting lost because our methods had not scaled. Chaos followed because everybody was running off in their own direction

Process

The application development life cycle changes as number of staff and customer base grows. When we were small we could coordinate very easily but as we grew it required much better coordination. Also, the cost of system outages became much more pronounced since more people were relying on the system being available. Both development and deployment processes had to change to meet the new needs but we were slow to adjust.

Culture and Vision

Dilution of culture and vision. As we brought on lots of new staff we also brought on lots of new opinions and habits all of which were uniformed by the organization’s history. We did not have a plan for on-boarding these new hires and getting them up to speed.

Focus

Poor focus. The increased budget and staffing levels resulted in unfocused project spending. We no longer had to focus on what was most important. Rather than lasering in on key result areas we spread our energies across a hundred different projects and ended up getting less done than we previously did with fewer people.

Stop Brainstorming and Start Doing: Why Idea Generation Fails

Brainstorming Doesn’t Work

LinkedIn has an interesting post about why brainstorming doesn’t work.  The author, , shares his experiences managing idea generation at Google. https://www.linkedin.com/pulse/stop-brainstorming-start-sprinting-jake-knapp

He has also written a book on the topic: The Sprint Book

The Sprint Book
The Sprint Book

Bottom line: less brainstorming and more building.  Generate some ideas and then do a five-day POC.  You will get much more done and actually be more creative.

This is a concept I was acquainted with several years ago and a lesson I am still trying to learn.

When I started at restaurant.com in 2008 I was an ambitious but uninformed software developer.  I mentioned something to the owner about me being an “idea guy”, like that was some unique thing.  He said “let me show you something.” And walked me into a conference room completely wallpapered with full-color printouts of hundreds of ideas they had generated during brainstorming sessions.  Basically he was telling me “You are a one of a kind idea guy…just like everybody else.”  He followed-up with some coaching.  In particular…we all have ideas but we don’t all execute on them.  It’s one thing to talk about stuff and another to actually do stuff.

At the time I didn’t fully understand what he was telling me but the longer I have worked in the software industry the more his comments make sense.

To the point of the article: I like the concept of the 5 day POC sprint.  It’s the whole point of being an agile organization.  Don’t just sit around being idea guys and instead try out a bunch of stuff and see what works.

Leadership Styles in the Workplace

I was listening to a Chris Locurto podcast the other day.  The topic was leadership styles and how they affect people.  The conclusion was very simple but for some reason I had never really thought through it very carefully before.

Here is the comment I left on the podcast’s blog: Leadership Styles in the Workplace

When you said the teams in your leadership exercise preferred any other leadership style above the “absent leader” I literally stopped in my tracks (nearly causing a horrible workplace accident as people in the hall behind me had to stop walking or quickly step around me to avoid a collision). I am not sure why but that statement was a shocking moment of clarity for me, a gestalt shift. In retrospect it is such an obvious concept.

I think there is this idea in the US, probably a result of our political structure, that there is nothing to be avoided more than a dictatorship. Give me liberty or give me death! But the insight from your retreat is a strong anecdote that anarchy is even worse. Where there is no vision, the people perish. Why do people follow a dictator? They want clarity. (I also think this explains the current election cycle…and I will leave it at that)

Over the last few months I have been thinking almost constantly about leaders I have worked for and why I thrived under some and chafed under others. Your single statement from this podcast helped everything click into place. The bottom line was this one point…my respect for the leader was directly proportional to how engaged they were. Were they pushing me to be better? Calling me out when I messed up? Were they setting standards, looking for input, considering the thoughts of the team, incorporating other ideas, and helping the team grow? Those were the leaders I would follow again.

Laissez faire leadership style is not leadership. It is a cop out…and the fastest way to lose confidence of your team.

Born a Leader or Made a Leader?

Are leaders born or made?

I’m Going Pro

I am fit, lift weights, run, played sports in college, etc… but no matter how hard I try I could never, ever, not possibly make it in pro sports. As they say I “just don’t have it.”

Conversely, every member of a pro sports team, while naturally gifted beyond what us mere mortals could ever hope for, did not just show up to the field one day and get drafted. They spent a thousands of hours drilling, playing, working out, being coached, thinking about their sport, talking about their sport, watching their sport, etc… Yes they are genetic freaks but it was not a mere accident of nature that they made it to the pros.

Success Equation

So the point of “being born a leader”. Our natural talent as a leader is not the final determinate of what kind of leader we will be. It is a multiplier…a factor in a much larger equation. The equation is something like [Talent x Effort x Time x Environment x Humility x Team x Luck]. If you rely on any one or two of these you are never going to make it. However some of these are more valuable than others and my personal experience points to talent carrying a disproportionately smaller weight than the others.

I think the stereotype of the brilliant Stanford graduate entrepreneur way overblown. I have spent way too much time reading about successful entrepreneurs – probably should have spent more time actually doing. One of the most common factors is they were not the smartest person in their class. Very often they were C students struggling to get through. Despite (or perhaps because) of their struggles they understood things weren’t going to just be given to them; instead they would have to earn them.

Attitude over Talent

My personal experience: I will never be CEO of a major multi-national. I am lacking the natural talent, luck, and certainly some of the dedication required to get there. However, I can sure lead my current team like nobody’s business and that ability did not happen accidentally. I was not born a leader (heh, my little brother got all the charisma and talent; I got the leftovers) but I compensate with work ethic and study. I work like a maniac all day, and every night I go home and ask myself how I did, evaluate where I messed up, read books, listen to podcasts, take classes, etc…

This does not make me special somehow…I am not unique in these attitudes. So many really successful people got there through years of dogged hard work, tenacity, and the humility to admit when they didn’t know something. Some of them may have had limited talent but ultimately won through effort. One of the most successful businessmen I know, a multi-millionaire, was kicked out of college and spent years working two jobs so that he could suddenly became an overnight success.

I’ll take effort over talent any day of the week. The attitude of “I don’t have the talent and thus can’t make it” is incredibly dangerous. It makes you a victim and victims will not succeed at anything. Excuses are THE limiting factor in a person’s growth. Dude, step up, turn off the tv, take ownership, and win.

How To Deal With Stress

How to Deal With Stress

Stress is part of everyday life.

Just the right level of stress makes you better. It pushes you to growth. Too much and it ruins you through obesity, hypertension, relationship problems, lack of creativity, and lack of energy.

Like most people I have my fair share of it. How to deal with stress? Here is my personal strategy for handling pressure:

Pray About It: Well duh. There is only so much I can do on my own.  Giving it up and letting it go is critical.  Mediation can help some I think but I think it misses the point.

Workout: Endorphins are amazing. I work out every day, no matter what. Most days this is over lunch. There is nothing that kills stress better than a really hard run or weight training session. The more I have going on the more important a workout in. Afterwards I am always more alert, have more energy, more creative, better looking, etc… Bottom line it helps me get more done.

Eat right; I like donuts more than about anybody but they sure don’t help my state of mind. Sticking to slow carbs, protein, and healthy fat really makes a huge difference in stress levels.

Write it all down: When things get really crazy I do a GTD style brain dump followed by Delete, Delay, Delegate, or Do (by priority). Knowing I have it all written down allows for more brain cycles to actually do work.

Eat dinner with my family: This is a near non-negotiable for me. I will get up earlier, work later, whatever, but I almost never sacrifice this time with my family. It gives me perspective. No matter how crazy it is at work it doesn’t matter. I am doing it for my beautiful family. I know not everybody has this luxury but you have to find a way of getting perspective.

Shut if off: No emails after dinner. My phone gets put in another room. If somebody needs me they can call me.

Rest day: I work like a maniac six days a week. Sunday, I read books, drink coffee, and play games with my kids.

How do you deal with stress?

Unable to update database to match the current model

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration. You can use the Add-Migration command to write the pending model changes to a code-based migration.

This message results from having unapplied pending migrations to your code first data model (and have disable automatic migrations).  Run “Add-Migration” then “Update-Database” and you should be back up and running.

Agile is Dead

Agile is dead.

Agile has reached a critical mass of name recognition which, because of its very popularity, has doomed itself to the trash bin of the outdated and out-of-style.   Like Facebook, Green Day, and Hungarian notation Agile is now the domain of the middles (middle-aged, middle-class, mid-managers living in the middle of suburbia, driving their mid-sized cars to their mid-sized companies.)  In other words it is main-stream.  The term Agile is officially a part of the corporate environment and thus lost its street cred with the cool kids in dev world.

Don’t believe me?  Go through you LinkedIn connections, count the number of people who list “SCRUM” or “Agile Methodologies” as a skill, then count up how many of them can actually tell you what those phrases even mean.  Or count the number of times you have seen an Agile team who has not deployed code to production in the last 6 months.  It’s depressing isn’t it?

What happened?  How could such a promising movement become just another cliché in the in the Big Book of Overused business terms?  The answer is us…the developers, the architects, the Agile evangelists.  We treated Agile as an end to itself.  A panacea meant to save us from “The Business” and its mind-numbing bureaucracy.  In our rush to the Nirvana of the perfect sprint planning session we lost sight of the value of Agile and in the process created our own quagmire of mindless ceremonies.

Agile is not the end goal and neither is standups, burn-down charts, refinement meetings, or sprint velocity.  The end goal is, and always has been, to deliver value.  Agile is simply a tool to help us accomplish this job.  By focusing on the tool we missed the entire point.  If you are not regularly delivering value you are not doing your job.

It is time to get back to the basics of delivering value.  Delivering value is really not that complex.  Here are the steps:

  1. Start with an idea: Do you have an idea for a feature that needs developed?  Do a little research, makes some informed guesses, and apply some common sense.  This is called strategy.  This is simply your best guess at how you are going to beat your competition.  (You don’t need an MBA to figure that out)
  2. Run a test: Don’t get stuck in step 1. You will not come up with the perfect plan.  Either one of three things are going to happen 1) Your initial assumptions will be wrong 2) The world will have changed by the time you finish your plan 3) somebody else will beat you to market.  Find a part of your idea you can implement now and try it out on real life people.  Stop with the over analysis and bias towards action.
  3. Learn: You have real live people using your real life feature. It is no longer hypothetical.  You are going to learn way more by testing your hypothesis than you are by discussing it.  This is called empirical evidence.
  4. Do it again: (and again, and again, and again…)

By repeating this cycle you will be able learn from your mistakes, start producing value (making money) early, cut your work in process (and thus your costs), and ultimately respond more quickly to the needs of your market by nimbly reacting to a changing marketplace.  This mobility will set you apart from your slower moving competitors who do not share your agile mindset.  Move quickly, learn from your mistakes, change direction easily, and overall…be Agile,

Long live Agile

Legacy Code Is Life

I have banned my team from using the term “legacy code”. The term has such pejorative connotations. Using the word “legacy” indicates it is out of fashion and should either be replaced or given to the offshore group to maintain.

The problem is code becomes legacy the instant you deploy it to production. This means that at any given point only .001% of the code base is actually “new”. Having a negative view of brown-field code means you have a negative view of the majority of your job as a developer. Everything you work on is some form of old…and getting older.

We forget that the reason money shows up in our bank every couple Friday’s is because this old code is actually generating value right now in production. The green-field code is simply hypothetical. Maybe it will be valuable and maybe it won’t. For sure it won’t until we finish it. If I have a choice between working on new code or having cash in my wallet I am choosing the cash every single time.

We also forget how many years of testing effort have gone into this old code base. Yes it may be ugly but that ugliness is sometimes the scars of many hard-fought battles. This battle hardened code comes with years of baked in QA testing and bug removal. By throwing away the code and starting over you are ignoring this historical value.

Also, by throwing away legacy code and just starting over you are showing your hubris by believing you can just rewrite it and 1) make it pretty 2) make it work right out of the box. Look at something you wrote even a month or two ago and ask yourself how good is it really. My guess is it is not as great as you expect your new code to be.

Personally I prefer working on old code. It gives me an opportunity to show how much of a better developer I am than the previous guy. “Look I have reduced line count by 50% and increased throughput by 100%.” Just saying. 🙂

(originally posted as a comment to a .NET Rocks podcast episode: Taking Over a Brownfield Application with Scott Ford)

Growing as a Software Developer

Do you have 20 years experience or do you have the same 1 year of experience twenty times? ~Scott Hanselman

Just like running, or weight lifting, or anything you have to push yourself beyond your stasis point to grow.

Saying your are a growing developer because you have done it for so long is like saying that since you have driven for 20 years you are a great driver. Well maybe you have driven for 20 years in small town Iowa but you are certainly not ready for the Indy 500 or even downtown Chicago for that matter.

I like your line “Blogging more accurately represents exhaling knowledge to those around you.” I would like to extend that idea. Blogging, or teaching, or explaining forces you to confront the details of the topic. While still in our heads these ideas are gaping holes that we have somehow managed to mentally spackle over. As soon as the words leave our mouth the spackle disintegrates and we realized how little we actually know.

I will often stop a random person at my office, dev or not, and explain to them my problem and the possible solutions. Typically I get a blank stare…Doesn’t matter. Simply verbalizing my thoughts helps me form new previously undiscovered connections. I also like to host brown bags where I present a topic I have recently been studying. The team thinks its great because they get to learn something new but what the don’t realize is I am doing it simply so I can understand it.

How does the joke about the professor go? “I don’t know what is wrong with these students! I taught them this stuff once and they didn’t get it. I taught it to them again and they still didn’t get it. I taught it to them a third time and now I get it but the students still don’t understand!”

Should You Get An MBA?

I am both an avid “self educator” and a very recent MBA grad from a relatively prestigious business school. While I am not in the corner office (yet) I have already seen concrete, direct impact from these educational experiences. I have also spent considerable time talking with successful business leaders (both MBA grads and not) trying to understand what has made them successful.

Pros for an MBA

Forced Study

Very, very few people discipline themselves enough to replicate the enforced deadlines of an MBA. Don’t kid yourself…you are not that person. My MBA experience was intense and there were many nights where I worked well into the early AM hours to get my work done. People just don’t do that on their own. Besides, If you are that disciplined already I doubt the MBA will benefit you. You are already in the 99th percentile and will find a way of getting things done.

Professional Network

If you get into a good school your professional network will become incredibly valuable. Whether you like it or not, who you know is nearly as important as what you know. The number of VP’s, directors, and successful entrepreneurs in my personal circle is unusually high and a direct result of connections made during my time in my MBA.

guided learning – How does the quote go? “A self-taught man has a poor master”. It is helpful to have an expert guide you to the important topics and highlight key elements. Also the interactive learning is crucial in some fields like finance and decision sciences.

cachet – having the MBA on your résumé (and in some cases a top 10 MBA) is the only way you will be considered for certain roles. In particular if you want to work for specific consulting or finance firms you HAVE to have an MBA from a particular school with a near perfect GPA. Like it or not it is the criteria they use.

However

If you look at graduates from MBA programs, especially top-tier programs, you will see a disproportionately high number of very successful individuals.

But there is a cause vs. correlation issue here. The cohort of students I went to school with were already a self-selected group of high performers. They probably would have found a way to succeed with or without the education. The defining characteristic of these students was not their intellect (though many of them were brilliant) it was their work ethic and their drive.

Also, I have several good friends, some without even a college education, who have absolutely killed it in the marketplace. No MBA, no business education, nothing. I have a very good friend who, while several years behind me and having just a degree from a Bible school under his belt, is doing much better than I am in terms of raw income.

Bottom LIne

B school is certainly helpful but don’t rely on it to make you successful on its own. It is a small piece of a much larger picture involving discipline, persistence, connections, effort, self learning, and luck.

An MBA is not a degree you get for self actualization. If you want that go take a pottery course or something. A good MBA program is ton of work meant to help build pragmatic, practical skills. Also it costs a lot of money and if you are going to a top 10 school you may not get the ROI you expect.

If your company provides tuition reimbursement I think getting an MBA is a no brainer but if you are paying for it yourself you need to count the costs very, very carefully.

And whatever you do please don’t finance it. Find a way to cash flow it. You will be much happier after the fact.

(Originally posted as a comment in response to the podcast episode: Do You Need An MBA To Be Successful? A Discussion on Education)