In the past few months, I have been wanting to start a startup. The entrepreneur in me has been itching to design and build and market a whole new product that could possibly help a lot of people. Once my idea was set, I was on the hunt for my new tech stack. And of course I lean on the hottest and latest. I started dreaming of becoming a hipster programmer who would release a kraken of an app in the wild and be featured in the blog posts that would talk about how we did it and how successful our company’s stack is. So I leaned towards Elixir and Phoenix.
With Elixir and Phoenix, I could lessen the future cost of having a lot of servers. With it, I don’t have to worry about having multiple connections since it can handle so much server load. 2M connections all at once! The on small problem, is I have worked on a few Ruby on Rails apps but none of a Phoenix app. I have dabbled with it for a while but I cannot say that I am so well versed at it that I would know what to do whenever I would encounter any problem. Not saying that I know everything in Rails but there is lesser chance of me not knowing what I am doing if I use something that I am really familiar with.
I was up for the challenge though. mix phoenix.new startup
. I typed it with so
much enthusiasm that I would learn so much building something new. In no time, I’ve
been learning about authentication in phoenix, testing and using different hex. I’ve
integrated cloudinary using cloudex
, sparkpost
using bamboo_sparkpost
,
integration testing using wallaby
and
faking my data with ex_machina
.
While all of them are so interesting and cutting edge and it is so fast, I found that the pace I’m going at is slower than my usual pace. Primary reason is I’m using a language that I am not used to while creating something totally new to me and having so much unknowns. This is the perfect recipe for disaster and success in learning. The good thing is, all the maintainers of the hex that I have mentioned are really nice and you can talk to them on slack and they will answer your questions the best way they can.
But as all tech founders have experienced, there will come a time that you will need a partner. Every founder needs a co-founder because you can’t do it alone. I guess especially me. I know that I have a tendency to be consumed by my work and completely detach myself off the outside world because if I do something not related to my startup, I will feel guilty and think that the reason I failed is because I took a 10min power nap after working 12 hours straight without break. Completely unhealthy and that is the reason I need a co-founder.
At the beginning of my venture, my wife did help me. She told me to get away from the computer and be with her. Go to church with her. Talk to people and do fun stuff and realize that without good mental health, you cannot have sustainable working habits.
Few weeks after creating the phoenix app, an opportunity came up. A friend of mine is now interested in my project and is interested in becoming a co-founder. I knew right there that if I take him as a co-founder, I would have to re-write the app in a language that he also knows and he is familiar to. If I made him learn a completely new language that he might not even be interested in, our progress will be slow and we won’t be creating this in the best practice that the language demands. I needed a co-founder. We should do it again in Rails.
Ruby on rails is tried and tested and we both work in a company that works primarily on rails. It is our full time jobs and we know what we are doing in rails. We have our preferences in other gems and styles and how we test our code. It boosted our productivity and now, we are almost ready to launch our private beta.
It would be good to release something in a totally new language and framework with shiny new tools. There is something sexy in coding in the unfamiliar ground. But it comes with a cost and I guess I just cowarded to the feat of creating something from a tool that I am not used to. Maybe next time I would have that energy. But for now, I will trust my tried and tested for something that I would release to production, but still have my shiny new tools for the toy apps and experiments that I will (in the future) do.