As technical founder one of the main challenges I face is to get away from binary thinking.
While the ability to put reality into discrete buckets of true & false is handy when you write code and design databases it can easily cloud your mind.
If your default point of view of problem spaces is discrete you can easily get hung up on it and miss low hanging fruit & small steps into the right direction even if they lie directly in front of you.
Next time you find yourself trying to figure out how to bucket a situation or decision into true or false take a step back and try to explore the problem space.
Draw a continuous line. Draw a map. Go broad. Zoom out. Drill down again. Try to figure out …
where you are
where you want to go
and how you get from here to there
Here are a few questions that help to explore problem spaces …
In this post I’d like to highlight the 5 books that deeply influenced the way I think about Product Management. They were written by people who truly understand and love their craft and cover diverse topics like economic decision making, positioning, marketing, usability design & programming.
Speed, quality, cost – pick three. Hands down the best book on Product Management I’ve read so far. Donald Reinertsen clearly explains the challenges in developing software products and offers pragmatic solutions to drastically improve time-to-market, economic value & product quality in a refreshingly down-to-earth manner.
The book busts traditional product management myths and introduces well-known concepts from Lean Manufacturing to the world of software development.
Reinertsen shows how economic decision making, managing queues, reducing batch size & applying work-in-progress constraints help to create better products faster. The book points out where the concepts make sense, why they work and when we need to adapt them for the software development context.
Reinertsen manages to not only explain the how but also the why. If you are in product development this book is invaluable.
In a world where customers are overladen with information & advertising it is crucial to understand how to cut through the noise and position your product in the market – and ultimately in the mind of your target audience.
This book is an easy to read introduction to product & brand positioning and comes with a ton of illustrative examples. Once you’ve understood the importance of positioning many tough product management efforts like managing the scope, pipeline of features, sales and marketing will fall into line.
In this book John Caples shares his lessons learned from over 60 years (!) in marketing & copywriting. His strong background in direct-mail marketing and his drive to quantify his own marketing efforts makes this book a thrill to read.
The book is full of examples and actual data from various marketing campaigns as well as hands-on how-tos about writing effective marketing headlines, leads & calls to action that actually work.
Even while Caples’ book mainly focuses on direct-mail marketing and was first published in 1931 (!) its lessons learned apply incredibly well to modern inbound marketing channels like social media, drip email marketing, Q & A platforms and content marketing in general.
Everyone knows the frustrating feeling when apps don’t behave as expected. Products with great usability on the other hand are a pleasure to use and have an easier time to create value for their customers.
Designed for Use is the best book you can get about usability of web & mobile applications. It covers a wide range of usability concepts and research in a way that’s very accessible even if your background is in software development. On top of that it illustrates very useful UX methods that you can apply during different steps of your development process.
This book is the swiss army knife of software usability.
In The Pragmatic Programmer Dave Thomas and Andrew Hunt write about the craft of software development. The book is full of pragmatic tips and well written anecdotes for people who are curious about becoming better software developers. Dave & Andrew are truly in love with their craft and are happy to share what they’ve learned over the years.
It’s not surprising that a lot of the book’s advice on topics like testing and the use of version control systems are regarded as the status quo & best practices of today. The Pragmatic Programmer is a fun to read, broad – yet compact reference guide about software development that you can revisit over and over again.
The book is not only a great guide for programmers looking for mentorship & personal growth but also for people who believe in a holistic approach to product management.
I often get asked about our exit strategy at Blossom. Exit strategy in this context basically means what your strategy is to cash out/get rich – “What’s the company you want to get acquired by?”.
The first few times I got this question my answer was a blank stare. I even felt bad about not having an answer.
Today I take the question as an opportunity to explain how I see the market, competition, where everything is going and why I’m thrilled to be a part of that journey for as long as I can imagine.
It stems from a crazy feeling that I have. Profound fear. I am scared like shit. I’m scared that if I don’t do it no one else will.
For me building a company is about freedom. Instead of complaining about the status quo and hoping someone listens you are in full control of building the future.
Phil Libin of Evernote gave a brilliant talk on this topic at Stanford. Worth watching.
The next time someone asks you whom you want to get acquired by don’t feel bad about not having an answer. Be bold. Take it as an opportunity to think about whom you’d like to partner with & whom you’d like to acquire.
So what motivated us to switch to Dart? In this post I’ll try to answer this question and go into how I see Dart as a huge step forward for the web & mobile development ecosystem.
Blossom is a lightweight project management tool for people who craft modern mobile and web applications. It’s basically an online Kanban board for your product team.
From a technical point of view Blossom is a cutting edge single-page web application with Google App Engine as the backend (JSON API).
This situation causes a lot of confusion, apparently not only for me. I wasn’t surprised to find a ton of StackOverflowquestions from people looking for advice. There are also a ton of blog posts that recommend different combinations e.g. mixing CoffeeScript with Sugar.js (love those names).
Higher level frameworks pick different combinations to build their foundation, some even build it completely from scratch.
We also had to go through this decision/evaluation process for Blossom and after weighing the pros and cons of different combinations we went with the following stack.
jQuery – a DOM abstraction layer
CoffeeScript – classes and lexical scoping
Backbone – structure around frontend code and widgets
Brunch – an application assembler that ties all of the above components together
While we were pretty pleased with picking this specific set of building blocks over others that we’ve tried, I find it pretty frustrating that you have to jump through so many hoops in order to arrive at a situation where you can start to get things done. I don’t know how this must feel for newbies to the ecosystem, but I guess the learning curve is rather steep and the question marks are plenty.
Also it doesn’t help that some libraries are assuming a certain set of plumbing while others strive to be agnostic and therefore implement their own plumbing. I don’t even want to know how many different forEach implementations from third party libraries there are in our code base.
And I don’t even want to get into other areas like dependency management between libraries, handling of namespaces or various approaches to modularity (bower, component.io, npm, commonjs, amd, jam, …).
It is a complicated mess. It makes my head swim.
Dart comes with Batteries included
From my point of view Dart solves all of these problems and even goes a few steps further.
This makes Dart a cohesive foundation to build upon. A one stop shop if you will.
Also, if you follow the links above and dig in you will find that Dart not only comes with a ton of infrastructure support out of the box – the actual implementations of these parts are very well thought through by smart people with a ton of experience in API design, software engineering and computer science. The parts fit together and make sense. They are pragmatic and unsurprising. Exactly what I need to be productive.
The cohesive development experience of building stuff with Dart was definitely our main motivation to switch. Being able to focus on making your product better without having to fight the ecosystem feels amazing.
That said there is an additional upside on top of that. Dart is built with performance in mind.
He’s also the guy who brought SIMD support to Dart which enables blazing fast CPU supported Vector Math. This will make a huge difference for people who want to create modern games and graphics intensive applications for the web.
Using Dart in Production
The biggest part written in Dart is responsible for handling invitations to organizations and authenticating users in that workflow. This is an essential part of our application which helps hundreds of our paying customers to organize their product teams.
Even while some APIs are changing from time to time since the language is in its early days it is a worthwhile trade-off for all the good stuff we get from the ecosystem. So far Dart has been a pleasure to work with.
I can’t describe in words how liberating it feels to have a consistent web development experience that makes sense. Hard to say when the last time was when I felt a similar joy & productivity increase in writing web applications. Probably back when I switched from PHP to Ruby (on Rails).
Getting Started with Dart
If you’re curious about giving Dart a try go check out Game of Darts, a set of hands-on tutorials to get you started.
I’m looking forward to a Blossom frontend code base that’s entirely written in Dart. We’ll keep you posted on our progress & also might have some interesting Dart related announcements in the future. Stay tuned :)
I’ve recently started to reduce my personal belongings to just a handful of things that fit into a backpack. I wanted to share the motivation behind it and the things I decided to keep.
I’m not fully there yet but the journey is quite amazing so far. I’ve already got rid of a ton of things I haven’t touched in years and were just occupying space like books, magazines, clothes, random hardware, video game consoles, DVDs and shelves to hold them.
Why am I doing this?
Last year I’ve travelled a lot. While being on the road and spending a few weeks in different places I’ve never missed all the stuff which I have left behind in my hometown. Quite the opposite, it feels great.
It was amazing for me to realize that what you have access to and what you are capable of is way more important than what you physically own.
It might sound obvious in hindsight but it was a big aha moment for me.