The tremendous amount of work was done, and I fall into plenty traps, but I'm still on the right track to success(at least I think so), and I'm sure that everything will be alright.
In the last seven day, my main aim was to build a working prototype and start providing the service to the customers.
For many developers, it is very common to spent days trying to choose best framework or library to build something, but it is wrong in the context when I need to deliver the value to the end customer.
The right answer in the world where the business provides value is not what tool should I use but what tool let me achieve this goal faster.
Based on this my choice was straightforward, I chose between 2 platforms PHP and Ruby mainly because I'm building a web software and both platforms have a productive web development tools and community.
In the end, technical stack for the product looks in this way:
- Ruby on Rails for the back end
- PostgreSQL as a database
- Angular as a UI framework
Why should I bother with prototype
It is straightforward to sit in the room and build the whole product, but this approach completely eliminate validation point, and there is no way to fine tune the product until six months later tons of hours spent, customers do not like it, and nothing could be changed.
Luckily there is a thoughtful approach how to prevent it - by doing iterative development and deliver the small valuable subset of features to the customer with every release. Usually most complex is a first step or initial prototype product that will be offered to the client first. Many of my friends struggle with defining the precise set of features that should be done during the first iteration.
Usually, the initial release contains core functionality that gives the most value to the customer, something that provides enough of value to cover all the product flaws.
One of the possible approaches how to tackle this issue is to make hard constraints, for example, do not deliver less than three and more than five features, only in rare cases product that solve real problem need more from the beginning. By having this strict rules brain start to think and prioritize all the features.
Always have Giant around
I do not know the easier way to grows except surrounding myself with "Giants." When I say, Giant, I mean any person whom I see far ahead of me and who could provide a good leverage to my grows.
Giants usually are very generous with their skills, knowledge, tools and eager to help other people become better and grow faster.
One of the best learnings from my journey is to surround my selfs with Giants and grow faster with their help.
Use known tools
Since I start to obtain ownership of myself, responsibility also starts increasing. Now I have to stop myself from choosing fancy and fun things to use but rather choose right tools. Pick superior technology is like eat only ice cream for a week, sure it is tasty and fun, but it most likely will end up badly.
The lesson here is - "If I like something it doesn't mean I should use it for my product. The old, dirty and well-known tool is much better than new, shiny and unknown."
Unfortunately, my background is not related to web development, so I have to learn plenty of hard things while developing the product.
Keep focus on the goal, not the tool
It is straightforward to spend two days trying to choose cloud provider for the product rather than build the product itself; the brain will try to increase the importance of the small but easy task and decrease the importance of the strategic one if the path to achieve it is vague.
I found it is the very standard issue for myself and only constant repetition of the end goal help me to keep the focus on what should be done.
One more useful trick to keep strategic attention is to have a written goal every where in the working environment, it also helps me to be focused on the important things.
What went wrong
Fall back to choosing tools
I spent quite a lot of time trying to figure out what tool should I use to build a user interface for my application and did not find any good solution that solves all my problem and in the end decided to go with tools I already know.
Yeah I know I said many times how bad it is and fall into the trap, all this is results of the developer's habit, I'm trying to overcome now, and I'm pretty sure that everything will be alright.
I catch myself with a problem to explain my thoughts in writing and even more general I just don't have anything to say, an extraordinary feeling when you have a lot of stuff done but so few thing to say. Most likely it was just such a mood, but maybe I just need more practice and patience.
Moreover, right now I start spending more than two hours every week to write a weekly report that makes other things suffer.
Day job drain me
Not much I could say here but just have a feeling that day job squeeze all my energy and emotions entirely, not sure how I could combine side business and the day job in the future.
Desire to drop idea
Every time when feedback loop became much slower I have emerging feeling to stop working on the current plan and switch to something else not sure why this happens but I pretty sure that I can deal with it by following rational part of my brain.
I lose the bigger picture
When working on myself I have to observe whole product including marketing, sales, grows to plan future steps in all direction not only technical and I fail with it this week.
On Sunday evening I realize that I started building a prototype but didn't start building a community for the product. The obvious first step before any product launch is to make a landing page and start collecting emails and I fail with it, I concentrate my attention on the technical side and completely miss grows and marketing.
Prototype is not ready yet
The initial plan was so small and easy, I expected to deliver working solution in a few days but because of different mind traps I somehow still working on the initial stage of the product.