Now that I’m running my own company and no longer speak on behalf of Microsoft or anyone else, I feel like I can speak a little bit more freely about some of the things I’ve observed about people at startup companies over the past couple of years.
I worked with close to a hundred companies in some capacity as a Startup Developer Evangelist – some much more closely than others, but nonetheless had a chance to live vicariously a lot of different companies in different markets run by different types of teams with different types of people on them.
Regardless of all of those differences, there’s one thing that a lot of these founders had in common: the less disciplined and experienced founders manage to waste a lot of their time and energy on things that are counter-productive and others that are actively self-destructive.
Here’s seven really unproductive habits that I want to call out in particular.
1. Attend and spend money on countless “startup” events without goals or regard for opportunity cost
My father, an experienced serial entrepreneur, offered up a single rule for me to heed above all others when I started working at Microsoft: “guard your time, jealously.”
Your time is at a premium, particularly during a pre-funding / pre-launch stage – you can’t afford to waste it on things that don’t provide value in some way. The first thing I’ve skipped since going full-time on MarkedUp? Every event that is non-essential; my evenings and weekends are reserved for production deployments or blowing off steam.
There’s consensus among many people in the startup community that “meetings are pointless” – and that’s often true of internal meetings. So what are events?
They’re external meetings – there’s nothing special about a tech event that makes it magically productive. You have to weigh the costs of going against what you could be doing instead, which most startup founders do not.
Be honest with yourself about the value you want to get out of an event – if you’re going there to work a room and generate leads, then it’s probably worth it. If you’re going to go because you just want to “network” and don’t have any real sense of purpose about it, then don’t bother. Go talk to customers instead.
2. Waste enormous amounts of time on “omnidirectional” networking with no real purpose and promise of value in return
Corollary to time wasting behavior #1 – networking with no real purpose.
Networking when done right takes a lot of time – it’s not as simple as collecting up a truckload of business cards at a conference, carpet bombing those poor saps with LinkedIn requests, and watching your stock rise.
What networking should be about is:
- Seeking out potential business partners, mentors, advisers, co-workers, investors, etc…
- Qualifying the ones who are interesting;
- Establish your credibility (so they can qualify you;) and
- Finding mutual benefit in working together.
The process of building credibility and qualifying takes time – so, why spin up a bunch of threads with people who aren’t the right fit to help you accomplish your goals? Just so you can say “oh, I know X” at one of those stupid events you should be avoiding?
Pick your battles – if you’re going to go through the trouble of networking, do it like you mean it and mean it when you do it. Don’t be that clueless person in the middle of an event handing out business cards to people who don’t need you and you don’t need.
Figure out who you need and pursue those people.
3. Buy crazy expensive booths at startup conferences
Take it from a guy who’s had to work booth duty for a company who can afford the big ultra-delux booth at TechCrunch Disrupt: the booths are worthless.
Unless you’re demoing something tangible that will get people’s attention (MakerBot being a really good example,) you’re better off spending that money on literally anything else.
MarkedUp won a free booth spot at LAUNCH conference due to our performance at Startup Weekend Los Angeles, and we happily signed up. The booth traffic we got was modest – the real value we got out of the event was talking around and working the room.
Every startup should probably try this once – it’s like touching a hot stove or oven: everybody needs to do it one time to know not to do it again.
4. Chase top-down media coverage and press way too early
How many entrepreneurs do you know who’ve stated “getting covered on TechCrunch” as a PR goal?
This is going to sound kitschy but it’s true: the secreting to getting covered by a giant tech blog like TechCrunch is not to try.
Don’t waste time trying to pitch under-developed stories to writers swamped with a glut of press releases from professional PR firms – build something unique and interesting, build interest organically, and the story will start to sell itself.
You’ll still have to put some effort into managing your messaging and top-down marketing at some point, but it’s absolutely the wrong place to start. Your pitch won’t seem like a quixotic / desperate marketing goose-chase to the bloggers if you’ve executed well and have some momentum.
Getting top-down PR for your startup is just like raising money – the conversation starts with a vision and the close comes with traction.
5. Fretting over equity when your company isn’t worth anything
It’s a good thing when an entrepreneur takes the ownership of their company seriously – avoid anyone who doesn’t. However, taking it too far and being miserly with equity during a stage when you’re cash poor and equity rich is both naive and counterproductive.
If you can find a great CTO / biz dev person / designer / product person who believes in your idea enough to be willing to work without pay for months in the name of getting equity, you should be mind-blowingly thrilled.
Congratulations: you’ve just met a really talented person with super high risk tolerance and a tremendous amount of passion for your company’s vision; that’s like wandering the Sahara for days only to stumble upon an oasis with a 5-star resort in the middle of it.
So why screw up a beautiful thing by trying to lowball the person over a few percentage points of ownership interest in your company?
Ditto for early investors and advisors – if you find some competent angels and advisors who are really passionate about your work and are able to put a little bit of money in, err on the side of equitability.
There will come a point where the equity is worth more than the cash, and it will become obvious when that is the case and you’ll be right to preserve the ownership interests of the other stakeholders as much as possible.
6. Dismissing friends and family who commit the crime of “caring about you”
When I reached out to friends who worked at startups over the past couple of years, I was occasionally dismissed with a sentence along the following lines “I’m sorry, I’m just not available – you just don’t know how hard it is to work at a startup.” I’m certainly not the first person to be told that.
I try to have a sympathetic ear as often as I can, but every time I hear this it thoroughly pisses me off because (1) everyone has to deal with grinds and long nights and (2) stress is no excuse to be dismissive to family or friends (people who care about you.)
I’m no stranger to 12-14 hour days – I worked plenty of them at Microsoft and my first startup before that. And being human, I sometimes did a poor job of getting back to people in my life who wanted to hear my voice. That’s one of my biggest regrets over the past couple of years. But even under a great amount of stress, I don’t surrender to exhaustion and say something stupid and hurtful to one of my friends or family members who wanted to check in on me.
You need the help of a lot of other people to pull off a startup successfully. I screwed this up in a major way with my first startup. However, caving into pressure and pushing your friends and family away takes you from neglecting your relationships to actively doing harm to them.
If you’re going to take on something as arduous and demanding as a startup then have the maturity, class, and discipline to bear it like an adult, rather than a child out of his or her depth.
7. Sacrificing nearly all social, physical, and personal needs in the name of “getting it done”
You can push yourself to a large volume of work over a short period of time – you can cram 80 hours into a work week if you can try. But you can’t do it forever.
You know what a successful entrepreneur needs?
They need to work out and get sleep so they can maintain their stamina and energy level. They need to go out with friends and blow off steam. They need to go out on dates. They need “me” time to collect themselves.
Creating a balanced life takes discipline – I dropped the ball on this epically at Microsoft. I starting changing my behavior before I left Microsoft and it’s made me more effective and productive.
When you feel the pressure around any product launch or fund-raising activity and start sacrificing everything else in the name of “getting the job done” all you’re really doing is panicking with a long fuse. Burying yourself in work indefinitely isn’t a virtue – it’s surrendering away the life you’re trying to improve in the first place.
And ultimately it’s a self-fulfilling prophecy: if you keep burning the candle from both ends too long, you’ll eventually fail.
8. Writing cathartic blog posts when you should be reaching out to customers and closing Github issues
Shit. I need to get back to work.
If you enjoyed this post, make sure you subscribe to my RSS feed!
f69c8822-fb84-4beb-ae3b-2d5ee8a4a1ba|3|5.0
And patience. This is intended for people who recognize that a need to change themselves, their environment, or whatever and are having trouble getting started.
Until last month, all of the books in my Kindle collection were exclusively technical.
Whenever I travel for work and spend two hours uncomfortably seated between obese strangers and screaming children, I fire up the iPad and delve into a world of exciting subjects like Spatial Data Analysis in SQL Server 2008, the Ruby programming language, ASP.NET MVC3, iOS development, NoSQL Databases, and so on. Behold the “traveling with Aaron Stannard experience” in its full glory.
Before a business trip to Boulder I loaded up The Flinch in my Kindle collection because it was (1) free and (2) I had read someone somewhere say that this was a life-changing book. Whatever. I set about my business, had a good day of work in Boulder, and on the return trip home I fired up the iPad and started reading.
The Flinch delivered on its second-hand promise of being life-changing… The basic premise of the book is this: all people are born with a very small number of built-in reflexes. Loud noises make us tremble, high pitched cries make us look for children and people who are in distress, and “the flinch” is there to protect us when are in immediate danger.
The flinch isn’t just the physical cover-up-with-your-hands reflex you had when Tommy Tommerson tried to drill you in the crotch with a kickball line-drive in 3rd grade – it’s also an inertial force that stops you from taking potential risks and making changes. Do I really need to explain what’s wrong with feeling resistant to taking risks and making changes? Fine.
As I hinted in my last post about our first post-collegiate years and as Paul Graham spelled out explicitly in his “Top of my Todo List” essay – our biggest life regrets are errors of omission. Drifting apart from great friends, finding out years later that the hot girl from English class thought you were cute but you were too much of a pussy to make an advance, not taking the job at the early stage startup that made it huge, not staying close to a family member who passed away suddenly, and the list goes on.
The reason you let this stuff happen is because of the flinch – the flinch speaks to you in your own voice, rationalizing reasons why you shouldn’t pick up the phone and have an awkward conversation with your sick relative or why dating is a waste of time. It makes you feel comfortable sticking with the status quo and tells you “you’re fine, you don’t need to change.”
In the ancient days, when changing your routine might mean getting eaten alive by a Sabre-Toothed Tiger because you decided to go hunting in an unfamiliar part of the woods, the flinch was a good self-preservation instinct.
Today, what’s the biggest danger you can possibly run into? Being the one out-of-shape fat person struggling with the Stairmaster at 24 Hour Fitness? Dear God, anything but that!
The flinch gets in your way more often than it helps. It stops you from making the sorts of changes you need to realize your goals. It drives unwarranted compromise and needless caution.
So how do you overcome it? Like anything else worth doing, you practice.
More abstractly: overcoming your aversion to risk takes practice and effort – the very real physical and psychological reflex that your body and mind impose on you when presented with a risky choice must be unlearned by way of repetitive exercise.
I’m great at taking risks with some things and not so with others. I’m not as averse to risk in some areas because I’ve developed a competency for risk-taking through repetitive effort; in areas where I suck at taking risks it’s because I’ve spent years rationalizing away my need to practice and improve.
After I returned home from Boulder I set about making some long overdue changes. I started exercising again. I reconnected with some old friends. I started teaching myself things I’ve needed to learn for years but had told myself “no Aaron, you suck at X.” Fear of taking even minor risks, like the self-awareness you feel the first time you work out in twelve months, is an everyday thing that can (and must) be overcome.
The most impactful thing I’ve tried is a recommendation taken directly from the text of The Flinch itself – I’ve started taking cold showers. It’s initially uncomfortable and you’ll feel the flinch kick in as soon as you turn the dial on the shower, but it’s a start to programmatically overcome the fear. I thought it sounded stupid (if you find yourself saying this a lot, you might just be afraid of whatever it is you’re describing) but I tried it anyway and have stuck with it.
It’s a struggle to push aside something as deeply programmed as the flinch, because it’s our natural default. But we do it because the things we want require us to sack up and overcome it.
If you enjoyed this post, make sure you subscribe to my RSS feed!
ec83e2be-bb98-426a-a9f3-00d5aa10c203|0|.0
This is intended for recent graduates who are finding themselves lost in the shuffle as they adjust to the real world, but has advice that is applicable to everyone. Your mileage may vary.
I graduated from Vanderbilt University with a B.S. in Computer Science in May of 2008. I was a Cum Laude student and a member of Sigma Nu (a fraternity.) I rebuilt the student embodiment of IEEE & ACM back up from scratch into a meaningful, attractive organization inside Vanderbilt’s engineering school, and did it alongside some really wonderful and amazing people. I helped rebuild Sigma Nu, lived in the house for a time, and met fantastic people who will be some of my lifelong friends.
The four years I spent in school were life-changing for me and completely reshaped me into a much more confident, balanced person than I was going in. I have few regrets.
The four years after I graduated have been disorienting – I’m not in a structured social environment anymore where everyone is new and eager to make friends. I have conference calls at nine in the morning. I need to renew my auto insurance. I have three weddings that I have to go to this Summer and I’m 90% sure I won’t fit into my old pair of dress pants.
I’m fortunate that I live in a country where I don’t have to worry about clean water or getting my head cut off, but that first world self-assurance doesn’t make the transition to adult life any less jarring.
The most bothersome part about being an adult is a moment that occurs 1-3 years after you don the cap and gown.
Here, I’ll set it up: you got your first job or two and have busted your ass nonstop trying to build a life, income, and home for yourself. You haven’t gotten blackout drunk with your friends “because it’s Tuesday night” since graduation. You haven’t done any travel beyond seeing family and maybe a small trip here and there. You’ve grown apart from many of your college friends as you all went your separate ways, both geographically and professionally. You’ve settled into some routines that give you some sense of control over things, but you still aren’t really cooking for yourself or exercising enough (as your mother will tell you.)
With that picture in mind, here’s the moment that brings it all home: during the course of a regular day, maybe when you’re at work or just coming home, you rediscover a piece of your personal history directly from the time when you were at college – and you start thinking about what’s elapsed between then and now. And a wave of private humiliation starts to well up inside you… my life is a lot smaller than what it used to be, isn’t it? Not going out there and changing the world yet exactly are am I? And my, what a boring person I’ve become!
It’s the moment where you realize that you’ve unknowingly started to cast a boring mold for your future – and you start to mourn all of the ambition and optimistic hopes you held when you were in college. You start to doubt the path you’re on and wonder, sometimes out loud, if you completely wasted the years of your life after college. You worry about sounding like an entitled, whiny bitch if you complain about it to anybody save your absolute closest friends, and thus deal with your torment in private.
Relax. Everyone goes through this – you’re not alone, and it’s scary for everyone too. It doesn’t mean you’ve screwed up or made poor choices, and there’s no point in worrying about that anyway since you only live once. Heed the moment for what it really is: your sub-conscious telling you “initiate adulthood, phase 2!”
Adjusting to adulthood isn’t easy – if it were there wouldn’t be any coming of age movies and Workaholics wouldn’t be hilarious.
College doesn’t prepare you for the ambiguity of real life – it gives you some of the tools and weapons to figure that out yourself in an economy where people are valued based on knowledge (rather than the ability to wield a shovel.) It takes a few years to figure out “where the bathroom is,” if you pardon the metaphor, before you can really go on to do the stuff that you were born to do.
The moment is a call to arms, crafted just for you. It means you’ve figured out what it takes to survive outside of the corner room in your parent’s house; you’ve got some money and some workplace experience; and you’ve a certainty that things are not where you want them to be. And you have no obligations to anyone or anything, save some manageable debt and a lease that expires in 7 months.
The moment means the time to make your life the way you imagined has come – don’t screw it up. Quit your job and start a company; go traveling; marry that girl you’ve been dating steadily for three years; take up surfing; whatever your dreams are, do what it takes to realize them.
This won’t be the last time you have a major moment of “oh shit what am I doing?” either – take them for what they are: indicators that you’re ready to advance and change. Go do what it takes to be interesting and optimistic again now that you’ve conquered the banalities of adulthood.
If you enjoyed this post, make sure you subscribe to my RSS feed!
4660781e-36ab-4923-ae99-265f4759dcb0|0|.0
Big Picture
The bottom line when working with busy people is to preempt as much of the mental overhead of working with you as possible; all it really takes is some brevity and thoughtfulness on your part. If you form the eight behaviors I list below (and others I may be forgetting) into habits, you'll be much easier to work with and you'll get better results.
Define "Busy"
One of the transformational things my job at Microsoft has done for me is help me appreciate what it is like to be extremely busy and how hard it can be to work with other extremely busy people.
“Busy-ness” isn’t a measure of how much time someone spends working, although there’s typically a strong correlation; it’s really a measure of the total amount of concern a particular individual has to manage at any point in time. The busier you are, the greater the concern you are managing.
Each task / person / problem / thing you have to manage at any given time carries a non-zero amount mental and emotional overhead – dates, consequences, pressures, stakeholders, key facts and figures, costs, opportunities, sentiments, and so forth. All of this takes effort to remember, recall, manage, and act upon.
A person who has to manage 1,000 small things is extremely busy; a person who has had a parent or close relatively die recently is extremely busy. The number of items isn't what matters - it's the total sum of the mental and emotional overhead that drives busy-ness.
When you’re trying to do business with extremely busy people, you are effectively adding more stuff onto their already full plate. In order to effectively communicate and do business with them, you need to minimize the overhead of whatever it is you need said busy person to do for you.
So here are some ways you can make it easy for busy people to get back to you:
1. Always be the one to propose possible times for phone calls or meetings, and include more than one option.
When I ask to meet with the managing director of an accelerator or the CTO of an interesting startup (busy people,) I always end my emails with a sentence that reads something like this “do you have time for a quick phone call any time after 3:00pm on Tuesday or Wednesday?”
The effect here is subtle: what you do by proposing times yourself is you give the busy person the ability to focus on a small range of possible times, and the likelihood of getting a response back in-turn is drastically higher than if you left the scheduling completely open. The proposed times will either work for the busy person or they won’t, and they can give you a simple yes/no answer in return.
If you leave the scheduling for an appointment totally wide open, you are essentially forcing the busy person to do a scan of their entire calendar over the next couple of weeks and force them to find a time. This is overhead – busy people hate overhead, and they may defer responding to you indefinitely.
All of the other techniques I described here are derivatives of the following rule:
Everyone likes being responsive, even the extremely busy. When you the decrease need for busy people to think when considering any business opportunity or engagement you might have, you increase the likelihood that they will get back to you.
2. Keep it brief.
If you want to do business with the extremely busy, make certain that they can understand what it is you want to do in a matter of seconds – not minutes. If find yourself writing War and Peace emails, then you have failed.
Save your stories and background for when you talk in-person or over the phone – keep any requests you have in writing short and specific. One sentence for who you are and what you do. One sentence for what you need. One sentence for the value you can offer the busy person in return. One question on how to take the next steps. Done.
Anything beyond that and you’re using the wrong communication medium.
An even better technique than the Three Sentence Rule for emails is the EOM rule, where you fit the entire body (super short, obviously) of your email into the subject line and terminate it with [EOM] for “end of message.”
If you use the EOM rule, then busy people will read your entire message whether they want to or not given that they can see the entire body of the message in the subject line when they glance over their inbox.
3. Have a specific idea for what it is you want to do; articulate it clearly.
So let’s say you do a good job and manage to get a meeting with a busy person – what then? You should always have an objective for whatever it is you want from them, and you should make that objective as specific as possible.
The more specific your demands are of a busy person’s time, the less overhead for them (usually.)
When I meet with someone who asks me if I can get help their startup get started with a Windows Phone 7 version of their application, then that’s reasonably easy – if they ask me how to solve a specific engineering or design problem that they’ve run into, then that’s even easier.
The amount of information I have to extract from the requestor in order to actually help them is drastically smaller in the latter example and thus I can move from words to action much more quickly.
Contrast this with some meetings I’ve had where the people who requested the meeting open with “how can you help me?” There are hundreds of different ways I can answer that question, but since the meeting requestor hasn’t provided me with any context as to what’s important to them I’m going to do what any other busy person would do and go down the path of least resistance.
That path does not always lead to the results that either party wants, so make the path of least resistance the one that leads to you walking away with your goals met by eliminating the busy person’s need to craft your engagement plan for you.
4. Always include the contact information or address of meeting place in the calendar appointment (and start using calendar appointments if you aren't already.)
This is a no-brainer. If you have scheduled a meeting with a busy person, do one of the following:
- Specify who is calling whom and at what phone number;
- Specify a bridge line if it’s a conference call; or
- Specify the actual address of the place you’re meeting for in-person meetings.
If a busy person can’t figure out how they’re supposed to contact you or meet with you, they might just push or not show up. Make it clear for everyone and take the extra 2 seconds to add a little specificity to the meeting request.
5. Always include your contact information in your email signature.
Particularly important if you are doing in-person meetings – stuff comes up and people might run late or might get lost, in which case they need to be able to get back to you.
Always include a phone number where you can be reached in your email signature so they can contact you in the event that something goes wrong and they run late or need help finding you. If they haven’t had time to save your contact information, they can at least quickly look up your last email conversation and grab your contact information that way.
6. Do not, under any circumstances, go “favor-shopping.”
A surefire way to never hear from a busy person ever again is to shop them for favors. This happens when one person tries to extract as much value out of a busy person’s time as possible by stuffing the meeting full of requests for different and often unrelated favors.
I had a meeting where a person presented me with four unrelated projects and asked how I could help with each; I ultimately decided not to help with any of them, because it was clear that this person did not care what my interests were. It was all about their projects, not about building a mutual business relationship.
When you go favor shopping, you’re not offering any value in return – you’re openly using the other person and being a parasite in the process.
Favors don't come at a volume discount.
7. Be appropriately persistent.
Follow-up is good; busy people let stuff slide and can easily forget. Finding a way to stay on someone’s radar appropriately is necessary and good.
However, asking for read receipts for every single email you send is obnoxious and busy people will simply delete your messages.
In contrast, following up after 2-3 business days with a simple “just wanted to double check to see if you’re still available for lunch on these dates” is fine under most circumstances.
Here are my rules of thumb:
- Time-sensitive business emails: 2-3 days for people I don’t know, 1 day for people I do. Obviously this varies depending on just how time sensitive the matter is.
- Important but not urgent business emails: 1 business week.
- Anything else: why are you bothering this person?
Email is often a crappy medium for doing business anyway – pick up the phone and call the busy person’s office if you aren’t able to get ahold of them via email.
8. Be flexible.
Life happens; meetings get moved; and things come up. Be flexible enough to take these things in stride. You’ll get a lot more business done this way and will be thanked for it.
If you enjoyed this post, make sure you subscribe to my RSS feed!
1a3e37fa-5125-4ae2-b3f5-e38c47e0c20f|3|3.3
I am frankly disturbed by a trend that I’ve seen both in-person and all over Hacker News / Reddit through the past year, and I am going to finally give it a name: “popped collar programming.”
Popped collar programming is the hipsterization of software development, and it’s happening in a co-working space, unprofitable venture-backed startup, or coffee shop near you.
A popped collar programmer’s life begins like this:
-
[New Technology X] is released and offers a new and interesting view of how to perform [programming chore Y];
-
Reddit / Hacker News announces the release of [New Technology X] and is greeted with tons of enthusiasm and applause;
-
Curious developers check [New Technology X] out – it’s an early release and thus they discover [New Technology X] is missing [Critical Features 1….N] and has [Stability Issues 1…N]; most of the early adopters utilize the technology sparingly in production and only where it’s the right solution for the problems they’re trying to solve.
-
[Group of early adopters A] can’t get enough of [New Technology X] – they create lots of blog content on how to couple it alongside other popular technologies and receive front-page treatment on Reddit / Hacker News.
-
[New Technology X], despite lacking [Critical Features 1….N]; having [Stability Issues 1…N]; and often not being the best business case match is now used in 100% of production projects by [fanboys of early adopters A].
-
[Fanboys of early adopters A] declare the death of [Established Competitive Technology with Massive Following X]; [fanboys of early adopters A] have now become popped-collar programmers.
-
[Popped Collar Programmers] begin purchase of ironic / retro t-shirts; growing porn star mustaches; writing blog entries about the challenges of scaling [New Technology X] despite having a trivial number of users on their service; blog entries make front page of Hacker News.
Popped Collar Programming is essentially “adopting technologies for the sake of appearances” – technologists who’ve fallen victim to this way of thinking often make technology decisions without any regard for what’s the best tool for the job.

Once you’ve gone down the road of letting anonymous people on the internet convince you that having cool war stories with cutting edge technologies you can tell on Hacker News is more important than shipping software that works and is easy-to-maintain, you’ve lost the objectivity and pragmatism needed to be an effective software developer.
And it doesn’t stop at technology decisions; popped collar programmers spend more time picking out ironic t-shirts to go with their fedoras and oversize rubber watches than they do logging bugs.
Don’t Be That Guy
Popped Collar Programmers are inefficient (fitting square pegs in round holes from the start) and ineffective (building complex bug-prone architectures themselves to address problems that are already solved with widely-used technologies.)
If that argument’s not enough to convince you to stop yourself or your friends from being popped collar programmers, let’s try a live-by-peer-pressure, die-by-peer-pressure approach: you look like a complete pair of clownshoes in front of people who actually know what they’re doing.
If this sounds like you or someone you know, don’t be that guy. The solution here is to read The Pragmatic Programmer until you can’t stand to look at that Hadoop + Riak + Redis + Clojure-powered blog platform you created without vomiting in disgust.
Don’t. Be. That. Guy.
If you enjoyed this post, make sure you subscribe to my RSS feed!
292038b2-d417-40b5-870b-c92ba32d6aaa|7|4.4
I alluded to a change in my employment circumstances in my previous blog entry, and now that I'm an official Microsoft employee as of Monday I feel extremely comfortable making this information public.
My role is Developer Evangelist for the BizSpark program; Microsoft recruited me for this position after they read .NET Culture Shock: Why .NET Adoption Lags Among Startups and the rest, as they say, is history. I've relocated to the Santa Monica area and my immediate task is to work on increasing goodwill towards Microsoft and the .NET platform among the startups in southern California; it's a prospect that is exciting, daunting, challenging, and mind-blowingly awesome all at once.
If you're involved with startups in SoCal then I will make it my mission to meet you and find a way to help you should you require it. If there's anything I can do to help you, please feel free to contact me.
As for the blog - it's not going to change much :p . If anything, I'm going to have more content as a result and it'll be from a much higher altitude than it was before.
Wohoo!
If you enjoyed this post, make sure you subscribe to my RSS feed!
a3d60ef6-5408-48e1-8d19-33b9b4db8c2e|1|5.0
I showed up at BarCamp7 this morning and saw that absolutely no presentations were up on the board whatsoever, so me being me I spent most of the day putting together a presentation at the last minute.
I spoke for an hour about How to Design Applications People Love. I’ll add more to this post later after I decompress with some TV, but here’s my PowerPoint:
All in all, it turned out really well – I’ll try to update this post with some more detail tomorrow.
Update 7/13/2010
Ok, here’s the run-down of my talk:
-
We all begin with ideas for new applications or products, but in order to determine if it’s worth actually pursuing any given idea we have to determine who the product’s core user group actually is and whether or not they’d actually use it enough to merit its production.
-
We begin this determination using “
the onion process,” a name I invented on Sunday morning, which elegantly formalizes the process I’ve been using for my latest group of projects.
-
During our execution of the onion process, we inevitably make a number of assumptions about our application / product’s users – therefore we have to map out those assumptions explicitly so we can systematically test them when we start our customer / user engagement process. I find that it’s best to use a
mind map for this, but a simple outline can work too.
-
Once we have our assumptions outlined, we have to test them by interviewing potential users and determine if and where we are on/off-target.
-
Let the process of churning begin.
If you enjoyed this post, make sure you subscribe to my RSS feed!
3189ec20-7658-4105-a667-cd148a8ffb4e|0|.0
This time last weekend I was in the middle of the second session of Southern California Code Camp. Ever since I came to the realization that no man is an island and I’m going to ultimately need to work with other programmers in order to be successful in this business, I’ve made an effort to attend as many geeky networking events as I can.
Code Camp was a fantastic learning experience for someone who’s as interested in the .NET platform as I am. During Code Camp I was introduced to:
- Silverlight 4;
- Silverlight for Windows Mobile Phone 7;
- ASP.NET MVC2, which I used this past week to build The Great Wall of Geeks;
- .NET 4.0 multithreading (Parallel.For, Task engine etc…);
- .NET coding standards; and
- Agile Development and working with legacy code.
By far and away the best session for me was the Pair Programming / Agile Development Dojo, namely because I got my first taste for Agile development and the inherent value of rapid prototyping and test driven development was obvious.
More...
75a74846-7c84-4680-b7e1-b30629490c88|1|5.0
One of my best friends from college once described a previous job in the financial industry as something akin to "giving guns to monkeys."
He felt that the product he sold, although it was something that could reap tremendous benefits for his customers if used properly, was something that more often than not harmed customers' livelihoods because the tool was too unwieldy and naunced for the average person to use correctly.
Like my friend in the financial industry, programmers are faced with a similar quandry - do we give our users enough rope to potentially hang themselves (more freedom) or do we provide a more authoritarian, constrained, "baby-proofed" experience (less freedom?)
All programmers are UX designers
Giving guns to monkeys and baby-proofing aren't about bugs or errors in the software. The concepts are both about making judgement calls in user experience design, and it's not just the UX gurus who have to worry about this sort of stuff - every programmer does.
Here's a technical example which illustrates my point:
I'm in the midst of creating an open source library for seamlessly parsing RSS/Atom feeds for legacy .NET 2.0-3.5 projects, where we don't have access to .NET 4.0's built in SyndicationFeed classes.
One of my test cases is the Hacker News RSS feed (http://news.ycombinator.com/rss), and when I tried to execute a basic HttpWebRequest against it, the method failed because apparently Hacker News' feed is not fully RFC-complaint and thus HttpWebRequest raises an error as a defense mechanism in order to prevent HTTP response split attacks from occurring.
Microsoft responded to a legitimate security problem with a binary solution - either you turn off unsafe header parsing and run the risk of a split response attack or you simply don't process data from sources with malformed headers. They baby-proofed it.
And what, pray tell, does Microsoft recommend for us developers who want to use HttpWebRequest to download feeds from sources like Hacker News?
"If you find a site that exposes this behavior [non-RFC-compliant HTTP headers], contact them and ask them to fix it."
At no point did this behavioral decision grace the desk of a UX person at Microsoft (that's my assumption at least,) nor should it have. It's a user experience issue, but it's one that affects other programmers trying to leverage Microsoft's .NET framework in their own projects. Therefore the user experience decisions are made by the very programmers who maintain this portion of the framework.
One can hardly fault Microsoft for erring on the side of caution when it comes to security; in fact, the decision to make HttpWebRequest throw an error when a potentially unsafe header is detected is probably the right call.
I suspect a lot of developers honestly don't care to download content from sources with non-compliant headers. However there are a number of developers who want the freedom to make calls to those sources, and since Microsoft made it somewhat difficult to disable this security mechanism there's now an enclave of programmers who all use the same configuration hack to reverse Microsoft's decision, which ultimately isn't something Microsoft wants either.
This decision is one where not enough freedom was given to end-users - one whitespace character in the Content Length (should be Content-Length) HTTP header shouldn't force .NET programmers to deny their own application/service's end-users the ability to consume RSS feeds like Hacker News.
So what do you think? How much freedom should be afforded to the people who use our libraries, APIs, applications, and services? Is it better to baby-proof or give guns to monkeys?
If you enjoyed this post, make sure you subscribe to my RSS feed!
f98d9714-89f9-4967-86a0-b8ab7fe7efab|0|.0
I wanted to repost a presentation that I saw on Twitter yesterday which highlights some interesting trends in the state of open web APIs across the board:
Here are some cliff notes:
- SOAP is losing marketshare to REST or SOAP's share is simply being dilluted by the avalanche of new REST APIs - the charts don't make it clear;
- JSON is on the rise;
- OAuth is surging and is now adopted by 80+ services; and
- APIs are maturing in their practices.
If you enjoyed this post, make sure you subscribe to my RSS feed!
74799fe5-32ef-495f-aa94-8f52463c1612|0|.0