Hello, startup is a book that will teach you from a technical perspective: how to build and design products, select your tech stack and coding practices, and nurture teams and culture in a startup environment.
- Startups are about people
- Speed wins
- Great companies are the result of evolution
A Startup is an organization with the following characteristics:
- Product: Technology
- Environment: Extremely uncertain
- Goal: Massive growth
- Mode of operation: Search
Why you should work in a startup: the most important drive for me is more fun, you get more autonomy, ownership, and a lot of new challenges, you are out of your comfort zone almost all the time, and this is where all the magic happens!
The best ideas are a remix, if you want to create something big, you need to copy -> transform -> combine.
It's important to read and practice a lot, get curious, all the knowledge is compound, the more you get in early stages, the better is the return.
You need an environment that encourages creativity: the most important characteristic for me is to have plenty of time, keep an idea journal, work on the problem, add constraints and let your mind work in the background, and finally talk to others to receive feedback.
In validation: keep in mind that speed wins, you have to test with real users, measure, and iterate. Finally, feasibility: the problem can be solved? the problem can be solved by you?
We as software engineers don't pay enough attention to this kind of detail, but the product is what the users see, and maybe the entry point for all good stuff behind.
The most important thing in design is the Copywriting and simplicity. but you have to combine various elements to get an amazing interface, like, layout, typography, contrast, repetition, and colors.
Finally and not less important you should design for personas -imagine the real users-.
Simplicity and Emotional design are also too important, your software as a person has to be considerate, responsive, forgiving.
The key idea is to make small experiments and iterate or pivot
- Identify your riskiest, the most central assumption
- Phrase the assumption as a testable hypothesis
- Build an experiment (MVP) that test your hypothesis
- Analyze the results
Metrics to track:
- Acquisition: how users find your product
- Activation: how many users engage with your product
- Retention: how many users use the product again
- Referral: existing users of your product helping you acquire new users
- Revenue: how much money you’re making and what channels it’s coming through
- The magic number: some metric that, when the user crosses it, they have an “a-ha” moment and finally “get” the product.
The single and most important piece of advice is: Go with what you and your team know. First of all, you need to test the hypothesis, and then you can change and evolve the stack.
You should choose:
- Programming Language: Community, Productivity, performance
- Database: NoSQL, SQL
- Server-side framework: Testing, Security, Maturity
In the early stages, I prefer languages like Python to prototype, remember speed wins.
As a programmer, you spend more time reading code than writing. I love the book Clean Code and the most important takeaways are revealing intent, and keep your code simple. To have a simple code you have to remove duplication, have tests, and focus on good naming.
Naming is for me one of the trickiest parts of software development, you have to name everything, repositories, variables, values, components, queues, if you don't pay attention to this, you can increase the accidental complexity.
Another important practice in software development is -DRY- Don't Repeat Yourself. I have a rule of three to generate an abstraction.
Functional programming languages are more expressive.Clojure in my opinion, has the perfect combination of simplicity and immutability.
Finally and one of my most loved topics <3, Refactoring. Design can and should be improved iteratively. In On Writing Well, William Zinsser wrote that “rewriting is the essence of writing well”, which is almost the same for software development. Book to take a look at this topic Refactoring
To scale your Startup you have to implement these 4 basic practices:
- Automated tests: Improve your feedback loop
- Split up the code: Think in modules, components, and services, allow the software team, to tackle specific tasks and amount of complexity from time to time.
- Code reviews: Implement Pair programming practices, static analysis
- Documentation: You are what you document, is important to have documentation to ramp up new hires and evaluate the design, writing is a good form of thinking.
Performance is an iterative two-step process:
I like the Done is Delivered, one of the most important things in this industry, and all the DevOps revolution, have one premise in mind, ship the product to the users, to accomplish this goal is important to build, deploy and monitor in an effective way.
- Infrastructure as Code: Terraform Up & Running from the same author.
- Build tools: automate the compilation and common tasks
- Trunk based development: avoid long-lived branches
- Monitoring: Logging, Traces, Metrics.
- Containers: Immutable components
- Rollback capabilities: Backward compatibility, Blue-Green deployment
- Cloud computing: Agility, Scalability, Cost-Saving, Globally in minutes
If you make the right decisions, you can implement Continuous Delivery, deployment and release should be a business decision, not a technical one.
Culture beats strategy, remember that Startups are about people. People's actions based on beliefs, assumptions, and principles constitute your culture, with great people you can fix a product, generate new ideas, plans, or even other products.
Mission: Articulate your purpose, start with the Why!.
The organization design could be either flat or hierarchical, I prefer autonomy, mastery, and purpose over control and bureaucracy.
Another important topics are whether you can have a remote company or offices, I prefer the remote one because it frees you from the commute and gives people: time, time to think, to read, work, make exercise or one of the most human traits, family and quality time. But it comes with a cost, you need to improve asynchronous communication and be aware of the country's regulations.
Find industries that you are interested in, technologies that you are passionate about, the role that you want, and the business model that interests you the most like SaaS.
Look for a good salary and benefits How to negotiate your salary -Spanish-
The most important thing here is, use your network, try to work with smart people, and be aware of the risk and benefits of Startup stocks, it can be life-changing.
One of the most important things in a Startup is the co-Founders, try to join forces with one or two co-workers, friends that fill your weakness, for example, I really love cloud computing and programming, so I probably need people with more emphasis on design or products.
Try to find 10x Developers, the early hires are the most important ones, the kind of people that priorities high leverage activities, automation, good estimation skills, etc. they become the role model of your organization. Look for smart and get things done people.
Find people with good communication skills, programming is a social activity, you need to share ideas, scale with practices and ideas, not only people.
Referrals are good candidates because it gives you more information about the performance, and the odds of turnover is minor compared with people that you find on LinkedIn or other hob platforms.
Is an essential skill in the era of information, you have to choose your skills wisely, dedicate time to learning, and make learning a part of your job.
to prioritize what topics to study I find the Technology Radar amazing. It keeps me humble and hungry.
To get a better result in your Study you have to:
Share is what motivates me to write my notes in DEV.to about this amazing book. I find this book and almost all Yevgeniy blog posts insightful with a lot of good ideas and takeaways. Now I can appreciate design, metrics, culture from another perspective.
Lastly, Reading books is part of the process to get better when you are a maker, like almost all Software Developers, writing and take notes helps you to organize your thoughts.
Hello, Startup is a book full of good topics, that encouraged me to learn more about design, teams, and products. Most chapters have nice quotes from famous developers and entrepreneurs. In summary, I strongly recommend reading this book to anyone that works in a Startup or thinking about creating one like me.