Ten Predictions for 2015

- The Internet of Things will go mainstream. You could argue this has already started but we are going to really see it take off in earnest. The #1 use case is going to be a connected and seamless media experience between your car, your phone and all of the rooms of your house. The real sign this has occurred will be that you can plug and play pieces from different companies (aka use your iPhone, Google Chromecast, Samsung TV, Microsoft xBox, and Sonos speakers). Notably, talking to your kitchen appliances will continue to be trope for SciFi movies.

Bitcoin still won’t take off and still won’t have a “killer app”. Bitcoin itself still won’t solve a real problem for most people (and maybe never will) and BTC will continue to be too complicated, crime-ridden, and volatile for normal people. More importantly, the irreversibility of transactions is inherently a bad thing for most consumers. Couple that with the fact that the time it takes for transactions to be confirmed is measured in minutes/hours, rather than milliseconds, means BTC still won’t manifest itself in a meaningful way in 2015. The same goes for the larger block chain ecosystem, though we are going to see some good tech/software arrive on the scene.

A real, viable non-Google Android will break into the West. No, not Fire Phone++. I’m talking about Xiaomi. Marketshare will be very small, but it will be enough and the products will be good enough, that the debate stops being simply iOS vs Android.

The 2-year contract will still reign in the USA, but the cracks will deepen. T-Mobile will keep leading the charge here on the carrier side, and the continued commoditization of phones (aka the blurring of quality between mid-high range devises) will reduce the need for subsidized devises.

Wearables will continue to fall flat. Apple Watch won’t change this and Google Glass will be canned completely.

The tablet market will stay flat or contract. Businesses and the majority of western households’ need for a PC will not change and the phone will increasingly fill every role the tablet was suited for. The exception will be e-readers (which aren’t really tablets anyways).

Cybercrime will continue to make headlines and it will continue to get worse. We will discover more nation-state level malware and there will be more (probably many more) Sonys and Targets. Furthermore, cybercrime will continue to usurp terrorism as the pre-eminent boogieman in the media.

B2B SaaS will continue to kill it and we are going to see even more winners emerge at both ends of the ACV spectrum. The last big round of IPOs riding the “move to the cloud” wave will happen, and the early birds of the next enterprise cycle are going to start becoming household names.

VR will continue to fall embarrassingly short of the hype. A consumer version of Oculus won’t ship, no other major competitors will release anything viable, and no blockbuster game (or any other app) will emerge. Despite this, hype will continue, driven by companies like MagicLeap (who also won’t launch anything).

The path to true “cord-cutting” will become clear. 2015 will be the year that the big content providers show their hands on catering to cord-cutters. In most cases, this is going to be a streaming service, a la Netflix, but expect to see continued experimentation with mixing and matching bulk streaming access, pay-per-view content, ad-supported, exclusives, pay-by-share, and complicated release schedules. Also expect the cable/carrier companies to bundle these content services with their internet service. Notably, at least one major US sports league (or possibly ESPN) will also make this move.

Some of these are probably no brainers and all are far from original. Despite that, I think it is interesting to “tag” one’s thinking from time to time and what better time than at the new year. Overall, I’m struck by how negative my predictions are for 2015. I’m not sure what to make of that.

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

What Differentiates Highly Productive Teams?

This post originally appeared on The Parklet Blog

In the hunt for more productivity, it is impossible not to run across examples of teams and organizations that seem to consistently accomplish the impossible. Against all odds, they complete projects under budget and ahead of schedule, with fewer people. You’ll find some of them in most organizations of substantial size, and in the start-up world they are the tiny companies that always seem to churn out products and turn nothing into key deals and partnerships. It is easy to write them off as unicorn teams full of “ten-Xers”, but what really separates them from the rest of the pack?

Mutual Respect and Confidence

In a word, trust. To be a highly effective team, you have to respect each other and have confidence in your abilities. Without it, real delegation and ownership are impossible. One of the best ways to do more with less is to not waste time repeating work. A lot of what we think of as necessary process is actually just work repetition because we don’t trust each other (status meetings, design collaborations, approval processes, etc.). The invisible repetition is actually much worse though.

How much time do you spend thinking about, problem solving for, and worrying over work someone else on your team owns? This is all repeating work and you should just stop doing it. Everyone has a cognitive limit on what they can do in a day. Those people that seem to get so much more done than you are probably not much more capable than you; they just spend their energies on their work, not silently redoing everyone else’s.

This isn’t to say that your team should all go off into their respective cubby-holes and ignore the realities of a project. That would be missing the forest for the trees. Instead, look hard at how you are spending your time and be honest with yourselves about why you generate the deliverables you do and what you are each spending your time thinking about.

Leverage Tools

This is the one everyone knows about and tries to do (after all, it is what separates us from the monkeys). So what are those unicorn teams doing differently? They focus exclusively on tools that multiply output or effectively share knowledge. When it comes to productivity, tools that do anything else are worse than useless.

Notice that I said multiply output, not save time. This is an important and subtle difference, deserving of a post of its own, but suffice it to say, saving 20 hours a week does not equal a 2x increase in work output.

Two examples:
What would you rather have? An automation tool that makes emailing your outbound leads completely effortless; or a personalization tool that dramatically increased your outbound conversion rates. Your unicorn sales teams are going with the latter every time.
What about a code generation tool that reduces hand written LOC by 90% vs an automated testing tool that lets you deploy features confident of performance and regression. Once again your 10x team is taking the latter.

So what about tools that help teams effectively share knowledge? These are tools that keep everyone on the same page or directly make domain specific knowledge available. That means they are either seamlessly pushing status data out or capturing and publishing domain knowledge. And, to be effective, they must integrate directly into your work flow with little to no modification. Again it might be useful to say what they aren’t, namely tools for direct communication (chat apps, email, social networks collaboration tools) and document builders (wikis, spec/diagram/report generators).

Great tools directly enhance the team metrics that matter, surface useful data seamlessly and reduce the need for team members to context switch. Highly effective teams know this and are ruthless about identifying and utilizing the great tools.

Always Iterate Process

Finally, standout teams weren’t born that way and they didn’t just wake up one day and decide to stop slacking. Instead, they built themselves up into well oiled machines by continuously iterating on their process. Building self-reflection and a willingness to embrace change into your team culture is vital. You must honestly and openly look at what process generates results and what falls flat. Then, apply the same problem solving you take to customer issues to your own team dynamics.

Of course this means trying new ideas and learning from other teams. But, it also means bringing the same goal oriented, measurement grounded rigor you take to external project to your own process.

Rome wasn’t build in a day, but with the right foundation of trust, a careful selection of tools and a consistent drive to keep improving, the walls of your Colosseum will be going up before you know it.

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

What it feels like to have poor communication skills in a meeting

Today a satirical video about what it feels like to be the only engineer in a meeting has been making the rounds. I’m not going to link to it, but I’m sure you can find it. While the video has some funny moments, it is sad to see the way this has been spreading like wild fire in the software community.

I feel like this is exactly the kind of video that alienates outsiders from the community and feeds the stereotype of engineers as pretentious, noncooperative and uncommunicative people. While the video itself isn’t really even about engineers specifically, the community fervor and treatment of it as if it is some kind of brilliant satire on the struggle we are forced to live through every day is absurd.

In software engineering, your ability to communicate effectively (with other engineers and non-engineers alike) is arguably the most important skill. It is sad to see so many people feel that they can identify strongly with this video. If you consistently feel exasperated by your colleagues inability to comprehend your simple, elegant explanations, then it is likely those explanations aren’t as simple or elegant as you think.

I know this is just a silly video, but it struck a nerve. Communication is a two way exchange and more often than not, failure lies with the delivery not the reception. Being an engineer doesn’t automatically make you the smartest person in the room and relishing in having squirreled away knowledge from your coworkers isn’t productive or healthy.

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

remove_const

In testing, it is often nice to override a constant to test configuration dependent behavior. Ruby will scream at you when you do, creating unnecessary and annoying logging artifacts in your test suite.

it "should have monkeys" do
 MonkeyModule::HAS_MONKEYS = true
 MonkeyModule::HAS_MONKEYS.should == true
end

This code would work but it spits out these nasty warnings.

./monkey_spec.rb:62: warning: already initialized constant MonkeyModule::HAS_MONKEYS
./monkey_config.rb:2: warning: previous definition of HAS_MONKEYS was here

Today I found the helpful Module function remove_const. Call it before reassigning and the warnings are gone.

it "should have monkeys" do
 MonkeyModule.send(:remove_const, "HAS_MONKEYS")
 MonkeyModule::HAS_MONKEYS = true
 MonkeyModule::HAS_MONKEYS.should == true
end
  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

3 Ways Employers Can Communicate Their Culture

This post originally appeared on The Parklet Blog

This tweet by @nancyrubin got me thinking about what employers can be doing to communicate their culture both to current employees and potential hires. Before diving into some practical advise, I want to quickly address why consistently communicating your culture is important.

When dealing with potential hires, accurately conveying company culture is vitally important because it can save you many thousands of dollars from failed new hires. Screening for a strong culture fit has to be a top priority because, regardless of other factors, culture fit will make or break a successful onboarding and assimilation for a new employee.

In addition to preventing failed hires, demonstrating a strong company culture during the interview process can be the deciding factor that sets your company apart. The talent market can be fierce and anything that can give you that extra edge over your competition is going to be worth it.

Consistently reinforcing company culture with existing employees is important too. It helps employees maintain excitement for their work and makes unifying the organization easier. When employees can readily see how the company’s culture and vision links to their day to day work, they will be more satisfied, creative and productive.

That’s all well and good, but how do you do it? Below are 3 great tips for communicating your company’s culture.

Be Explicit

Company culture is much more than the ping pong table in the office. You need to identify the core tenants that make your company unique. They can be just about anything so long as they are well defined and important to your organization. Once you’ve identified what those are, you should be very explicit about demonstrating how they impact decision making.

For example, if your company values transparency then you should explicitly call this out in the interview process. Proactively engage your candidates about what the hiring process is, where they stand in it, and explain that they can expect a high degree of openness because that is part of your culture.

Another example would be that if your company loves remote working, have a policy that forces new hires to spend a day in their first week working from home. Let them know this policy is to help them get used to your distributed environment and to demonstrate that remote working is a core tenant of your organization.

Identifying your core cultural values and explicitly calling them out helps employees truly understand the work place. They will feel more confident about making decisions that align with the company, and you will have a happier, more productive work force.

Be Consistent

Company culture can often get lost in translation because it is not consistently applied. Everyone from the CEO to the line manager to the HR director needs to demonstrate that they value and respect the company’s culture.

For example, if your company values work/life balance then you need to be sure it is consistently applied. If line managers are encouraging employees to work long hours in order to meet a deadline or the CEO is consistently pulling all nighters then it doesn’t matter how many times you say to your employees that balance is important. They will hear the real message, which is that the company expects long hours and doesn’t care about balance.

When leadership ignores cultural tenants or just gives them lip service, employees are not going to be bought in. You can’t fake it.

Be Honest

Your company culture is what makes your organization unique. Don’t try to force whatever the latest trends are onto your team. Be honest with yourself as a company and your team. If you are a work hard/play hard team that celebrates the 100 hour work week, then don’t try to sugar coat it for candidates. It won’t work in the long run, and it may even cost you some great hires that actually love that kind of environment.

Furthermore, when defining your culture, be sure your definition reflects reality rather than wishful thinking. Mislabeling yourself will do more harm than good. It will make identifying issues more difficult and leave you with confused employees.

Company culture is a big topic, and there is no one size fits all recipe for implementing it. But, if you are honest, consistent and explicit when communicating it to your employees and potential hires, then you will be surprised by how effective your team can be.

What other tips do you have for effectively communicating company culture?

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

Optimizing Employee Offboarding

This post originally appeared on The Parklet Blog

Whether an employee is moving on for new opportunities or you’ve been forced to let someone go, employee offboarding is an important process you should work to optimize. If done properly, you can part ways amicably and gain a company advocate where you lost an employee. Especially in the case of an employee voluntarily leaving, it is also an important data gathering opportunity.

Creating a Company Advocate

Creating a company advocate out of an exiting employee is all about managing a considerate and organized offboarding experience. Be prepared and professional. Your goal is to alleviate unnecessary stress and free up the employee to wrap up unfinished work and have final meetings with coworkers.

The first thing you should do upon starting the process is give the employee a schedule based on their final day. This makes it clear you are on top of the situation, and it will immediately answer most questions about the process. With that schedule, you should be sure to address all of the bureaucratic issues. Simply being forthcoming about issuing final paychecks, collecting company equipment and signing paperwork goes a long way toward leaving the employee with a positive final impression.

Just laying out the process isn’t enough though. You need to make sure everyone involved is on the same page. Be sure that HR has the paperwork ready, IT knows when to collect equipment and disable accounts, accounting issues a final check, and managers schedule exit interviews. The last thing you want is to find out something fell through the cracks after the employee is already out the door.

After crossing all of the t’s and dotting all of the i’s, it is important to have a candid, respectful one-on-one with the employee. Your goal, in addition to gathering valuable feedback (which I will address below), should be to establish a mutual respect and bring a healthy, happy close to the company-employee relationship. Allow the employee to candidly discuss the company. Let them do most of the talking and never have an argument. Ensure the employee that there are no hard feelings and that the company wants nothing but the best for them. This is vitally important because many employees will be scared of retaliatory behavior, like a negative reference.

By being prepared, professional and respectful during the offboarding process, you can often turn even a highly negative departure into a company win.

Collecting Valuable Feedback

In addition to bringing a healthy close to the relationship, it is important to gather feedback from the employee. Offboarding is one of the most valuable opportunities to collect data that will uncover insights about employee satisfaction, organization structure and management practices. Your goal should be to discover anything that can help you prevent future departures, voluntary or otherwise.

Exit Interview

The obvious opportunity to collect this feedback is the exit interview. There are some simple formatting guidelines you can follow to help improve the process.

First, keep it short. Don’t have a 3 hour gantlet of a meeting that you both dread all week. Set aside enough time for a full conversation but don’t draw things out and don’t run long.

Conduct the interview in a one-on-one fashion. Avoid ganging up on the employee and always perform the interview with someone other than the employee’s direct manager. This is very important because you want the employee to speak freely, and there is often valuable information to gather on management styles and personalities.

Keep it consistent. Always ask the same basic set of questions and take written notes. This is important because you want to be able to compare data across exit interviews conducted by disparate interviewers. A great way to still have an opportunity to collect additional, unformatted feedback is to begin the interview by letting the employee describe their time at the company.

And finally, just to re-iterate because it is so important, never argue with the employee during the exit interview. It can be very common for the employee to get angry. That is fine, but you should never reciprocate. Just let them speak their mind.

Written Survey

In addition to conducting a well structured exit interview, you should have a written exit survey. The questions should be very similar to the regular employee surveys you do. Ensure the employee the data will only be used in an anonymized fashion.

Focus on measuring employee satisfaction with respect to important aspects of the company like management style, team size, career growth opportunities and quality of work. Use the data to inform decisions designed to prevent future churn and recognize disgruntled or under performing employees before they become issues.

Churn is never a good thing, but by providing a consistent, high quality offboarding experience, focused on creating company advocates and collecting data, you can set yourself apart as a company.

What are the best and worst experiences you’ve had with the offboarding process? How could they have been better?

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

3 Must Haves for a Great Company Culture Document

This post originally appeared on The Parklet Blog.

One of the often overlooked, but extremely important, company artifacts is the culture document. It could be a slide deck, a internal website or part of the employee handbook. The format isn’t important, but it must be accessible and it needs to have the right content.

Your culture document should tell the story of your company. After reading it, I should know how you got to where you are, what things are important to you as an organization and where you are going. You can answer those questions in a lot of different ways, but there are some common elements you can almost always find.

Mission Statement

The idea or purpose that drives your organization is central to a strong culture. It should be clear, concise and unique. It should serve as a guide for defining your values and as the legend to your journey’s map. All of the people you work with should be united around it. Include it early and prominently in your culture document.

Company History

Every company has a storied history, full of moments that make it unique and that come together to make the company what it is today. Taking the time to capture that history is well worth it. It gives new employees a great starting point for understanding the organization and an immediate sense of belonging. It is also a great tool you can continuously use to keep things in perspective.

Company Values

All great companies have guiding principles they can turn to when making tough decisions. They are usually honest, specific and opinionated. They need to be explained thoroughly and shared readily. It is important that every employee knows and believes in them. One of the easiest ways to do this is by making your culture document accessible and emphasizing its importance to new hires.

Final Thoughts

These elements will serve as a strong foundation for building a great company culture, not just a document. Keep in mind that as your company grows, so will the challenges of maintaining a strong cohesive culture. Having a well defined and oft referenced document will be a great tool to help.

I hope this gives you a basic idea of how to build up a great culture document. What other elements have you found most useful when defining your company’s culture?

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

Playing with Prolog

I’ve been thinking a lot about logic programming lately. So today when a buddy of mine sent out a fun little puzzle, I decided it would be a nice excuse to bust out some Prolog. Of course that comes with the obligatory install, setup and orient steps. It is pretty painless though. Here’s the run down.

Install and run interpreter:

brew install swi-prolog
swipl

Some basic I found helpful:

['src.pl']. /* Load a file from source */
halt. /* Exit interpreter */
; /* View next result */

Anyways, the puzzle I wanted to solve was this:

The Absent-Minded Teller
An absent-minded bank teller switched the dollars and cents when he cashed a check for Mr. Brown, giving him dollars instead of cents, and cents instead of dollars. After buying a five-cent newspaper, Mr. Brown discovered that he had left exactly twice as much as his original check. What was the amount of the check?

My solution:

check([ORIGINAL]) :-
	between(101,10005,ORIGINAL),
	between(1,99,DOLLARS),
	between(1,99,CENTS),
	X is (DOLLARS * 100) + CENTS,
	ORIGINAL is (X - 5) / 2,
	ORIGINAL is (CENTS * 100) + DOLLARS.

I won’t spoil it for you, but if you call the function above you’ll get the answer.

It is always fun to dust off a programming language I haven’t touched since University, even if just to solve a simple puzzle.

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

for…in

Cruising MDN today looking for trouble and came across this little tidbit.

for..in should not be used to iterate over an Array where index order is important. Array indexes are just enumerable properties with integer names and are otherwise identical to general Object properties. There is no guarantee that for...in will return the indexes in any particular order and it will return all enumerable properties, including those with non–integer names and those that are inherited.

That means you can do the following:

var ary = ["foo", "bar", "baz"];
ary.bing = "boom";
Object.prototype.blamo = "bingo";

for (var x in ary) {
  console.log(x);
}

And conceivably get output like this:

0
2
"bing"
1
"blamo"

Fun stuff.

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit

Graph Search First Thoughts

When I saw the press announcements about Facebook’s new Graph Search, nothing clicked that made me want to use it. That changed last night.

At dinner a friend told me about a new app that let you rent scooters on the fly. I wanted to try it out. I knew it was called Scoot but I didn’t know their website. So naturally I Googled it. What’s wrong with this picture?

Screen Shot 2013-01-16 at 8.42.27 AM

Every search result is an article talking about the service, not a single link to the actual service. You won’t find the real link until the very last result. Clearly something is seriously wrong when Google returns 9 results talking about something before the thing being talked about. This got me thinking about how I really relate to the things I’m looking for. I sat down and thought “Hey, I want to look up that scooter thing in the city that my friend Matt told me about tonight”. Shouldn’t I be able to search “Scooter service that Matt likes”? Well that is exactly what Graph Search is for.

I’m not yet in the beta so I can’t say whether or not it would have worked, but I am excited to find out.

Also, Scoot is awesome. Check it out.

  • Twitter
  • Facebook
  • RSS
  • HackerNews
  • Reddit