If you’re a developer then you can only have two of the following:
There is no way to accurately measure the cost of finishing a coding task beforehand beyond immediate term. Estimates are still a necessary evil as they assist in planning, but one needs to accept that estimates will always be wrong (except for the time they are right by pure fluke). So if you insist on hitting the deadline you came up with out of thin air then you’ll either have to cut quantity (do less) or quality (do it poorly). Or you can just accept that scheduling is useless (tough luck if you’re in the consultancy business) and instead focus on delivering one item at a time. It will be done when it’s done.
And yet …
Doing jobs within given constraints and resources (time is a resource) is a crucial skill. After all, what good is a product you never ship? They key is to break down tasks in smallest chewable pieces so you can ship them as they get done. A massive side benefit is that you get early feedback that allows you to pivot if you had gone down the wrong track.
Read More
In my other life I hold an elected office. Being a Math major and a computer scientist (both fields require strict adherence to logic), the frequent use of logical fallacies in politics bothers the life out of me. If it was just politics then I wouldn’t share it here, but these are just as prevalent in everyday lives.
“It should be done because it’s tradition”
My response always is, “that’s a statement, not an argument”. RIM’s resistance to add a proper touchscreen phone for so long was as much about tradition as anything else.
“Obama is a socialist”
Actually he’s not (or everyone is, depending on how you look at it), but directing an argument at a person does not take anything away from ideas. Attack ideas, not people. Otherwise you’ll miss out on perfectly good ideas because of their source. People are surprised to hear that Budzee uses Azure. Why not? It’s great. ”But Microsoft is evil?” Enough said.
“You can’t prove that taxpayers don’t want this. Therefore, they do”
Actually just because something isn’t proven to be false, it doesn’t make it true. Reversing the burden of proof isn’t just limited to politics. Watch out for it.
“My gut tells me this”
Until your gut gets a university degree or comparable experience, leave your gut out of it and use data.
“Macs don’t get viruses”
Even Apple dropped that claim last year. Repeating things ad Nauseam works nauseatingly well. And I die a little inside every time that happens.
“70% of people believe in x”
That is interesting. But it’s still not an argument. 95% of people used IE just a few short years ago. Didn’t mean IE was a great browser.
“What would Steve (Jobs) do?”
Who the hell cares? Speaking to authority is never a valid argument. Ever.
“I was elected by taxpayers and I represent taxpayers”
So does everyone else.
“Marijuana is wrong because it’s against the law. It’s against the law because it’s wrong.”
One time someone asked a product X VP why Microsoft did not advertise it more (true story, but I crossed out the product to protect the individual). He said because it had a small market share, therefore couldn’t justify a large advertising budget. When asked why it had a small market share, he said he believed in the product, we just hadn’t marketed it well.
“Have you stopped beating your wife?”
Okay, so no one asks that the Canadian Minister of Public SafetyVic Toews tried to pass a law compelling ISPs to share subscriber data and all information they transmitted without warrant, telling critics they stood “with the child pornographers.”
“The economy is doing well, our policies are working”
You have nothing to do with it, move on. Back in Windows Mobile days I (and many others) were often told the product direction was good because the market share kept going up. Until iPhone came out and rest is history. Co-relation is not causation. Just because two things happen together, it doesn’t mean one caused the other.
“Women in general are weaker than men, therefore they shouldn’t be in military”
Plenty of women are stronger physically than plenty of men. Another version: “My Windows got a virus, Windows sucks.” Actually Windows are plenty secure and have been for nearly a decade, your surfing habits suck.
“Vaccines aren’t natural, therefore vaccinations are bad”
Goodness (or lackthereof) of vaccinations have nothing to do with how natural or artificial they are. Plenty of perfectly natural things will give you a painful death.
“Racism is wrong, therefore we need affirmative action”
Yes, racism is wrong and we might or might not need affirmative action. But wrongness of racism doesn’t prove that. This happens in business all the time as well.
“It’s a slippery slope. Before you know it, they’ll want to marry their dogs”
…and when they do (want to marry their dogs), then we’ll talk about it.
During the budget time one Milton councillor said something like “so you would cut money from a children’s program but refuse to cut your own budget?”
Our office budget is actually $0 and it just so happened that we have never cut money from the program he was talking about. In fact, in that very meeting we put more money towards the program. But thanks to the classic strawman, I can’t even remember exactly what motion was on the floor went he went off on it because he spent minutes talking about our budget. How do you cut below $0? In that statement he was talking about the conference and training budget (that we cut by 1/3rd in that very meeting) which is not really a “benefit”.
Any logical fallacy you encounter daily that you want to bring up?
Read More
Note: I was asked this question on quora. I am cross-posting the answer here.
————————–
There is actually a huge difference between a CTO and a developer / manager. Likewise, being a large company CTO and being a startup CTO are very different though the roles overlap.
For a CTO of startup you essentially define the company in many ways. You and the CEO need to be in perfect harmony (you might have passionate “discussions”, but be sure to have them in private).
Even for a technology startup the technology and product are nothing but means of testing and executing the idea. As such, your primary job is to make sure the company’s technology strategy meets its business strategy (that’s pretty much a dictionary definition of a CTO).
First and foremost, you need to be a kickass developer. You can’t sit in the corner and just think deep technology thoughts. This is especially important if you’re working with other developers or if you plan to bring more developers in. If you want competent people to leave their stable jobs to come work for you then you better be able to inspire them with not just your leadership (more on this later), but also your competence. If you’re a startup CTO you are still a huge percentage of the company’s technical workforce and the startup cannot really afford for you to not produce actual raw code. Once you have 10+ developer you might have to completely switch out of coding, but you’ll still need to be able to review and understand what your company’s producing. You might transfer that responsibility to VP of Engineering once you exceed 15-20 developers, but not until then.
You need to be an awesome manager. Yea, yea, it’s a startup and you might only have a few people with no management hierarchy, but unless you’re working alone in the basement by yourself, you will have people issues. That’s a given and there’s no way to avoid it. The CEO and others can (and should) handle them, but if you’re in a technology startup the chances are much higher that those issues will stem from some technology or design argument (more on this later) where you play the tiebreaker role while simultaneously managing expectations of all parties and still keeping them all inspired.
But other than people issues, you need to be the person who makes the team much more efficient than the sum of its parts. That might mean looking at your best friend straight in the eye and telling him he isn’t fit for the role he wants to play. It might mean dealing with an enthusiastic designer and telling him to cool it. It might even involve taking someone who’s done a job for years and telling him he doesn’t need to be that good (yes, that happens)! Many startups make the mistake of aiming for perfection in expense of agility. Startups need to be agile and figure out when they need to be great and when good enough is enough. You need to figure this out.
Defining technical stack of a large company in some ways is easier than a startup. A startup likely cannot afford expensive proprietary software. Which open source direction do you pick? Node.js or Rails? Python or PHP? noSQL or SQL. Which noSQL? Heroku or Azure? If you’re the CTO then it’s your job to just know when to make a call because it doesn’t matter and when to prototype to be sure. It’s your job to just know how much time to spend on making technology choices accurately and when they matter. Do you balance development speed (people just happen to be experts in mySQL and can crank something out in a few hours with their right hands tied behind their backs) over longterm sustainability (your business plan means you’ll need a noSQL db).
And that requires you to simultaneously know all nitty gritty technology details and yet keep the entire big picture in your head at all times. I have worked with amazing developers who see details in ways I cannot ever imagine myself doing. I’ve known amazing visionaries. But it’s a rare talent that can combine the two without getting distracted by either in expense of another that a startup CTO must have (in fact, in a large company you must let go of details and become the macro-big-picture guy or gal). You need to simultaneously be a big picture person while keeping all details in your head, at all times.
This leads me to the next point. You need to have a clear enough picture that if (and from that I mean when) you need to pivot, you need to be able to lay out different technical options and their costs with reasonable accuracy. That requires you to be good at all the previous roles I’ve mentioned so far.
You also need to be the bad guy. A lot. You need to tell people when they’re being perfectionist and they shouldn’t be and when they should do better. You need to figure out (and communicate) when someone’s taking too long in solving a problem and when someone’s not taking long enough. One difference between a startup and a larger company is that a larger company can afford some people not firing on all cylinders, a startup cannot. You need to not only identify those issues, but resolve them at lightening speed. That means just knowing when to be diplomatic and give feedback without hurting feelings and when to be blunt. When to manage people to do better and when to ask them to leave.
Finally, a CEO can get away with not understanding the technology very well in deep detail but a CTO (especially of a startup) must be able to wrap his mind around the business. A great CTO frees the CEO to focus on the business / funding / finance. And yet you need to be able to say “your business plan A will cost 3 times more to implement than plan B but it will serve the same market”. Or “in this case we can do this half-ass thing to get quick feedback before we decide if we have to implement more”. Or “there’s no need to provide this feature, we can just do this one thing and use A/B testing to determine if we need to go further”. You need to be the glue that ties marketing, technology, sales and business together. This is true whether you’re in a startup or large company. For instance, you have to be able to envision and articulate “hey, the technology isn’t ready for what you want from Newton” while being able to say “hey visionary, this finger-touch iPhone idea is really out there, but we can build it by doing x and y and z and it’ll cost approximately this much in time and resources and here’s the risk of failure.” Essentially, when solving a problem you need to be able to see when technology already exists, when you can invent the technology and when you must wait.
So to sum it up, in a startup you need to be a code monkey, a coach, a leader, a manager, a visionary and yet a realist … and you have to do it all well because as a CTO of a startup, you can make or break a company (unless a CEO is also technically strong and can judge your skills accurately). And while doing all that, you need to know how to delegate and let go as the company grows (many new managers fail because they can’t let go).
A technology startup needs a solid CEO and a solid CTO, but it can survive longer without a good CEO (it’ll still fail eventually, but can survive long enough to be able to replace the CEO). Without a great CTO you might as well pack up because you wont get off the ground.
Fortunately at Budzee we have a kick ass team all around, which is the key thing to look for when thinking about joining or co-founding a startup. But that’s for another blog post.
Read MoreWhen it comes to goodwill from consumers, Microsoft is not even in the same league as Apple and Google. They are all giant multinationals that all try to maximize shareholder value. All can be “evil”. Yet they are all seen very differently by consumers.
Let me summarize Microsoft’s main problem: it expects its users to make a sacrifice by using its products. I offer you a few whys.
If you are looking for me to badmouth my former employer or share internal dirt then stop reading now, you’ll be disappointed. But I think I do have a unique perspective since I worked for Microsoft out of Redmond for many years (the mother-ship , then worked for Microsoft out of Washington, DC and then remotely from Toronto while traveling extensively to the valley. As I moved away from the Microsoft bubble, I started to see a lot of Microsoft’s issues that you don’t see when you’re part of the bubble.
And that is Microsoft’s first issue. It lives in a bubble. Vast majority of its US-based engineers are based in the Redmond area, away from the valley. Many of them miss out on upcoming trends. They don’t speak the valley lingo. They cannot relate to bloggers in the valley nor the bloggers to them. We’ve all seen Microsoft ads on TV and scratched our heads wondering what compelled them to run that ad. The problem gets worse the higher up you go in the company where not only do many executives grew up professionally away from the valley, but they also spent most of their careers. As a result, you have people in leadership positions building products they do not understand for consumers they do not understand. Is it any surprise why IE6 was what it was?
Related to being in the Redmond bubble, away from the tech mecca, another problem is obsession with brands that do not matter to consumers outside of the bubble. Remember the ill-conceived “Windows Live” brand? Windows Live Search, Windows Live Hotmail, Windows Live Messenger. Why Windows? Windows Azure is a super awesome cloud platform and infrastructure that I think would’ve done better if it wasn’t called “Windows Azure”. At least “Windows Phone” makes some sense at the logical level, even though more people are turned off by Windows on the phone than they are inspired by it. Anything else would’ve been better. Heck XBox Phone would make more sense. I have the same issue with Windows RT. Confusion would be much less if Surface ran the Metro OS, instead of Windows RT. I can’t count number of reviewers who review “Surface with Windows 8″ (they should be fired frankly. Surface with Windows 8 is still a few months away).
Another issue with being out of the valley is that Microsoft is often way behind the 8-ball. When mobile email started to get big Microsoft was busy competing with Palm. When people wanted more multimedia and better browsing experience from their smartphones Microsoft was busy competing with RIM instead. When Google was working on it’s super awesome V8 engine that led to node.js, Microsoft was busy pushing Silverlight to compete with Flash. It came out with non-touch Zune when the world was ready for iPod Touch. It came out with Zune HD when the world was ready for iPhone. People making product decisions at Microsoft are, sadly, away from the largest congregation of early adopting trend setters. As a result, they need to wait for a trend to establish itself. You cannot observe a culture from a distance and hope to influence it, you have to be part of the culture. And Microsoft isn’t.
That brings me to my main issue. Microsoft, more than any other company (certainly more than Apple and Google), makes you feel that you do not matter. It makes you feel that bean counters make product decisions at Microsoft. As a result, Microsoft, more than any other company, doesn’t take the last step of actually polishing its offerings. It’s almost as if products are built by bean counters instead of people passionate about the product.
How do you buy or rent music / movies / TV shows on iTunes or Walmart or Amazon? With money. How do you do it on XBox? With points. Can you buy exact amount of points? No. Can you cash out leftover points? No. if you move countries, do you get to take the content with you? No. Can you use old points in your new country? No. That money is gone. It’s now Microsoft’s. Microsoft has a lot of points I purchased in the US that I can neither use nor cash out cuz I live in Canada. That’s a huge penalty from Microsoft because I chose to bet on Microsoft.
I actually prefer Windows Phone. So naturally I got me a Windows Phone. I could be the champion for WP. But I also listen to 20 podcasts regularly. Before I purchased the Windows Phone I verified that it had podcast support. I verified that I could sync podcasts over the air. I did my homework. I even looked at the phone and saw that the music app had a “podcast” section. Except … since I live in Canada I cannot sync podcasts over the air. Zune app doesn’t have the podcast catalog. My phone’s app store does not have podcasts. Why, Microsoft, why can you not solve problems that all other companies can? So if I purchased anything other than Microsoft I wouldn’t have to tether my phone to the desktop and use hacks to sync podcasts. Why am I making this sacrifice? Chances are, when I update my device I wont.
And I wont even talk about IE. A part of me dies inside every time I think about hours I wasted on IE6 and IE7. Even when Microsoft paid my salary it lost me as an IE user.
Microsoft’s solution is not that difficult because it really does have really smart people with (almost) great products. Just start putting people in leadership position who have passion for whatever product they are building. Only then will people be able to relate to leaders like they related to Steve Jobs or can relate with Sergey Brin and Larry Page.
I used to think Microsoft needed to hire marketers from companies like Coca Cola and Nike that knew how to build brands. I don’t think that would help. It needs to make sure it matches people with their passions. Especially in leadership positions. It’s hard to explain but it’s very obvious when something is built by people who build it as a job rather than passion. Someone with passion for people using browsers would never have shipped IE6. Ever. Someone with a passion would say “hey, we cannot force people into this uber confusing point system when everyone else simply uses money”. Someone with passion for cloud computing would say “we cannot call it Windows Azure. That’s just stupid and confusing.” Someone passionate about emails would not have allowed hotmail related shenanigans to continue as long as they did (new outlook.com is actually pretty cool). Can you believe there was a time when on Windows Mobile gmail worked magically but hotmail did not work at all?
So, Microsoft, I like Apple and Google but I do not wish to live in a world dominated by just Apple and Google. I need you to step up. I like competition. You’re almost there, just make sure people in leadership position actually are part of the culture their products belong in, have serious passion for that product and culture, and for the love of God, please stop asking consumers to make sacrifices in order to use your products.
Read MoreDunning-Kruger effect is a cognitive bias that gives unskilled individuals undeserved confidence about their skills. Essentially, ignorance begets confidence. Interestingly, the reverse is true too. Knowledge tends to lead to self doubt, leading truly skilled individuals to feel like they are faking their skills (see: Impostor Syndrome).
One simple reason (in my opinion) is that people ignorant about a subject tend to oversimplify complex problems to compensate for their lack of knowledge. As a result, they miss nuances and subtlety that is part of virtually everything we do. As you gain knowledge you truly start to understand depth of skills required to master the field you are in and, by comparison, start to realize how much you still have to learn.
A quote I heard when I was in highschool summarized it well: “funny how much you gotta know before you know how little you know”. Common sense tells you that the Earth is flat. An ignorant stops here. When you start to move beyond the common sense you realize how incredibly complex the universe truly is. That is when you realize how little your area of expertise is and naturally, you start to have doubts about your competence.
I seek out people who are knowledgeable enough to be able to identify their areas of incompetence, even if it occasionally leads to self doubt. Problem lies with people who are so self confident that they do not even entertain the possibility that they might, in fact, not be as skilled as they think they are.
So next time when you are convincing investors to invest in your venture or smart people to bet their careers on you and you start to feel like a fraud knowing there are better experts in your field, just know that you are in good company. Don’t give up, just push through it. You are not a fraud or an impostor. You are someone who refuses to turn complex problems into simple soundbites and that is something to celebrate, not fear.
Read MoreA good design solves a problem with ideal set of features, no more and no less. Seems like an obvious thing to say but plenty of engineers focus on unnecessarily increasing complexity by building a whole list of features that do not necessarily solve the core problem. Likewise, some designers focus on simplifying design to the point where anything other than basic interaction gets difficult to perform. We’ve all seen overly complex electronics with lots of knobs and buttons that look really cool but aren’t very usable. We also have experience with overly simplified user interfaces with overloaded controls where you cannot figure out how to perform a task.
The problem is, you cannot figure out ideal set of features unless you try. No amount of white-boarding and documentation will give you the answer. So go ahead, build it. Gather feedback. Iterate and iterate again. Cut until you cannot cut anymore. If you’re a manager then encourage prototyping and iterating. It’s not a waste, it’s critical to learning and innovating.
Read MoreThere is a disturbing misconception that anything not used in the end-development, everything that you end up throwing away, is a waste. If that’s waste then waste is not a waste. You need to waste to learn. Without building and trying, you won’t know what to throw away. And without throwing away and cutting, you won’t end up with a perfect set of features that solves your problem.
Don’t focus too hard on avoiding ‘waste’, rather concentrate on figuring out how to quickly iterate to identify and remove things that do not solve your problem.
Read MorePopulism is easy, but not always the right choice. If your proposal is met instantly with universal approval then chances are you aren’t thinking outside the box. That might be okay in politics but as a leader if you aren’t pushing boundaries then you aren’t innovating. And if you are pushing the boundary then you’re inevitably challenging the status quo. Go ahead, be an outlier.
Read MorePeople often confuse volatility with risk. They’re not same. To use Nassim Taleb’s example, Italy has had 60+ regime changes. It’s government seems volatile. Saudi Arabia, on the other hand, has had the same regime the entire time. It “seems” stable. However, Italy is far less risky than Saudi Arabia.
When judging an investment or business opportunity, it is important to differentiate between volatility and risk.
Read MoreI recently read the following quote from Seth Godin’s book Tribes, and it stuck me :-
The easiest thing is to react. The second easiest thing is to respond. But the hardest thing is to initiate.
And this from his blog post from November 2008 :-
The largest enemy of change and leadership isn’t a “no.” It’s a “not yet.” “Not yet” is the safest, easiest way to forestall change.
I couldn’t agree more. “Not yet” is the coward’s way of maintaining status quo. Yes is an option. No is an option. At x point in the future if y and z become true is an option. Simple “not yet” is not a sound argument.
Read MoreEven experienced managers sometimes have trouble differentiating between excuses and explanations. That’s a shame because good explanations require understanding root causes of issues, which lead to better insight for the future.
If you consider every explanation to be an excuse then you’ll very quickly create a culture where people will settle for what’s safe and risk-free. Innovation is neither, think about it.
Read MoreOn average, doctors earn a decent living. Going to med school to become a doctor is a safe financial bet.
On average, actors are broke. Going to acting school to become rich is plain stupid. Do it because you love it, not because it’ll make you rich.
One is like playing lottery. The other is sound planning. Often what glitters in fact isn’t gold.
Invest in your career based on the expected outcome, not exceptions.
Read More