What Makes a Code War Competition Awesome

I was reading the feedback for the recent Windward International Collegiate Programming Championships and I suddenly realized that some of the suggestions meant we had created a superb challenge to measure how well a student will do working for a start-up. And that makes for one of the most interesting student programming competitions.

What’s the fundamental goal at a start-up? Good enough first. This is very different from school where an A requires that you fully understand every problem and then provide a complete and elegant solution. Oftentimes in the real world the appropriate level of effort is C, because there is so much more to do. Our code war problem nailed this.

The number 1 piece of feedback we got was “not enough time.” Not enough time to fully understand every detail of the game. Not enough time to fully test each approach. Not enough time to implement all their ideas. Not enough time to write clean code. It’s not this bad in the start-up world (most of the time), but this is a great measure of how well individuals will perform in the get it done yesterday world of a start-up.

The number 2 piece of feedback was that with just minor improvements to the example program a team could make it to the semi-final. Very true. If you look at the solutions provided even to the final, you will see that out of the 40+ teams, there were 5 that had strong solutions. Eight hours is a horribly short time to create an effective A.I. That 5 teams accomplished it shows it was doable. That only 5 created strong players shows that it was a very difficult challenge.

And the number 3 piece of feedback was that there was no “correct” solution. Winning required that you’re A.I. beat the other A.I.s. But you didn’t know what the other A.I.s were going to do. So even with infinite time, you had no way of knowing if your solution would be best. Again, this is very much the world of a start-up where you don’t know if the world will like your creation until you ship it.

If a team did badly in this competition, does that mean anything? Absolutely not. Every programmer, no matter how good, has problems that are difficult for him/her. And there is also an element of luck when you have just 8 hours – were your first couple of approaches smart ideas, but they just didn’t pan out?

But if a team did well, and equally important enjoyed this type of problem, then the odds are extremely high that you will do well in a start-up environment. Students at the end of the 8 hours, beaming with joy, delivering an impressive solution, and saying they had a blast – that’s who I want working at my company.

Types of Code Wars

From what I have read most code wars fall into two categories.

The first is the ACM & HP type where you are given algorithmic problems and you have to produce a complete solution. These are fun challenges (at least I think so). Some are based on delivering a correct solution first while others are delivering the fastest solution in a set amount of time. This is where you get to show your raw programming skills.

The second is one where everyone writes an app for Facebook or the iPad or something else. And then a panel of judges determines who created the best application. Facebook, Microsoft, and others have competitions like this. This can be fun, but I think they aren’t a terribly fair “competition” because the judges will be wrong more often than right. Even the best V.C.s have a win record of maybe 25%.

I like how we structure the challenge. Having 8 A.I.s in each game means you have to write code that competes with 7 other A.I.s. That’s an incredibly open-ended problem. The teams are writing an A.I. which is a subject that most have no experience with – so we have a level playing field. And key to winning is coming up with the best play strategy, not writing the most esoteric code – so freshmen can compete with graduate students.

I also like that we keep the entire event to 8 hours. No advance knowledge and therefore no programming to be done before we start. And that creates one of the most intense programming experiences. It’s a sprint from start to finish (literally – students would run to me with questions then run back to their group).

Lessons Learned

There are some things we could do better.

The first is I had our entire tech support team working that Saturday to answer any questions. Yet several teams struggled to get the provided code running and never asked for help. The two that did ask for help we did a screenshare with and got them running in a couple of minutes. Next year we’ll make point number 1 that if you can’t get it running – call us!

Second, running the game required starting the server component, starting the client component, then clicking 2 buttons on the server. That added up to a lot of time for test after test after test. We’ll set it up next time so there can be a mode where you start the client and it connects to the server and the server starts so starting a debugging session starts the game.

Third, I should have created a game debugger where you could pause the game and then place all robots anywhere on the map, set the moves for the other robots, and set their damage levels. Then step through a turn. This would make it easy to see how a specific step would play out. (We did have verbose logging so they could see what occurred over the course of a game.)

Want to Compete?

Next year the competition is open to all schools world-wide. It will be held on the last Saturday in January. For details email us at codewars@windward.net. For students that want to work at a start-up – the best programming competition anywhere.

A Totally Unfair Comparison between the Nissan Leaf and BMW M3

Comparing the Nissan Leaf by the standards of the most perfect car ever created, the BMW M3 (E30 body style).

Time for a New Car

I’ve owned a BMW M3 for the last 22 years. It is the classic E30 body and I think it remains the ultimate family car (although as your kids get older the back seat apparently shrinks). It comes damn close to perfect.

But 22 years and 200,000 miles takes a toll on a car. Even one as well built as a BMW. As my mechanic said, it has had a hard life. (When I replied that I was the only owner his response was – yeah.)

One of my daughters said she kept expecting the M3 to fall apart while driving down the road, like the other cars at the beginning of The Great Race.

Ok, so it’s time to say goodbye to the M3. My initial thought was to purchase a new 3 or 5 series BMW.


The Tesla Roadster

We’re not going to stay on oil for automobiles. And the future will almost certainly be electric (not hydrogen or natural gas).

So the first stop was to look at the Tesla. This is a really cool car. Awesome acceleration & handling. All electric (hybrids are fundamentally compromises which degrades the performance of the car).

But no. Why? My first two thoughts was that the trunk was not large enough for the groceries and there is no back seat for my daughters. My second thought was oh my God, I’m old. When I was in my 20s those criteria would be irrelevant. At 55 they were deal killers.

And that took me to…

The Nissan Leaf

There are a lot of electric cars coming “real soon now.” But the Leaf is the only other one you can buy today (the Volt is a hybrid – primarily electric but still a hybrid).

So I paid to get a reservation for the Leaf (about 5 seconds after seeing this commercial). And then waited, and waited, and waited… Nissan can give software companies a run for their money when it comes to promised date vs. actual delivery date.

But end of December the cars finally arrive in Boulder and… I bought the Leaf.


A Totally Unfair Comparison

My criteria do not include the cost of gas. The difference in environmental impact is pretty minor. So the top selling points for the Leaf – irrelevant to me. What matters to me is how well the car performs, even though nowadays that mostly is the 6 miles to and from work. So fundamentally this comparison is comparing the Leaf to the M3 using the criteria that make the M3 the ultimate driving machine.

The first difference is response time. The M3 responds quickly. But the Leaf responds instantly. Press the accelerator and you are accelerating. Turn it on and seconds later it is fully on. Turn it off and it’s off. This is akin to the difference between booting up Windows and hitting the home button on your iPad. Instantaneous makes a gas powered vehicle’s response delay feel obsolete.

Second the acceleration in the Leaf is amazing. Better than the M3. Some of that advantage is the Leaf is accelerating instantaneously. But an electric engine also accelerates faster, with no difference in power over ranges of RPM. (There was a kid in some GT sports car who blasted out from a green light figuring he would show the old guy in the boxy mom-mobile how much faster he was. So I hit the accelerator and blew by him – he’s probably still wondering how that happened.)

The third giant difference is that there’s no drama to it. When you accelerate in the M3 you feel and hear the engine as it accelerates through each gear. You feel the jump as you shift and the engine changes tone to run up again on the next gear. With the Leaf you are just going faster. No sound, no jumps, just faster speed. In fact you have to watch the speedometer for the first couple of weeks because you will find you are going a lot faster than you think.

Now this difference is not an advantage or disadvanage for the Leaf. In fact, when you have someone in front of you driving slow (usually in a Subaru) and you finally get a chance to pass them, it feels good to have the loud engine revving up as you blast by them (although I doubt that makes them feel chagrined). So there are times I wish I could purchase a car sound. But it is a significant difference and I now find it weird in a gas powered car that there is all this effort you hear from the car as it accelerates.

And then we come to handling. The suspension in the Leaf sucks the big one compared to a BMW. The cornering is ok because of the weight of the batteries throughout the floorboard so it’s better than most box cars. But fundamentally it’s a standard sedan suspension. This was one of the two reasons I almost went with the BMW. With that said, the Leaf does have as good a turning radius as the M3.

The Leaf does great on the snow (and the M3 is horrible). Better than my wife’s Acura. One tire on ice and one on dry pavement and there is almost no slippage. I’m guessing with electric they can do much better than the best limited slip differential. The bottom line is the Leaf is probably the best 2 wheel drive car on the road for snow. Another great Leaf feature for cold weather is you can turn on the heater from your iPhone so you go out to a warmed up car. As the heat is also electric there is no need to turn on the car to heat it up. It seems like a small thing, but it sure gets addicting when the weather is cold.

Battery Charge is Everything

And then there’s the giant negative – battery recharge time. If the battery runs out you’re stuck – for hours. With a gas powered car, running low on gas means a 5 minute stop at a gas station and therefore you pay no attention to fuel level until it gets low (which in my wife’s case is over ¼ still in the tank). With an electric you charge it full every chance you get. And you then face a hard limit on how far you can drive before you have a long wait while it recharges.

This is very similar to your cell phone or Kindle. Charging takes time and if the charge runs out – you’re not calling or reading anymore. And like both those devices, recharging takes time (7 hours for a full recharge). The Leaf is a bit worse though as you can use a phone/kindle while it is charging. For the Leaf, that’s not an option (unless you have a really long extension cord). The bottom line is your car is tethered to the existing battery charge.

Most of the time this is not an issue as you leave the house every morning with a full charge. Many proponents say an electric is fine for 95% of the driving you do. True, but for that other 5% you need a gas powered car (I borrow my wife’s). As (if?) they install chargers throughout Colorado this issue will change to electric being good for 99.9% of all trips. But greater range will require that the government & companies understand where to locate chargers.

This is the large risk buying an electric, will we get a critical mass of chargers at useful locations. If not, then I’ve bought a very expensive golf cart. But the number of chargers needed is under 200 (if appropriately placed) for the entire Front Range of Colorado. That’s a small number. I’m not worried, and I’m betting that within a year I’ll be able to drive my Leaf to both Denver International Airport and Ft. Collins (where one of my daughters lives) and it’s then good for 99.9% of my driving.

The Good, The Bad, & The Ugly

There definitely was a lack of attention paid to getting it right on the user interface. Car companies may think they’re primarily selling a drive train and body, but no. A large part of what they’re selling is the user interface used to control the car and on that Nissan (and most car companies) gets a D+ at best.

  1. The shifter (more a mode switch) – you push it forward to go backwards. And you push it backwards to go forwards. This is a classic example of skeuomorphs (or as I call it, lack of imagination).
  2. The dashboard display will show charging stations on a map, except they have a total of 1 station listed in Colorado (there are lots more). They don’t even show the location of the Nissan dealers that have chargers (that’s pathetic). This shows a total lack of attention & effort to encouraging the installation of stations. Yet sufficient stations are key to broad acceptance of electric vehicles.
  3. There are two clocks displayed, one by the speedometer and one in the touch screen. They are individually set and therefore often disagree by a minute. Not a big problem, but can you imagine the reaction of Steve Jobs if someone proposed displaying two different times on the iPad? This is just sad.
  4. The iPad & Siri changes everything. Four years ago the dashboard touch pad and voice recognition in the Leaf would have been groundbreaking. But by today’s standards the UI is clunky, even by the standards of Windows 3.1 (Ow!). The number of buttons on the dashboard and steering wheel follow the model of more is better (true for bank balances, but not for user interfaces).
    1. The voice recognition to place a call takes about a minute to dial a number (cascading menus and requests for repeats). Not worth the hassle.
    2. It plays music on a USB stick – you just plug it in (great idea). However, it only plays songs who’s filename uses the Western European alphabet. So the majority of my music (Russian Pop, Eastern European Pop, Greek Pop) – can’t play it. (My wife and daughters think this is a good thing about the LEAF.) How did a Japanese company creating a product for the American market get such a simple bit of Internationalization wrong?
      Update: It does play music with Russian titles. What it doesn’t play is MP4 files.
  5. The Owner’s Manual is about 350 pages. And once you have read all of that, the Navigation System Manual is another 240 pages. The “quick” reference is 20 pages. This is unusable. This is first due to the poor UX design in the navigation system with umpteen million buttons on the dash and steering wheel. Adding to the problem, no effort was made to explain the system in the fewest words possible.
  6. Every time the car starts the dashboard puts up a disclaimer that you have to press Accept/Decline on. No way to permanently accept the terms and conditions so it does not reappear. Therefore you start every drive annoyed with Nissan. And the request it puts up? It’s so Nissan can download usage statistics for their benefit, not mine. (So I press decline every time.)

The biggest problem is that Nissan has no means to respond to questions. On the issue of not playing my music my local dealer asked the local Nissan Leaf person and reported back that they didn’t know and so they would not have an answer. I contacted Nissan directly and was told I would get an answer – but it’s a month later and have heard nothing else.

20 years ago a car company could ignore any non-standard questions from consumers and do fine. First the user interface to a car was much simpler. Second they were selling a mechanical device. But today’s cars are incredibly software centric. And consumers have expectations set by their experience with Amazon, Apple, etc. Can you imagine a high-tech company telling you there’s no way to get an answer to a question? I can’t either.

Did I Make the Right Decision?

Yes. I still own my M3 (will be selling it soon). And not once have I even thought of driving it instead. When I drive my wife’s Acura (a very nice car), I find myself feeling like I am using a more primitive technology. Not in a major way, but the little differences add up. Nissan didn’t get it perfect, but they got a lot right. And their bet on electric vehicles will be seen as a brilliant move 10 years from now.

The major reason I selected the Leaf over the BMW was because I was curious. The only way to understand an electric vehicle is to own one. Reading about it doesn’t give you a real understanding. Owning one, with decisions on every trip revolving around battery charge has taught me how this is key to the technology’s viability (and I’m still learning). Equally important, driving an E.V. daily has impressed on me that all the small advantages add up to a car that makes gas powered cars obsolete. The difference is akin to when the iPhone came out – on a feature list the differences were minor. But in practice it made all existing phones obsolete.

We’re clearly going to see rapid advances in the electric vehicles offered over the next couple of years. The Tesla and Leaf are version 1.0 and they have room for significant improvement. I was the second person in Boulder to purchase a Leaf. I plan on being the first to buy an electric BMW. (And hopefully they’ll do a quality job on the software component – including the ability to play Russian Pop.)

Oh and Carlos Ghosn, if you’re reading this, listen to Наташа Королева (Natasha Koroleva) and Жанна Фриске (Zhanna Friske), you’ll understand why the music issue is one you need to address immediately. And on a more serious note, you need a way to get feedback from your customers – that’s not optional anymore.

Why you want to work at Windward

We’ve always taken the view that it’s inappropriate to talk up ourselves. The work environment we create should speak for itself. And that’s how we’ve operated for the past five years. However, that doesn’t work. If everyone at Windward is quiet, then how can prospective employees learn about us?

So here’s my $0.02 worth about Windward. I’m the founder and CTO so my view is probably a bit different from others. But I think I give a fair picture of our work environment.

“Dad, you do really good managing very smart motivated people. If you could learn to manage others, you would be a much better manager.” – one of my daughters giving me advice.

My reply to my daughter was that having a group where everyone is smart and motivated gives you the opportunity to accomplish amazing things. At Windward the people we have are without exception in the top 5%. To speak specifically of the development team, I’ve managed groups at a number of successful startups. I was a senior developer in the Windows group at Microsoft. And the team we have at Windward is as good as the best I’ve worked with before.

And this is more than raw smarts. Everyone can look at what we need to get done big picture. Everyone has an immense amount of initiative. Everyone is focused on getting the job done. And equally important, everyone is very professional. I don’t mean professional by dresses nice, etc. but that everyone clearly respects their co-workers and steps up to help others as needed. It’s a very supportive environment.

Now there is a downside to this. If you can’t operate at this level, then Windward is not the place for you. We put a lot of effort in the interview process to make sure someone is a good fit. And we rarely get this wrong.

And the flip side of this is if you’re really good and self-motivated, then you’ll love working with a group that is equally good. This is by far the biggest reason you will enjoy working at Windward – to work with people that complement you at your best.

You also own your work. This can be a hard thing at first because you are operating without a net. If you do something stupid there’s no manager to catch it before it’s a problem. The work you create – it’s your baby. There is review as appropriate and in those cases you have to have valid arguments for the decisions you make. But where it is a difference of opinion, the person who owns the work makes the call. And for good reason – the person creating it tends to be right more often.

But there is more to it. We are doing a lot and so work is around 45 hours/week. But it’s 45, not 80 as many companies in Silicon Valley do. There’s more to life than work (I say as I write this on a Sunday afternoon). We want people to have a life outside of work.

We also do a lot of fun things. One day everyone received a nerf gun. At the Christmas party everyone was given an iPad, including the student interns who had been there over a year. One Friday we all went to lunch together and then the employees were split in to teams and sent on a photo scavenger hunt on the Pearl St. Mall (while I handled tech support – one call).

There’s also the stuff we do for others. We put our game Enemy Nations, including source code, up on the web for free downloads (I think we’re at over 10 terabytes in total downloads of this). We paid for the creation of the Cubicle War videos, a hilarious view of software developers. We run the Windward International Collegiate Programming Championships, which is a lot of work but the students who participate love it.

And of course we do the little things. Free soda pop & snacks. Krispy Kreme donuts on Mondays. Lunch every other Wednesday. And if we hit quota one month, the following month work ends 2 hours early for all employees every Friday, and we buy beer for those that want it (this is a very popular benefit with our student interns).

We’re not the right place for many people. But for those where we are a good fit, you will find Windward an incredible place to work.

ps –Our dress code? No bicycle shorts. (seriously)

Posted in Uncategorized | Comments Off on Why you want to work at Windward