One Day With Android

The Android vs iPhone battles have raged for a few years now, and it’s likely that they won’t subside anytime soon. While both sides seem to battle back and forth claiming that they have a larger percentage of the mobile market, the general consensus is that at the current moment Apple offers developers a larger opportunity to monetize through the app store and their integrated payments platform (though their lead may be shrinking), but the Android install base seems to be growing at a faster clip. It’s hard to ignore the Android trend.

Though it may be hard to decide which platform to bet on for the long term, it is clear that right now, if you want to conceptualize and develop products that reach the majority of the mobile market, you need to understand both environments well. There are inherent differences in the interactions, design constraints, and underlying behaviors of the OS. Android can’t be this great unknown that you read about occasionally and pretend to understand.  For me it was an unknown, so I decided that it was time to pick up an Android device and live within it for awhile.

21_hero_media_1

Yesterday I went to AT&T and purchased an HTC One X+ and added it to my existing plan on a second number. I shared the number with a few people who I interact with frequently and asked them to use it as my primary number for the time being so that I can get the experience of using it naturally as a first resort. Twenty four hours later, I want to share some of my initial impressions around being an Android user for the first time after years of using an iPhone.

Immediately I was humbled by being uncomfortable in a new experience. I took for granted the fact that over the last four years I’ve used an iPhone every day as an intricate part of my daily interaction with the world around me. I knew every setting on that thing, every customization, and had followed the announcements of every new feature the week that they were announced and made available. That level of time commitment and use created a high level of comfort. In a new Android environment, it was very clearly apparent, that 4+ years of innovation, new features, customization options, had rolled on without the slightest bit of attention paid, and as such, jumping in at this point left me with quite a bit of uncertainty about what to do.

That being said, initial discomfort or uncertainty does not mean that my experience has been negative. On the contrary, I’m enjoying many things about the device, and am getting used to things very quickly. The large screen, the informational widgets, the nice Google service integrations, and the Play store have all been major positives. I’ll share some of my initial thoughts in bulleted form, with the disclaimer that I’ll likely discover solutions to some of the negative issues (if they are not in fact real weaknesses of Android) as I get more familiar with the ecosystem – in the meantime this only serves to notify people of some things they’ll notice early on transitioning from iOS to Android.

  • No visual voicemail – back to dialing your voicemail number and listening to terrible prompts.
  • Informational widgets (weather, sports, stocks, foursquare, etc) give you zero click access to valuable information that you’d otherwise have to launch an app for in iOS.
  • Google Now has done a nice job of anticipating what information I’m interested in. For example I learned that The OKC Thunder are playing in town tomorrow against the Warriors and I’d consider buying tickets.
  • Notification overload – I am the guy who can’t have a single outstanding badged icon on iOS indicating an unread message, must be at inbox-zero at all times, and hates thinking that there’s information out there that he has missed. Well, Android seems to bombard you with notifications in the header that you need to swipe to clear, and for me that’s just another chore that I don’t need. I should probably figure out how to tune these via settings.
  • The back button is a completely different nav paradigm than exists in iOS. It frees up in-app real estate for the developer, but creates a more clunky hardware interface for the user than iOS’ one home button. I’ll have to weigh in later on whether I appreciate the tradeoff.
  • Users have the option to choose which service/app they’d like to use to accomplish a specific function. This was very annoying to me when I was just trying to listen to an audio note and had to select whether I wanted to use “Music” or “Google Play Music” to play the sound. I don’t know – just play the darned 20 second sound clip. I assume this may come in handy in other circumstances though.
  • It feels like I don’t have to type in my password nearly as often as I do in iOS. The Play store seems to trust you that you actually want to install what you say you want to install.
  • Push notifications temporarily turning on the screen in iOS is nice so you can quickly glance at your phone to see if you’re interested. On the Android you hear a buzz, but don’t know what’s up unless you unlock the phone. This may be a setting, but if so I haven’t found how to override it.
  • No badges on icons mean you have to dig into your notifications screen to find out what’s up.
  • Web and email don’t seem to quite snap to your screen size the same way they do on iOS. I’m constantly scrolling around horizontally to read all the content, and there doesn’t seem to be a pinch gesture to resize what you’re looking at. Or am I just missing it?
  • Nice job of setting up your contacts from Google + Facebook + other services when you first set up your phone.
  • It’s completely unclear to me how I go about putting music or media onto the massive 64GB of storage that come with the phone by default. It’s probably not hard, but there’s no seamless iTunes integration like with iOS.
  • Phone didn’t even come with headphones, and at first impression it doesn’t seem like the iPhone headphones+microphone work incredibly well with the device.
  • In just playing with and testing the phone, it didn’t ring when I called it half the time, going to voicemail after a couple rings when it displayed full service on AT&T 4G LTE. One call was garbled and the recipient couldn’t hear me. This may be an AT&T issue and not an Android or phone specific issue, but it’s not a good sign when you’re only about 50% success rate on a limited sample.
  • Tethering is huge! In fact, it was not that much more expensive to add an Android to my plan than it would be to get a MiFi or another mobile hotspot. Instead of shelling out $40+ a month for said base station, just add an Android and tether. A base station with functionality!

That’s all for now. I’m looking forward to begin hacking on Android development a bit, and learning what it’s like to really build for one of these things.

The Technical Lead

I’ve spent the better part of the past three years learning on the fly and thinking about how to be an effective technical lead at an early stage startup. Whether the role is called a VP Engineering, a CTO, an Engineering Lead, or something else, its aim remains the same: to build both product and team. Responsibilities can include defining and executing on product, recruiting a talented engineering team, building a strong technical brand, evangelizing the company’s platform, creating a fun and intelligent engineering culture and environment, forecasting for the company’s technical needs in the future, and establishing metrics and criteria for ensuring the the company’s technology is delivering and progressing according to business needs. 

 

While all of these things, and many more, are very important, I believe that there are really three overarching themes that the technical lead of a business needs to be thinking about all the time above all else:

 

  1. The technical vision of the company
  2. Enabling the engineering team
  3. The engineering culture

The technical vision of the company

It is the technical lead’s job to set, communicate, and lead the technical vision of the company by example. This includes but is not limited to:

  • clearly defining what is going to be built and when it will be delivered
  • justifying and communicating why this is important to the business
  • determining what technologies will be used and why
  • determining workflows for development including iterations, release cycles, testing practices, deployment practices, code reviews, etc

Is the team going to rush to the quickest possible minimum viable product and then iterate, or is it going to build quietly for months until it emerges with a hardened solution that’s ready to go to market? What tech stack will it use? It’s always recommended to use the best tool for the job at hand, but a company that is building using .NET and Oracle from day one is likely going to follow different technical dogma than one using Python and MongoDB. A company doing waterfall development will feel a lot different to an engineering hire than one continuously integrating and deploying. 

 

The technical lead will make these decisions early on in the company’s path, and the practices that they lay down by example amongst the early employees will dictate the future technical direction of the company. And with quite a bit of momentum it may be hard to change course later.

 

Enabling the engineering team

After the initial team is established, and all of the roles are filled that are required to get the product to market, I believe that enabling the engineering team is the most important role of the technical lead. They must identify any blockers to progress for the team, and remove said blockers as quickly as possible.

 

Blockers are tricky because they can come in many forms – an unnecessary midday meeting which interrupts the flow every Tuesday and Thursday, ill-defined requirements from the product side of the house, inefficient processes and lack of automation for requesting and setting up servers, unavailability of healthy snacks around the office, lack of data to validate whether the feature in question is effective or not, etc. 

 

Team is everything, and when the right bunch is fully enabled with the right equipment, environment, vision, and resources to do their best work, the results are magical. When they are blocked by any of the above, productivity can grind to a halt. As technical lead of the company, you have more power than anybody else to empower your team to be the best and happiest that they can be. Make it your highest priority to do so.

 

The engineering culture

I believe that a clearly apparent culture within a company is critical. From observing and living within the culture you can tell who the company is, what’s important to it, who will fit in and enjoy working there, and what it might look like when it grows. If a company is devoid of culture, it has no clear identity to those looking to join or work with it, and this obviously can have negative consequences. 

 

From an engineering perspective, the culture begins with the technical lead. Is this an engineering team that diligently works together from 9-5 and then checks out? Is it one that grinds through the night and wanders back in to work in the afternoon hours? Is techno blasting from the office speakers or do people quietly work with headphones? Does the team sit together on an open floor or sequestered within their own offices? Do you hold weekly tech talks, brown bags, hack days? Is there 20% time for personal projects?  Is it an academic environment that encourages research and publishing? Do you eat lunch together and go to happy hour? Do you break for high intensity table tennis matches or do you reward engineering milestones with prizes and bonuses?

 

You can build a successful engineering team by answering any of the above questions in any way, as long as the culture is consistent amongst the majority (or preferably all) of your team members. When you’re working as one team, the culture that you define, prioritize, and maintain will go farther than anything else in attracting a strong team that works together efficiently, productively, and most importantly has fun doing what they do.

 

At Hyperpublic I was very lucky to work with a team of some of the finest engineers I’ve ever known, within a culture that was a ton of fun to be a part of and help create. I have no doubt that as a company grows beyond ten people, and branches into multiple teams, the challenges for an engineering lead grow and become more complex. I look forward to learning and adapting to them on the next go round.