Thursday, April 17, 2014

Why I can't help PMs, Sales People, or Marketing folks negotiate

Occasionally, I'll get a sales person, product manager or program manager, or even a marketing person ask me to help negotiate their compensation package. With one exception, I invariably turn all of them down. The reason is this: negotiate is a core skill for product managers, program managers or sales people, while the core skill for engineers is being able to design and code, with negotiation being secondary. In fact, one of the ways an engineering manager adds value to an engineering team is negotiating on their behalf with other engineers and with product management and/or UI designers.

If you look at how we train engineers, it's pretty clear that negotiation is out of the picture. Engineering exams aren't graded on style, readability, or collaboration. They're graded on correctness of solution, ability to apply principles and data structures to new areas, and of course, whether or not your project works. What negotiation there is in the engineering curriculum is informal: you might be asked to work in teams to turn in your homework (as a former instructor, I can say with confidence that this is usually so that we only have CLASS_SIZE/N papers/projects to grade, rather than CLASS_SIZE). As a result, engineers are singularly unprepared to negotiate their compensation in a way that sales people, PMs, or marketing types are not.

There's also a fairly subtle effect going on when engineers negotiate their compensation package. Most engineers are in a position to find a new job only because they're unhappy with their old one. Why are they unhappy? Usually it's because the old position did not make full use of their abilities: either they've been stuck in a junior position for years (I've heard horror stories about engineers at Google being stuck at SWE 3 for 5 years, despite performing way better than their grade), or because they've not been given raises, or both. In these cases, usually the managers have consciously or unconsciously beaten down their egos and repeated told the engineers that they're not worth much in the market. One of the things I do is to get such engineers to interview and receive multiple offers. The change is almost immediately visible in such candidates: they gain confidence as they realize that they are valuable employees, and this has an effect when they negotiate. The extra confidence enables them to negotiate and get better deals from their employers. Sales people, product managers or program managers, for whatever reason, seem to be immune to such beat-downs, retaining a healthy ego even when consistently denied promotions.

My negotiation service is unique because it's an irrational thing to do. The real money in compensation negotiation is on the other side of the table. Recruiters and head hunters get 30% of your salary (i.e., your entire engineering salary for a year * 0.3) for getting you to join their client companies. That's why there's no competition for what I do. There's no engineer who'd be willing to match what corporations pay in order to get a better deal.

Wednesday, April 16, 2014

First Impressions: Microsoft Surface Pro

Our trusty X201 had been getting long in the tooth, and Xiaoqin decided to try some Android development. If you've ever tried Android Studio, you'll know that it's a CPU intensive process since it's based on IDEA IntelliJ. The build system associated with Android Studio, Gradle, is also a massive CPU hog, and introduces no small amount of latency to the process. I never thought I'd miss the days of Visual Studio, but it's quite clear that compared to Microsoft's tool set for development, Android is quite a bit behind, and extremely unstable. Of course, in terms of market share, the positions are exactly reversed.

After trying out a Surface Pro in the store a year or so back, I vowed never to buy a conventional laptop again if I could buy a Surface Pro-type device. Fortunately, Microsoft was having a sale on refurbished Surface Pros, so I was able to pick up a 128GB model for $450. You can find them for about $500 if you're willing to put up with a 64GB model. With USB 3 and a microSD card slot, it's probably no big deal if you can't find the 128GB model.

As a laptop, it's quite impressive. It's about 50% faster than the older X201, and 3X faster on boot up, hibernation, and recovery from hibernation, with boot times going from 30s to 10s. And yes, this is with the X201 upgraded to an SSD. There are a few strange fit and finish issues, such as the mini display port slot not being very deep, so when inserting a standard cable there's a little bit of chrome sticking out. The tablet comes with a pen, but there's no place to put it except in the magnetic charging port, and the magnetic charging port isn't strong enough to retain the stylus without loss if there's any pressure whatsoever on it. Since this is an expensive Watcom digitizer stylus, you really do want to keep track of it!

Running Lightroom is fast as you might expect, with no hitches and the Surface Pro had no problem driving the 27" HP monitor with a 2560x1440 display. One nice mode you can run is to have the touch screen run the Start screen, while the big display runs the desktop. This gives you a nice touch UI for the touch part, while having the desktop to do real work. Of course, Microsoft had to glitch this up---in this mode, desktop apps still launch onto the small screen instead of automatically selecting the big screen. It's this kind of inattention to detail that gives Apple its edge over Microsoft, though I've found Macs to have their share of problems when using multiple screens.

The device has a fixed, 4GB of RAM, but surprisingly, until I told Xiaoqin about it, she didn't even notice it didn't have as much RAM as her old device. At least part of the reason is that Windows 8 Pro actually consumes fewer hardware resources that Windows 7 did. The other part of it is that in recent years, software developers just haven't been able to assume more than 4GB of RAM anyway, so as long as you're single tasking or running just one web browser and an application, you're generally OK.

As a tablet, the Surface Pro is quite hefty, though not as hefty as the X201. It makes up for that, however, with power. I'd already written about how much faster the Dell Venue 8 Pro is than my Nexus 7. Using the Surface Pro is instantaneous. The Type Cover is also a joy to use, giving you keyboarding performance akin to what I'm used to with the X201.

The real revelation, however, is the stylus. I'd never tried any of the previous PCs in tablet mode, other than my use of the Wacom Bamboo tablet for producing Independent Cycle Touring. But while I hadn't noticed, Windows' handwriting recognition has become nothing short of amazing. My handwriting can compete with any doctors' for sheer inscrutability, but the Surface Pro handled my cursive with aplomb, as long as I was writing common English words. Write something not in the dictionary, and just like any other machine translation program, and you end up with gibberish. There was no training period, however, and I could pick it up and use it. You could even turn on Chinese handwriting recognition, though Xiaoqin pointed out that Pinyin is faster and much easier to use with a real keyboard. Unfortunately, having multiple languages on the machine is problematic if you use a keyboard, since Microsoft used Windows-Space to switch between languages, and Xiaoqin found it far too easy to hit that combination by mistake. In past versions of windows we tried to change the language key bindings but to no avail, so we gave up and uninstalled the language pack instead.

All tablets are compromises. The Surface Pro does not have great battery life. 3-4 hours with Android Studio and that's it for the battery. When fully powering Android Studio, the device also gets hot enough to turn on its fan, which sounds like a low hissing noise. It's quieter than the X201, but still noticeable if the room is otherwise quiet. Next to my Core i7 920 box going full bore, of course, it might as well not make any noise. At no point would you burn your hand grabbing the Surface Pro, however, so there aren't any safety issues.

Long term, the biggest concern about the Surface Pro is the battery. With the machine running hot, and the battery fully charged most of the time in desktop mode, I would be surprised to see more than 3 hours of battery run time after the first year, and 2 after the second year. Most laptop batteries get abused this way as well, but the Surface Pro has a non user-serviceable battery, with the only option being the $200 power type cover. Fortunately, for the price (which is much less than what I paid for the X201 way back when), we can treat the Surface Pro as a disposable computing device. This is much more of a concern nowadays, however, than it would have been 10 years ago. 10 years ago, you'd expect to replace a machine every 3 years. Now, an adequate machine (which the Surface Pro most definitely is) could have a potential life time of 5-6 years. At the rate Intel is improving (or not improving) CPU performance, I'm likely to keep my desktop for another 2-3 years at least!

There are a few accessories that I would recommend for the Surface Pro. The first is a Type Cover. We tried both the Touch Cover and the Type Cover in the store, and the Type Cover was hands down the winner. Secondly, you need a USB 3.0 hub if you're going to attach a debugging phone as well as a wireless transmitter for wireless keyboard and mouse. The Surface Pro comes with bluetooth, but it was easier to just use the existing Logitech mouse and keyboard than to shop for new ones. USB hubs can be powered or unpowered, and we got an unpowered one for convenience when traveling. It'll make the device drain that much faster, but having one less power adapter to carry will be essential.

In any case, so far, I'm liking the Surface Pro far more than I expect, and Xiaoqin hasn't asked for the older X201 back. I'm expecting not to send this back to Microsoft after the 30 day return period.

Tuesday, April 08, 2014

Review: Flower

I picked up Flower as part of the Journey Collector's Edition, but if you pick up the digital PS4 edition, you'll get it for the Vita and PS3 as well. Given that Journey is a great game, the collector's edition is worth getting as it gets you the soundtrack as well as a few other specials.

You play the wind (or maybe the spirit of Spring) in Flower, picking up flower petals by making flowers bloom. That's it. It's a simple mechanic, made only more difficult because rather than using joystick controls, the game uses motion controls using the Playstation controllers. (I bet most of you didn't know that the Playstation had motion controls that weren't associated with the Playstation Move, did you?) That's not a good thing, because those controls are imprecise, but on the other hand, this is not a game that calls for a lot of precision.

The first few minutes of the game feels puzzling. You almost feel like you're in a tech demo, rather than a game, as there seems to be no purpose. Then after a while, the game picks up and you learn that yes, there actually is a goal, other than floating around swirling petals and admiring the scenery, and there's even a story. It's not a very human story, as there's no dialog, but you also notice attention to detail at the game's level. For instance, there's background music to the game, but you add to it every time you make a flower bloom, and depending on how you control your speed, you can bloom flowers at varying rates, so you're contributing to the soundtrack as well as the game play. This is so beautifully and naturally done that I didn't notice it until I missed making a flower bloom at one point and then the music sounded different. Not wrong --- there's no real punishment for mistakes, but different, giving the game a different mode. Very well done.

The game's story leads you through 6 chapters, though you can go back and replay any of them in any order. Bowen loved the first and second chapters, and made me replay the first 3-4 levels over and over. They are beautiful, and the controls are a sheer joy. The 5th level is where it gets serious and you can actually take damage, and it can be much more confusing as to what you're supposed to do. However, even that level is not very long, and you're unlikely to get stuck in it. The final stage is enjoyable once again and a lot of fun, even exhilarating, and all too short.

As an experience, Flower isn't as strong, long, or contemplative as Journey. However, it is short, and very accessible for even toddlers. I can recommend it for everyone, but do not consider it as much of a "must play" as Journey is. Judging by the trajectory of the developer, thatgamecompany, I'm looking forward to seeing what they produce for their next outing. I don't think there's anyone else doing the type of games these folks are doing.

Monday, April 07, 2014

Review: Journey

Journey, for me, was a magical experience. When I sit down a reflect on the games I've played since December last year, many of them fall into the "interactive movie" category. There's nothing wrong with that. The Last of Us, had me thinking about its themes long after I'd finished the game, and Arkham City is an excellent story that would hold up to any of the Batman stories in any other medium. But those games wouldn't lose all that much if they were translated into movies. In fact, without the constant repetition and restarts due to player deaths, The Last of Us might even make a better movie than it did a game.

Journey, however, is the kind of experience that only works as a game. The wonderful thing about it is that it's an incredibly accessible game. Using only the twin analog joysticks and two buttons, it's a game that eschews complexity, timing based controls, and high speed reflexes and hand-eye coordination for a contemplative travel through the virtual landscapes it renders and the emotional spaces it evokes. What's more, unlike hard-core games that require hour upon hour of slogging and skill mastery, Journey is relatively short, and if you have time to watch a movie, you will have time for Journey.

You control a traveler, rendered in simple fashion little more sophisticated than a stick figure. The start of the game has you contemplating a mountain far away, and it is understood (though the game never explicitly tells you) that you are going there. Along the way, you traverse a desert landscape, an underground cavern, underwater spaces, and a snowy tundra. You visit ruins, and encounter creatures, most of which help you, and perhaps, another traveler representing another player who is also making the same journey.

You can't die, though there are moments when you are threatened, even succumbing to those threats won't hurt your ability to finish the game. The other player who might travel with you can't help or hinder you in your travels. In fact, other than a couple of gestures, you can't even communicate with each other explicitly. Yet the nature of the game is such that mere presence still grants you camaraderie. The puzzles will never stump you for more than 10 minutes, if that. There are no difficulty levels, no ability to save or restore the game. At no point are you forced to move forward, and nothing shoots at you when you're having a contemplative moment or just enjoying the scenery.

If Journey was made into a movie, it would be flat, lacking the emotion it was designed to evoke. But by taking on the character in a virtual space, and providing the means for various forms of traversal, Journey managed to invoke in me feelings of exhilaration, as I slide down a sand dune or soar through the skies towards my goal. I felt fear, when a monster detected my presence (even though I knew I could not die), and came after me. And there were many many moments of wonder as I wandered through a new landscape, not knowing what would come, but enjoying the moments of beauty and solitude that came with making my way through the virtual spaces. The combination of the design, the music, the simplicity of the controls and the way the game teaches you what to do with just dialog and just a handful of on screen prompts in the first 15 minutes of play is nothing short of amazing.

I don't want to over-state the pleasures and the strength of Journey. I wouldn't go as far as to say that you should acquire a PS3 just for this game. (I'd say that for Uncharted 2) But it truly is a game that I think just about everyone should play just to understand why video games are art. Just as missing out on great books like A Wizard of Earthsea would be a great pity, I think missing out on Journey would also subtract from your life.

I bought Journey as part of a collector's edition. However, I will review the other two games on that disc (Flower, and Flow) separately. You can also purchase Journey directly from Sony as a download for $14.99. Highly recommended.

Friday, April 04, 2014

Review: Pixeljunk Monsters Ultimate HD

I'm a big fan of the tower defense genre of games, and have sunk countless hours into the original flash-based game, as well as much nicer looking Defense Grid. Strangely enough, there aren't very many mobile versions of the desktop tower defense that are worth playing, with Space Station Frontier being the only one that's really any good. (I found a common recommendation, Fieldrunners HD to be extremely lacking in imagination compared to even the original flash-based game --- other games were filled with in-app purchasing which sucks all the fun out of gaming, as far as I'm concerned)

That is, until I picked up Pixeljunk Monsters Ultimate HD for my Vita. The game's also available on PC, but I feel it is best played with a joystick and control buttons rather than mouse and keyboard, so I would encourage you to get a controller for the PC, if that's your platform of choice. Obviously, the PC version would be much less portable than the Vita version.

This game is extremely challenging. On Easy difficulty, I found myself having to play most levels more than once. In particular, sections of the game are locked away unless you score perfect scores on a certain number of pages, so I found myself replaying levels over in search of the score. On the easy difficulty at least, the game offers multiple paths to victory, with a great selection of different towers to use on various challenges.

The game features several unique mechanics. The first is that you control an actual character on the game board, which constraints you several ways. Your character creates and sells towers, as well as picking up gems and coins (to purchase new towers). Your character can also upgrade towers by dancing on a tower, or you can upgrade towers with gems. Your character also needs to run back to the base in order to purchase new tower types. With all these constraints in place, the game ensures you always have a plethora of choices to make, which forces you to pay attention to every detail.

Another unique mechanic is the concept of earned interest between waves. By not spending your coin, the game grants an interest bonus between waves that generates more coins. This mechanic basically adds tension between setting up additional towers right away or waiting for the last moment in order to garner the most bonus interest possible.

Your character can also get run over by the invading monsters, which would cause you to lose a number of coins as well as rendering him incapacitated for a period of time. If you don't pick up coins or gems within a certain amount of time, they'll disappear off the game board, which again generates a certain level of tension between running after the coins or staying put and upgrading towers by dancing.

The monsters are typical of the genre, with slow, fast, numbers, shielded, and flying monsters ensuring that you have to build a variety of towers in order to win.

Now, the most important part of a tower defense game is the maps or gameboards. The game features approximately 21 game boards, and the variety between them is pretty cool. They range from the difficult to the nearly impossible to get through without taking losses, and are ranked in difficulty with certain special missions granting you additional tower types or upgrading your character.

The game's extremely replayable, will be free this month on Playstation Plus if you have a Vita. In any case, I definitely got my money's worth for the game and can recommend it.
UPDATE: PixelJunk Monsters is available for $5 on the PC/Mac directly from the developer. This sale will last for 5 days.

Tuesday, April 01, 2014

Review: Aggressive Tax Avoidance For Real Estate Investors, 19th Edition

While I'm not quite an accidental landlord, since we got married we've had a rental property to manage. There are all sorts of issues with landlording, and I've covered many of the short-term solutions in a previous post. Aggressive Tax Avoidance for Real Estate Investors deals with longer term issues. Logistically, you can buy this version of the book from John T Reed's website, or you can buy a used 18th edition from Amazon. While there's unlikely to be much difference in content between the two editions, if you're running a rental business properly, there's no reason to cheap out since the book is tax deductible for your business.

A good measure of a specialist non-fiction book like this is the ROI. Within the first 3rd of the book I'd discovered that there was a certain approach that I'd not used because I'd succumbed to an old-wives tale and it would have saved 10X the price of the book. Live and learn.

The most useful part of the book is John T Reed's aggressiveness in approaching IRS issues. Basically, he tells you not to be afraid of tax courts, how to do research on tax issues, and how to fight the IRS in tax court if it comes down to it. This sounds really aggressive and it is. If you're renting out a room in your house, you're probably better off not being this aggressive, but if you have significant income from rental or run a multi-family rental property unit you want to take this approach as more conservative approaches would cost you significant amounts of money. John T Reed doesn't just assume this, but walks you through the Net Present Value/Expected Value Decision Tree for most of the approaches he espouses in this book. This is a very rational (one might say hyper-rational) approach to tax strategy and decision making as a landlord (or any other business owner), but you have to be capable of taking the mindset that Reed espouses. If you're easily stressed by the thought of an IRS audit, this is not the book for you, though you might want the managers you hire to read it and use it!

Reed not only walks through all the different types of tax courts, and the probability of the tax payer succeeding in winning the cases at the various courts, he also provides the probability of an audit, depending on the type of rental property you have and how much revenue and income you're generating. If you own any rental property, this type of information is invaluable and is worth the price of admission alone.

As a stalwart member of the 1%, Reed is definitely anti-Obama and anti-Democratic, and doesn't hesitate to write political comments throughout the book. I found this irritating, but tolerable given the usefulness of the information he provides.Then at the end of the book I came across something which just made me chuckle:
When you work at a job, you earn taxable income. Part of which, the government is entitled to confiscate. But if you work at increasing net worth---and refrain from selling the asset whose value you are increasing---the government has no right to confiscate any of the gain... It seems to me that if the taxes on work are too high---and they are---then you ought not to work for a living... (Page 180)
Sounds like a prescription for raising capital gains taxes and dividend taxes and reducing income taxes to me!

Anyway, if you own rental property that's more than just a room in your house, you need to buy this book. It will save you multiple times the cost of the book. If you run a business, you need this book just to understand the approach to taxes and how to do the NPV decision tree. Highly Recommended.

Friday, March 28, 2014

Review: Bioshock Infinite

One of the interesting things about catching up on 10 years of games is that since I'd been exposed continuously to only good games, it's extremely jarring when I play a bad one. I don't review most of those, because I never get far enough to finish them, since they don't hold my interest past a couple of chapters. Bioshock Infinite, however, came with stellar reviews, so I persisted despite my not having made it past a the first mini boss from the original Bioshock.

When I reviewed The Last of Us, I complained about how very unfun it was until I finally understood the game system and how it worked. A lot of it was that the game was continuously teaching me how to play, and between me being a slow learner and the reviews I'd read prior to the game, I'd approached it completely wrong. But by the time I really got it, the game became fun. The final scene where Ellie rescues herself from her kidnapper was like a final exam in everything the game had tried to teach you. (The fight against Mr. Freeze in Batman Arkham City serves the same function) Everything was put together right and I was never tempted to even look online for help.

I bring up these examples because they illustrate so clearly how a game can be done right and the game play leading into the climax exercises all the player skills that the game has taught him. Bioshock Infinite does it completely wrong. For one thing, none of the encounters prior to the climax require the kind of tactical and strategic thinking that was required to survive. Furthermore, the power-ups prior to the encounter all had the default selection set to the worst possible choice you could have made coming into the encounter. The result was that the game felt seductively easy enough to play (on easy settings), that you got to the final encounter only to get a whammy that felt like an infinite difficulty spike.

Now, I would probably have powered through anyway if the story had a decent payoff. Now the technical differences between the Naughty Dog team and the Irrational team really shows. The cut-scenes in The Last of Us are full of human interaction and expression, with every nuance of character reflected in the facial animation, body language, and acting. Bioshock Infinite doesn't have cut-scenes, but the animated models used by Irrational aren't subtle enough to carry the story off. Elizabeth is flat, and doesn't interact with  Booker anywhere close to the way Ellie interacts with Joel. The result is that the connection between Booker and Ellie feel forced and not as believable, which reduced my motivation to finish the game.

The net-result is that I watched the ending of the game on YouTube instead of playing through the climax. It's a decent ending without howlers, but definitely does not have the emotional tension and payoff from The Last of Us, or even Tomb Raider.

In any case, if you're a hard core first person shooter player I think Bioshock Infinite would be for you. For the rest of us, I'd recommend giving it a pass. The payoff just isn't worth the work, and the game play is unfun and breaks down right at the end of the game when it matters.