<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex Iskold 🗽</title>
    <description>The latest articles on DEV Community by Alex Iskold 🗽 (@alexiskold).</description>
    <link>https://dev.to/alexiskold</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F73404%2F1a73f149-f521-45e1-aaf1-0746767bed4b.jpg</url>
      <title>DEV Community: Alex Iskold 🗽</title>
      <link>https://dev.to/alexiskold</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexiskold"/>
    <language>en</language>
    <item>
      <title>Anyone have experience in organizing a Hackathon in NYC ?</title>
      <dc:creator>Alex Iskold 🗽</dc:creator>
      <pubDate>Wed, 30 May 2018 11:43:43 +0000</pubDate>
      <link>https://dev.to/alexiskold/anyone-has-experience-in-organizing-a-hackathon-in-nyc--4idn</link>
      <guid>https://dev.to/alexiskold/anyone-has-experience-in-organizing-a-hackathon-in-nyc--4idn</guid>
      <description>&lt;p&gt;Hey Devs, I am looking to help one of the Techstars NYC companies help organize a hackathon. Anyone has experience in organizing and is willing to connect with the company for quick 5-10 min feedback? Thank you!&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>discuss</category>
    </item>
    <item>
      <title>New pure functional programming language - ETA</title>
      <dc:creator>Alex Iskold 🗽</dc:creator>
      <pubDate>Mon, 28 May 2018 13:16:07 +0000</pubDate>
      <link>https://dev.to/alexiskold/new-pure-functional-programming-language---eta-1ej8</link>
      <guid>https://dev.to/alexiskold/new-pure-functional-programming-language---eta-1ej8</guid>
      <description>&lt;p&gt;Last summer we had a pleasure of working with Jyothna and Raul - creators of &lt;a href="https://eta-lang.org/"&gt;ETA&lt;/a&gt;&lt;a&gt;&lt;/a&gt; - a new functional programming language. &lt;a href="https://eta-lang.org/"&gt;ETA&lt;/a&gt;&lt;a&gt;&lt;/a&gt; is interesting because it is based on Haskell and runs on top of JVM. &lt;/p&gt;

&lt;p&gt;This implementation combines purity of functional programming that's Haskell with portability and enterprise readiness of JVM. Do you use functional programming at work or in our personal projects? If you do check out &lt;a href="https://eta-lang.org/"&gt;ETA&lt;/a&gt;&lt;a&gt;&lt;/a&gt; and let me know what you think about it.&lt;/p&gt;

</description>
      <category>eta</category>
      <category>haskell</category>
      <category>discuss</category>
      <category>functional</category>
    </item>
    <item>
      <title>What is the API for YOUR startup?</title>
      <dc:creator>Alex Iskold 🗽</dc:creator>
      <pubDate>Sat, 26 May 2018 23:20:01 +0000</pubDate>
      <link>https://dev.to/alexiskold/what-is-the-api-for-your-startup-1el</link>
      <guid>https://dev.to/alexiskold/what-is-the-api-for-your-startup-1el</guid>
      <description>&lt;p&gt;I was recently chatting with one of the Techstars founders and found myself asking her, "What is the API for your business?"&lt;/p&gt;

&lt;p&gt;This may sound like an odd question, but it actually is not.&lt;/p&gt;

&lt;p&gt;Every single startup, and every single business has an interface that it offers to the world. Some of these interfaces are super simple, like Google—all you can do is search; some are more sophisticated like ordering things from Amazon—you can browse, search, add to cart, order, request a refund, etc.&lt;/p&gt;

&lt;p&gt;Even if you aren't an engineer or a product manager, it is really useful to think about the API that your business will offer to the world. Thinking about your business as an API allows you to gain a great deal of clarity about what your business actually does and why.&lt;/p&gt;

&lt;blockquote&gt;API mentality forces you to be minimalistic and clear.&lt;/blockquote&gt;

&lt;h3&gt;What is an API?&lt;/h3&gt;

&lt;p&gt;API stands for Application Programming Interface. You can think of an API as an interface or a contract through which a software component, a web service, or in our case, a business, interacts with the world.&lt;/p&gt;

&lt;p&gt;To put it differently, an API is a protocol for communicating, sending requests, and receiving responses from a software component, a web service, or a business.&lt;/p&gt;

&lt;p&gt;For example, take a simple check box, a UI component that we see around the web. The interface for a check box allows you to check or uncheck it.&lt;/p&gt;

&lt;pre&gt;/check -- causes checkbox to be checked 
/uncheck -- causes checkbox to be unchecked 
&lt;/pre&gt;

&lt;p&gt;A different example of an API would be, for example, launching 10 servers on Digital Ocean's web service cloud. That API may look like this:&lt;/p&gt;

&lt;pre&gt;/launchServers?numServers=10 -- starts running servers in the cloud.
&lt;/pre&gt;

&lt;p&gt;In this last example, the launchServers command allows the user of the command to specify the number of servers to launch. Most services allow this kind of customization or parametrization for maximum flexibility and reusability. It wouldn't make sense to have a different command to launch 10 or 20 servers, since it is essentially the same command.&lt;/p&gt;

&lt;h3&gt;What is the Business API?&lt;/h3&gt;

&lt;p&gt;When thinking about your business API, it is handy to think about the key concepts of your business, and commands associated with them. What can the users of your business do? Here are some simplified examples of the Business APIs that you will likely recognize:&lt;/p&gt;

&lt;pre&gt;google.com/search?term=techstars

amazon.com/browse?category=books
amazon.com/buy?bookId=b&amp;amp;customerId=c

uber.com/orderCar?location=loc&amp;amp;customerId=c

twitter.com/postTweet?text=t&amp;amp;userId=u

facebook.com/friend?userId=u&amp;amp;friendId=f
&lt;/pre&gt;

&lt;p&gt;Modern businesses run in the cloud, and the way we interface with them is by using &lt;a href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol"&gt;HTTP protocol&lt;/a&gt;. This may be counterintuitive because most of us, as end users, see pretty screens and friendly apps, but the nuts and bolts interface, the actual commands, are sent over HTTP.&lt;/p&gt;

&lt;p&gt;The reason this is important is because HTTP reminds us of the actual bare bone APIs of these businesses. These are raw, direct interfaces that ultimately define EVERYTHING we can do with these services.&lt;/p&gt;

&lt;h3&gt;How to design your Business API&lt;/h3&gt;

&lt;p&gt;Now let's focus on YOUR business. When you are starting out, you are doing a whole bunch of things—understanding your &lt;a href="https://alexiskold.net/2016/04/27/why-founder-market-fit-is-so-important/"&gt;founder market fit&lt;/a&gt;, talking to customers, thinking about your unique insights and advantages, your go-to-market strategy, and a ton of other things.&lt;/p&gt;

&lt;p&gt;Building the API for your business should be one of the early activities you do.&lt;/p&gt;

&lt;p&gt;Use HTTP protocol (it is not that hard!) and map it out. Way before you build your &lt;a href="https://alexiskold.net/2015/10/07/re-thinking-viability-of-your-mvp/"&gt;MVP&lt;/a&gt;, design your API.&lt;/p&gt;

&lt;p&gt;The exercise of designing your API will help you gain clarity about your business. You will make decisions about what you will or won't do in your MVP. You will prioritize some commands over others. You will realize, by writing on a piece of paper, whether you are doing too much or not enough.&lt;/p&gt;

&lt;blockquote&gt;Make your API as simple and as elegant as possible. Don't think about what to add, think about what to remove.&lt;/blockquote&gt;

&lt;p&gt;Your basic API will be an amazing tool for helping you communicate with your customers and with your team. It will also be a stepping stone to building your MVP.&lt;/p&gt;

&lt;p&gt;Once you design your API, and are happy with it, implement it. One by one, get the raw API working via HTTP. That's right, you don't need fancy UX and pretty apps to start, you can get a feel for your business by implementing your API.&lt;/p&gt;

&lt;h3&gt;Evolving your API with your business&lt;/h3&gt;

&lt;p&gt;As your business evolves and grows, so will your API. Keep updating it and making it better. Keep adding to it, but be stingy. The best companies have simple APIs.&lt;/p&gt;

&lt;p&gt;Think about Google; it has an amazingly simple interface, but it does something incredibly complex inside. Similarly, Steve Jobs always pushed Apple to make the interface as simple as possible, something that just works. Apple products hide incredible complexity and engineering ingenuity beneath a simple interface.&lt;/p&gt;

&lt;blockquote&gt;You want your business to be as simple as possible, and the services behind the interface as valuable as possible.&lt;/blockquote&gt;

&lt;p&gt;As your business grows, different parts of your business will evolve their own APIs. You will have a public interface, and internal interfaces. It is incredibly helpful to keep all your interfaces simple and clear. Push yourself to always have clean interfaces and use them.&lt;/p&gt;

&lt;blockquote&gt;Your own business should always be the first and biggest customer of your own API.&lt;/blockquote&gt;

&lt;p&gt;As your business grows, so will the ways it can be accessed.&lt;/p&gt;

&lt;p&gt;You will have a desktop and mobile site, text messages, bots, iOS and Android apps, and dozens of other ways your business can be accessed online. All these things can be thought of as clients of your API, clients of your business.&lt;/p&gt;

&lt;p&gt;We now live in the world of cloud services and automation. Every major web company, whether it is Google, Amazon, or Facebook, has APIs for the services they offer.&lt;/p&gt;

&lt;p&gt;In the future, every single business will be accessed not just through a graphical user interface, but programmatically. As AI and automation enter our world, more and more transactions and access will happen through web services and APIs.&lt;/p&gt;

&lt;p&gt;As a startup you can prepare yourself for that exciting future by simply starting to think about and writing down YOUR API.&lt;/p&gt;

&lt;p&gt;What commands does YOUR business offer to its customers?  What is YOUR API?&lt;/p&gt;

</description>
      <category>api</category>
      <category>startup</category>
    </item>
    <item>
      <title>Your MVP is minimal, but is it viable?</title>
      <dc:creator>Alex Iskold 🗽</dc:creator>
      <pubDate>Sun, 20 May 2018 19:34:52 +0000</pubDate>
      <link>https://dev.to/alexiskold/your-mvp-is-minimal-but-is-it-viable-46ab</link>
      <guid>https://dev.to/alexiskold/your-mvp-is-minimal-but-is-it-viable-46ab</guid>
      <description>&lt;p&gt;In this day and age, when startups talk about MVP the emphasis is always on &lt;em&gt;minimum&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Everyone encourages founders to not wait too long to launch, to get it out there, to get feedback, and to start learning from the market.&lt;/p&gt;

&lt;p&gt;That is great advice in general, and I am personally a big fan of going fast vs going slow. Yet, to me there is a subtlety that is lost in the message, which leads to misinterpretation and bad outcomes.&lt;/p&gt;

&lt;blockquote&gt;The minimum product that comes out still needs to be viable.&lt;/blockquote&gt;

&lt;p&gt;If a product is too simple, and falls below the bar, it won't be well received, and won't be likely to take off. If the product is too simple, doesn't solve the problem, and doesn't activate and retain the customers, it is not an MVP. It may be a prototype, and there lies the difference.&lt;/p&gt;

&lt;blockquote&gt;MVP is good enough, and can be improved to be great one day. Prototype isn't good enough.&lt;/blockquote&gt;

&lt;h3&gt;Simple, but not simpler than it needs to be&lt;/h3&gt;

&lt;p&gt;Einstein said that everything should be made as simple as possible, but not simpler. He implied that difficult problems are just that - difficult, and ultimately, some things can't be simplified.&lt;/p&gt;

&lt;blockquote&gt;A great MVP isn't only simple, it is also sufficient.&lt;/blockquote&gt;

&lt;p&gt;It embodies the solution to the problem, or an elegant approximation to a solution that is good enough. Sure, it lacks features. Sure, it is raw and unpolished, but good MVP can be recognized as having the potential to be great – to fully solve the problem.&lt;/p&gt;

&lt;h3&gt;Viable literally means alive&lt;/h3&gt;

&lt;p&gt;If you &lt;a href="http://dictionary.reference.com/browse/viability" rel="noopener noreferrer"&gt;look up&lt;/a&gt; the word &lt;em&gt;viability&lt;/em&gt; in the dictionary you will see that it comes from the Latin word &lt;em&gt;vita, &lt;/em&gt;meaning life.&lt;/p&gt;

&lt;blockquote&gt;Being viable literally means being alive.&lt;/blockquote&gt;

&lt;p&gt;How can a product be alive?&lt;/p&gt;

&lt;p&gt;Products that we fall in love with have a vital quality to them. They feel great, respond right – they delight us with their UX, simplicity, and the way they solve the problem.&lt;/p&gt;

&lt;p&gt;They feel different, they feel alive.&lt;/p&gt;

&lt;p&gt;A branch of science called &lt;a href="https://en.wikipedia.org/wiki/Complex_systems" rel="noopener noreferrer"&gt;Complexity&lt;/a&gt; studies patterns across disciplines, and seeks to understand the dynamic of different systems.&lt;/p&gt;

&lt;p&gt;Roughly speaking, Complexity distinguishes between systems that are in the state of chaos, dead and alive. Systems that are considered alive are close to the edge of chaos. They have enough interesting dynamic built in, but they aren't out of control.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://alexiskold.files.wordpress.com/2015/10/t.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Falexiskold.files.wordpress.com%2F2015%2F10%2Ft.png%3Fw%3D660" alt="t"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The analog for MVP is that you can have a product that has too many features – it's chaotic and hard to understand. On the other extreme, you can have a product that just doesn't have enough built in. It is not good enough, it is not alive.&lt;/p&gt;

&lt;p&gt;It is in the middle that you find your great MVP. It is minimal and vital. And key to vitality are feedback loops.&lt;/p&gt;

&lt;h3&gt;How to think about your MVP&lt;/h3&gt;

&lt;p&gt;It turns out that the key to vitality is feedback loops. This is what makes natural systems alive and this is what makes great software alive as well.&lt;/p&gt;

&lt;blockquote&gt;Strive to create a minimal product that has correct feedback loops.&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 0&lt;/strong&gt;: Talk to customers and confirm verbally that you are on to something. Do the unscalable things to validate the market.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Map out MVP based on your gut and understanding of the market.&lt;/p&gt;

&lt;p&gt;Repeat steps 2-4 until done:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Remove features that feel unnecessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Combine features that can be combined, simplify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Check the flows and feedback loops. Are you solving the problem you set to solve? Is the system dynamic enough? Will it be alive?&lt;/p&gt;

&lt;p&gt;What you are doing is you are focusing on a minimal set of features, but not at the expense of viability. Sometimes after removing a bunch of things you may need to add some things back.&lt;/p&gt;

&lt;h3&gt;Viability for different types of businesses&lt;/h3&gt;

&lt;p&gt;How exactly to make your MVP viable is as much art as it is science. But there is science to it, for sure. Let's take a look at different types of businesses to get the idea of what to look for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumer utility/social&lt;/strong&gt;: For consumer product activation and retention are two important feedback loops. The product is not immediately viable if users aren't activated. Similarly, the product won't be viable in the future if the users aren't retained.&lt;/p&gt;

&lt;p&gt;Activation for most consumer products is one or more actions that the user has to perform to become engaged and have potential to be retained. For example, on Twitter, an activated user may be expected to follow at least 10 other users and post a Tweet. To become retained, the user is expected to come back at least once a month and read a tweet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Marketplaces&lt;/strong&gt;: For marketplace the key thing is to enable liquidity. For example, for Airbnb, it wouldn't be enough to just list the apartments or express a need for a rental. Both need to be in place. There needs to be a mechanism to match buyers and sellers. Most often it is done via Search and Discovery, but in different types of marketplaces matching can be done differently.&lt;/p&gt;

&lt;p&gt;Again there needs to be the basic feedback loop around activation, and ultimately each successful seller and buyer need to experience the joy of the first transaction. What happens next is equally important for viability. Could Airbnb work if you removed seller and buyer ratings? Perhaps not. Maybe this feedback loop is critical to make sure that the marketplace can self-organize and weed out bad players. Including or not including ratings into the MVP is a critical decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E-commerce&lt;/strong&gt;: For e-commerce business, the ability to find and buy products is critical. Purchase is the feedback loop. But a bunch of other things need to work correctly. For example, imagine an e-commerce site without the search capability. It might be fine if you have a handful of products, but not if you have a large catalog. Should search be part of your MVP?&lt;/p&gt;

&lt;p&gt;For retention, you need to decide what will make the users come back. Is it promotions? Is it personalization? Perhaps subscription? Maybe a mix of all of it? What is the minimum investment you make in MVP that maximizes the chance of users sticking with you and coming back for more?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SaaS&lt;/strong&gt;: For SaaS business, activation is signup and retention is non-churn. The first one relies on building features that are needed, and the second relies on repeat usage. The second feedback loop is a lot harder to get right in MVP, but it's pretty important.&lt;/p&gt;

&lt;p&gt;Unlike consumer businesses that don't charge, SaaS products are paid. The fact that you are paying for something is already an incentive to use it, but it is not a guarantee.&lt;/p&gt;

&lt;p&gt;For more details on building your MVP go &lt;a href="http://blog.fastmonkeys.com/2014/06/18/minimum-viable-product-your-ultimate-guide-to-mvp-great-examples/" rel="noopener noreferrer"&gt;read this awesome guide&lt;/a&gt;. Below is the image from the post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://alexiskold.files.wordpress.com/2015/10/mvp.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Falexiskold.files.wordpress.com%2F2015%2F10%2Fmvp.jpg%3Fw%3D660" alt="mvp"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Compute your MVP&lt;/h3&gt;

&lt;p&gt;There is a method to great MVP. It captures and brings to life the minimum, yet sufficient version of your solution to a business problem.&lt;/p&gt;

&lt;blockquote&gt;Don't rely on luck or minimalism to get you to YOUR MVP. Compute it.&lt;/blockquote&gt;

&lt;p&gt;MVP is a product computation on a napkin or a whiteboard. MVP is not about furiously typing code. Rather, a great MVP is about rigorously thinking.&lt;/p&gt;

&lt;p&gt;We can't predict the future, but we can do better than roll the dice.&lt;/p&gt;

&lt;p&gt;We can be intelligent about our MVPs, make them simple, build in feedback loops, and make sure they have a shot at being alive.&lt;/p&gt;

&lt;p&gt;Please share your MVP experiences here. What worked / didn't work for you in your business?&lt;/p&gt;

</description>
      <category>mvp</category>
      <category>startup</category>
    </item>
    <item>
      <title>5 Tips for Startup Engineering Teams</title>
      <dc:creator>Alex Iskold 🗽</dc:creator>
      <pubDate>Sun, 20 May 2018 16:38:15 +0000</pubDate>
      <link>https://dev.to/alexiskold/5-tips-for-startup-engineering-teams-4fei</link>
      <guid>https://dev.to/alexiskold/5-tips-for-startup-engineering-teams-4fei</guid>
      <description>&lt;p&gt;Every single company depends on software, and startups are no exception. Software has gone from being critical to every business, to BEING the business.&lt;/p&gt;

&lt;p&gt;Software creation is an art, a craft, and a process.&lt;/p&gt;

&lt;blockquote&gt;Building and shipping software is a marathon that lasts the entire lifetime of the company.&lt;/blockquote&gt;

&lt;p&gt;To ship software effectively you need to establish cadence, and a process. In this post we discuss a lightweight framework and tips that startups can follow to ship quality software regularly and effectively.&lt;/p&gt;

&lt;h2&gt;1. Setup sprints&lt;/h2&gt;

&lt;p&gt;To start, you need a light process for identifying what to build and how to actually build it. Teams that choose to ship without a process end up being chaotic, stressed out, and ultimately not successful.&lt;/p&gt;

&lt;p&gt;Here is a light process, called sprint, that will help your team ship to production every 2 weeks.&lt;/p&gt;

&lt;p&gt;The sprint starts with planning what to build. The features are organized into &lt;a href="https://alexiskold.net/2014/03/23/action-and-idea-lists-for-lean-startups/"&gt;two lists&lt;/a&gt; – all features you want to implement, and a subset of features you will actually implement in this upcoming sprint.&lt;/p&gt;

&lt;p&gt;Before the beginning of the sprint, the team gets together and re-prioritizes all features. Once the ranking is complete, the top 3-5 features are moved into the list to be completed for the upcoming sprint.&lt;/p&gt;

&lt;blockquote&gt;Once the features are selected they are LOCKED for this sprint. You can’t add new features in the middle of the sprint.&lt;/blockquote&gt;

&lt;p&gt;This is critical. Making changes in the middle of the sprint throws off the timeline, and causes massive stress to your engineering team. Avoid doing this at all costs.&lt;/p&gt;

&lt;p&gt;Similarly to having 2 lists for features, you will have 2 lists for bugs as well. Before the start of each sprint, re-prioritize all the bugs, and move the ones that need to be fixed into the list for this sprint.&lt;/p&gt;

&lt;p&gt;Here is a sample setup for your sprint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planning:    3 days before the start&lt;/li&gt;
&lt;li&gt;Fix Bugs:     Day 1: Wednesday&lt;/li&gt;
&lt;li&gt;Fix Bugs:     Day 2: Thursday&lt;/li&gt;
&lt;li&gt;Code:          Day 3-7: Friday – Thursday, except weekends 🙂&lt;/li&gt;
&lt;li&gt;Test:            Day 8: Friday&lt;/li&gt;
&lt;li&gt;Test:            Day 9: Monday&lt;/li&gt;
&lt;li&gt;Ship:           Day 10: Tuesday&lt;/li&gt;
&lt;li&gt;There are a few tricks to setting up the sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;Never release into production on Friday, or in the evening.&lt;/blockquote&gt;

&lt;p&gt;Why? Because things tend to break and then you might end up ruining your weekend or be stuck in the office all night.&lt;/p&gt;

&lt;p&gt;The second trick is always fix the bugs first before coding new features. This way you are making sure that you are building new features on a solid foundation.&lt;/p&gt;

&lt;p&gt;If your sprint is 2 weeks, you have 5 days to code new features. This is plenty of time assuming you broke down your features into small chunks. In fact, this system forces you to do that. You are always making progress, improving the product, and moving forward.&lt;/p&gt;

&lt;p&gt;The last part of the sprint is testing and making sure you release quality software.&lt;/p&gt;

&lt;blockquote&gt;The last few days of each sprint should feel like a spiral.&lt;/blockquote&gt;

&lt;p&gt;You test, find bugs, and fix them. The closer you are to the release the fewer bugs you should find. Once there are no bugs found, you are ready to ship.&lt;/p&gt;

&lt;p&gt;When you are in the home stretch of the release, it pays for everyone to focus on specific bugs or features together. When everyone is focused together you squash down a bug faster and then move on to the next problem. This strategy helps the entire team spiral down toward the release together.&lt;/p&gt;

&lt;h2&gt;2. Prioritize and handle emergencies&lt;/h2&gt;

&lt;p&gt;In addition to implementing sprints, get your team to always prioritize and stack rank features and bugs.&lt;/p&gt;

&lt;blockquote&gt;When everything is important, nothing gets done.&lt;/blockquote&gt;

&lt;p&gt;Create simple and clear language that everyone can adapt when talking about priorities. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;P1 – highest priority, business critical&lt;/li&gt;
&lt;li&gt;P2 – important, needs to get done, but not critical&lt;/li&gt;
&lt;li&gt;P3 – not important, nice to have&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there is a P1 bug that is found in production, and it impacts the business, you need to pause the release, and push a fix into production. This situation should be rare.&lt;/p&gt;

&lt;p&gt;If you finding that this happens all the time, then you aren’t doing a good job testing and fixing bugs in the final stages of your sprints. You need to revisit how you are handling your spiraling down toward the release.&lt;/p&gt;

&lt;p&gt;As you review your lists of features and bugs, you re-rank and re-assign priorities. It is totally fine to have priorities change between sprints, just not during the sprint.&lt;/p&gt;

&lt;h2&gt;3. Pair program and test&lt;/h2&gt;

&lt;p&gt;Agile software development comes with a toolbox of methods to help build high-quality software. My favorite two are pair programming and testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Pair_programming"&gt;Pair programming&lt;/a&gt; is literally two engineers working together. One is typing the code and the second one is watching.&lt;/p&gt;

&lt;p&gt;Pair programming may seem like a waste of time but it is actually a more effective way to code, especially critical pieces of your system.&lt;/p&gt;

&lt;blockquote&gt;Pair programming increases the quality of the code and establishes awesome camaraderie between team members. You create clear and bug-free code out of the gate.&lt;/blockquote&gt;

&lt;p&gt;Testing, and &lt;a href="https://en.wikipedia.org/wiki/Unit_testing"&gt;unit testing&lt;/a&gt; in particular, is another strategy to ensure quality code. It is actually pretty hard to write and maintain a body of tests for your code, but it is necessary and it pays off. After all, if you didn’t test something how would you know it really works?&lt;/p&gt;

&lt;p&gt;There are two types of tests that are particularly helpful. The first set of tests is for critical pieces of your software; things that just can’t break. The second is a set of tests that exposes the bugs you find. Whenever you find a bug, first write a test that exposes it and then fix the code. This way you are certain that if the bug returns your test will catch it.&lt;/p&gt;

&lt;h2&gt;4. Refactor your code&lt;/h2&gt;

&lt;p&gt;Like anything else in the universe, software decays over time. This may not be as obvious because we don’t readily see rust in the code, but it surely is there. Over time, large-scale software becomes tangled and fragile, and needs to be &lt;a href="https://en.wikipedia.org/wiki/Code_refactoring"&gt;refactored&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;The way to deal with this is to constantly refactor, or improve your software. Much like you go to the dentist for regular cleanings, you need to proactively clean your code.&lt;/blockquote&gt;

&lt;p&gt;Encourage engineers to remove unnecessary code, and constantly improve the software to make it better.&lt;/p&gt;

&lt;p&gt;In addition, every 6-8 weeks schedule a cleaning and improvement sprint. In this sprint instead of business features, the team is focusing on cleaning up the code, making it better, and writing tests.&lt;/p&gt;

&lt;h2&gt;5. Create a happy and productive engineering team&lt;/h2&gt;

&lt;p&gt;It is really easy to grind down your engineering team, and most startups manage to do it quickly.&lt;/p&gt;

&lt;blockquote&gt;Startups thrive on chaos, but a chaotic approach to building software just doesn’t work. It is like trying to sprint through a marathon – you can’t do it.&lt;/blockquote&gt;

&lt;p&gt;Writing software is a highly creative and intellectually intense activity and requires a fresh brain, clarity, and a specific cadence. Software engineering can be either incredibly rewarding or incredibly stressful.&lt;/p&gt;

&lt;blockquote&gt;Setting up sprints and having clear priorities is a great first step to creating a happy and productive engineering team.&lt;/blockquote&gt;

&lt;p&gt;By creating cadence you reduce stress. By enabling your team to ship to production frequently, you are making the engineers happy. After all, there is nothing more rewarding than seeing the code you created work and make a real difference in the world.&lt;/p&gt;

&lt;p&gt;Please share with us the strategies and techniques you use for building software in your startup.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>startup</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
