For the last few years, I’ve been participating in Hackathons, a type of event where hackers and designers meet to build a project in a limited amount of time. I’ve seen awesome products get built, but I also witnessed a great deal of failures. These failures were generally not caused by a lack of work or talent in the team. These projects failed because the team aimed too high. Their vision was so big they didn’t know where to start from, resulting in an unclear product solving no problem.
As a first step to any project, ask yourself what is the core element of it. What is the one thing your app needs to do to be useful? Think small. You will have to say no to many features in order to stay focused. As humans, we get motivated when we feel we’re having an impact. Building a product in small steps is incredibly motivating. A small feature that is going to affect people tomorrow is a lot more engaging to work on than one that will be released a year from now. Furthermore, taking small steps is a great way of minimizing the risk of building stuff you don’t need.
This philosophy of taking small realistic steps is not limited to Hackathons or web products. You can apply this to almost any kind of endeavour. Whatever you have in mind right now, think about the first smallest step you could do in order to get closer to your goal. You want to build an international food chain? Why not start that by cooking a meal for your friends? Don’t try to drink the river.
”As a rule, each step should have a feeling of entrance. This is beginner’s mind -the state of becoming.” - Shunryu Suzuki, Zen Mind, Beginner’s Mind
4 weeks into it
It’s already been an intensive four weeks since I started learning to program. Four weeks since I dropped everything to move to Chicago and attend The Starter League. These four weeks have been extremely challenging, and have pushed me to my limits. I have learned a lot of new things, from general programming concepts and design patterns to Ruby and Rails.
Not only I am learning a lot about programming and product development, but moving to the States has taken me out of my comfort zone. From pitching startup ideas at different hackathons in front of more than a hundred of people, to leading different technical projects and networking with Chicago’s best and brightest entrepreneurs and VC’s. I feel like I’ve been firehosed with knowledge both on the technical and business side.
A long journey
Although I am learning a great deal so far, I also know that I am at the beginning of a long journey. Talking with different software craftsmen, I realize that the knowledge I am gaining is only the tip of the iceberg. I am a still a beginner, I still have a long way to go.
While this would discourage some people, I feel more energized than ever. My perspective on this craft is still fresh and my passion strong. I am still wearing my white belt.
* The title and quote were inspired by Dave Hoover’s Apprenticeship Patterns.
«If you’re not embarrassed by your 1st version, you waited to long to release» - Reid Hoffman
It’s easy not to ship. You can be working all of your free time on a project and never show it to the world. In fact, you have all the reasons in the world not to ship: you just need to add this one feature, your design is still not as good as you want it to be, etc. The fact is that you shouldn’t be comfortable releasing your first version, your product will probably never be as good as you want it to be.
Not shipping is more often worst then actually shipping a mediocre but functional product. Why? Getting a product out there helps you get real feedback from real users, I am not talking about your best friend who said your app «was sick». I am talking about real users, ideally real customers. This feedback helps you understand your users and their needs, leading you to craft a better product faster. In the case you are building a Pacemaker, you might want to take your time planning out the project but in most cases, get it out there and fast.
But what will people think of me? The fact is most people won’t even bother really looking at what you built, seriously. The small amount of people who actually use your product are the one you need to focus on. They are the one who actually need what you built. Shipping is a state of mind. Determine the core feature of your project, build it and ship it. Repeat the process.
Just like programming, designing and copywriting, shipping a product is a skill by itself. Like any other skill, practice is key to success. So how do you practice shipping? Get involved in many short projects and ship them. You don’t even have to be passionate about the project, be passionate about the process of shipping.
PS: If you enjoyed this post, you might want to read Lean Startup by Eric Ries.
“Don’t let education get in the way of learning.” - Mark Twain
Today I attended my first Learning Lab. These two-hour long weekly workshops hosted by Adam Lupu, resident Learning Architect at Starter League (SL), aim at teaching Starters to be better learners. At first, I was kind of hesitant about going to this event. I mean, what can I learn there that is worth sacrificing two precious hours of coding? I decided I would give it a try and I’m pretty impressed by the result. Here are my four take-aways from this first lab:
1. Set goals and constantly review them.
Setting goals is a great way of reflecting on what kind of outcome you want of a certain process. As a student at Starter League I am in a three month programming training process. What do I want out of it? Do I want to be a software developer or do I want to start a business? The answer will greatly affect my time allocation. I better be investing my time towards what I want. As you know, time is a scarce resource.
2. Surround yourself with people of all levels.
I feel pretty lucky being taught Ruby & Rails by Jeff Cohen, a PragProg author that is well-known in the Ruby community. But, learning isn’t only about having experts teaching you new concepts. Learning is also about being a teacher and helping other people out. It’s about working with other people sharing complementary skill sets. As part of a learning process you better be surrounding yourself with people of different levels, not only experts, in order to progress.
3. Re-shape what you know.
Learning is hard. Unlearning is harder. In order to learn, you need to forget some bad habits. My keyboard typing isn’t great. I’m having a hard time using all of my fingers while typing. For the last weeks, I’ve been trading off my typing speed in order to learn to type the right way.
4. Reflecting on learning is time well-invested.
This isn’t limited to learning. Spending time reflecting and getting feedback on any process is time well-invested. This process can either be the development of a product (ever heard of Lean Startup and Customer Development?) or the method you are coding (ever heard of Test-Driven Development?). Do yourself a service. Take a step back and reflect on what you are doing, you won’t regret it.
PS: Learning to code? You might be interested in reading this book Apprenticeship Patterns.
I landed two days ago in Chicago. For the next three months, I’ll be attending Starter League, an intensive program to learn Ruby and Rails. My first days here in Chicago have been pretty crazy. I have been hopping from meetup to meetup, meeting great people, and getting free food and my fair share of startup swag.
Software Craftsman Chicago
For my first night in town, I went out with my roommate Kori to a meet up called Software Craftsman Night Out at Hopleaf, a really nice beer bar in the north of the city (huge beer selection). At this meetup, I had the chance to meet the guys from DevMynd, a software consultancy firm where Kori works as an apprentice. Brad, Dayton, and all the crew were awesome. We talked about the different alternatives to Starter League and what it’s like to be a programmer these days.
8th Light Offices
Friday, I headed to 8th Light's office downtown around noon. Every Friday, they host the 8th Light University, a one hour talk about an interesting programming topic followed by a socializing/coding/guitar-playing afternoon. This week the talk was by Josh Cheek. He presented different tools to get more feedback when coding. The event was pretty sweet and I’m planning on going there as often as possible.
Meeting the Starter League Crew
I spent Saturday afternoon with Joe, Sam, Vybe and Mike who are also participating in Starter League. We explored the city and stopped for a cup of coffee at Starbucks. Sam told us how he landed his job at Crowdfunder, running Facebook ads for himself, an ingenious way to stand out from the pack. At night, we headed to Blokes & Birds, a bar in Lakeview where a bunch of Starters agreed to meet. There I met my future classmates. Everybody seems pumped to be here in Chicago, and I’m excited to be here with them, learning to program. Learning how to be a Starter.