Showing posts with label Website Development. Show all posts
Showing posts with label Website Development. Show all posts

Creating Culture Through Prototype Development


by Aunim Hossain

Baller.  You’ve spent months running around, talking to everyone you know (or don’t know), attending conferences, scouring the online job resources…all with the goal of building your dream team that will take this from a great idea to a company that will change the world.  And you rocked it.  You have the team you need: one product manager (you), three developers with front-end and back-end skills, and one artist/UI guru. 

You feel like you’ve arrived.  You say to yourself, “now, it’s all about getting it done, but that should be pretty simple with the team of ninjas I assembled, right?”  But this is where many promising founders stumble.  Even with the right team in place, success is not guaranteed.  While there are many variables that determine success, one of the most important variables that founders can control (and often don’t) is building the right culture. 

Culture is created through the processes that founders and the team members put in place to complete tasks.  As those tasks are completed, the team figures out which processes work and which should be revised.  When a particular process becomes second nature for the team to complete a certain task, it has effectively become culture.  As founders, it is our job to guide the creation of the best processes and make sure that the processes that become culture are the right ones for the team. 

In this post, I hope to start a list of the best processes that have come to define the culture of our team.  In this first try, I’ll talk about our experiences with communication and time management.

So tell me what you want, what you really really want… 

Oh those Spice Girls were sages.  And it makes sense that they knew what they were talking about when it comes to communication: they were a startup had to manage a team of five divas.  In our startup, with my own team of seven divas, we thought that putting everyone in a room together would ensure strong levels of communication.  But several major problems from spec misunderstandings, to code deployment issues, to artist delays continued to creep into our work hours.  In the end, we figured out that the fundamental issue was a lack of communication.  Although we’re still working a lot of these issues out, here are a few processes that we’ve put in place that will hopefully create a culture of over-communication within our team:

Create a Backlog of Detailed Specs:  As the product person, my ultimate goal is to take the idea that is trapped in my head and make it real.  But because I need help from other people to make this happen, my first task is to take the idea that is in my head and put it in the heads of everyone on the team.  Now before we figure out how to really do mind-melds, we have to rely on specs.  So make your specs as detailed as possible.  Don’t assume that your team will fill in the details, because where there is uncertainty, there is room for miscommunication.  Also, if there is a feature that is important in the future, don’t wait to write the spec.  It is critical to build a long backlog of specs so that the team knows where the product is going and they can build functionality to be flexible and accommodate what’s coming next. 

Daily Scrums:  Although we started this practice on our first day and most teams use this process, I know that it has been instrumental to our team’s cohesiveness.  Functionally, a Scrum for us is a daily team meeting that lasts only 30 minutes (everyone is standing up so that it’s clear that the meeting will be short).  One by one, each person has the floor and talks about what they worked on yesterday, what they are working on today, and any questions that they have for other people.  After setting it up, our team started using it for functions that I had not thought about before I saw it happening.  For example, we use it as our daily deliverable when I am able to see where we are at on the code and art.  Other team members use it as a way to make sure they are on the right track when solving a problem.  Other team members use it as a way to look at the big picture of what we’re doing and get pumped up about our progress. 

Other Practices: We set up skype chat for each of the team members so that communication lasts all day.  Often, there is a tremendous amount of collaboration that happens in a seemingly silent office.  We also set up a wiki that documents, in a central place, the components of each of our Sprints, and what everyone is responsible for.  It is a constantly evolving document that is primarily updated by me, but it is very helpful in understanding what people are working on in the long term and where there may be gaps. 

In the end, as we set up all of these processes, the most important lesson that I have learned is that great communication starts at the top.  Unless you demonstrate that you are communicating yourself, your team members will likely not communicate either.  For example, if you say that everyone on the team should email whenever they have questions, it will probably take several emails from you before the team buys in and takes it from there. 

Time is on my side, yes it is…

In this section, we learn from the Rolling Stones.  It’s an ageless, optimistic message that runs in contrast to the typical entrepreneur’s mindset, that stresses impatience (and the cornerstone of lean methodology).  Now, I definitely agree with this mindset: we can’t just sit on our ideas while someone is out there hustling with a similar one; we can’t just keep working on prototypes without getting them out to users who can teach us; we can’t go back and spend days cleaning up code when there is so much to be done with our existing code base.  I agree with all of that.  What I don’t agree with, however, is the mentality that time is the enemy.  As a founder, it is important to frame time as our friend.

This is an important lesson for me because I was always under the impression that, by setting stretch deadlines, I could get more out of me and more out of the team.  By framing our work as a race against time, we could encourage hard work and higher performance.  However, this view has only served to make us look at the short-term goals and lose track of the long-term needs of the company.  With time as the enemy, we introduced all-nighters, hardcoding, a lack of flexibility, low morale, and stress into our processes.  By doing so, we ended up being more behind in reaching our goals.  Thus, these processes below ensure that we all look at time as our friend in product development:

Balance Speed vs. Scalability of the Code: When your team is “costing out” features (determining how much development time, cost, and art is needed for a feature), it is important to tease out the real tradeoffs between getting done on time and the corners that will need to be cut.  For the product person, it makes sense to include the entire wish list in the spec, but you should be aware of what tasks are vital and which can be pushed.  As an engineer, it is vital that you understand which shortcuts can be used now to meet this deadline, and which shortcuts don’t make sense because it’ll take more time to revisit three deadlines down the line.  It’s very hard for everyone to understand these tradeoffs, especially early on in the development cycle. 

Therefore, I believe that it is important to set easy deadlines with several days of cushion for the first few sprints.  This will give the team the flexibility to focus on building scalable code early and establish understandings of the tradeoffs that they will have to make later.  Technical debt is inevitable, but it should be avoided early because it compounds.  As the team learns more about how they work together and about where the product is going, the deadlines can become tighter.  But early on, focus on the scalability vs. speed.

Establish Best Practices…before you need them:  When you believe that time is on your side, you can spend some time thinking about what processes you will likely need in the future and build to them now.  By doing so, the team can learn how to use them before they are really in a jam.  On our team, we set up bug tracking through Bugzilla, subversion hosting and deployment through Beanstalk, and other systems before we had bugs and multiple developers in the code.  By doing so, we were able to create a plan for scaling so that when we hired people, they could get ramped up quickly.  Indeed, if you can take the time to look ahead and plan for the future, you can save a lot of time today.

Now, there are only a few lessons that I have learned as we tried to create a culture through the prototype development process.  In your comments, please feel free to comment on these processes, but also feel free add your own best practices.  I’m looking forward to reading them.

Yogi Product Development


by Justin Hakuta 

For my final project I worked on developing a prototype for an online yoga community I’m launching.  I also focused on customer acquisition and landing page optimization.

Here are some lessons I learned along the way:

Developing a prototype

See the future, act in the present.  When conceptualizing and designing a prototype, it’s easy to get lost in the grand vision, the mature steady state mode with all the bells and whistles and network effects-based value and functionality established. The danger of this tendency is you can end up designing something that is way beyond a minimum viable product where suddenly everything seems essential, despite having designed a bloated product with layers of functionality that connect to untested hypotheses. This can lead to a drawn out, expensive development cycle that results in a product that hasn’t been vetted by the customer.

I would recommend first knowing what the grand vision is for your product at a high level to satisfy your ambition, then peeling away the complex layers of the product until you arrive at the most basic version, or what should be built today, based on major hypotheses, speed to market and essential value proposition. Easier said than done, but with this work complete you then have the long term vision in place and the short term MVP planned and ready to build and can proceed to test critical hypotheses. To date my team has launched a live beta site (www.avacara.com) and is currently working with customers to optimize our value proposition.  

 
Managing across cultures

I have a team of four engineers in India. Note that they are not a third party firm- they work for my startup full time. My co-founder in the U.S. speaks their local dialect and additionally another senior member of the team based in the U.S. is from India. Having the language and cultural factors in place as well as the technical skills is critical to effectively managing an offsite international team. The fact that both my co-founder and another senior member of the team stay up late into the night to work with our India team doesn’t hurt either. Additionally, because they are on staff and not working on a project basis, we are able to train them over time and develop a strong relationship which has proven critical when pushing them to meet deadlines (we sent them bonuses when several of them recently got married). We were able to plug the team into an existing office infrastructure including an onsite manager and therefore getting them up and running was a relatively quick process. Finally, one of our U.S.-based team members recently had a chance to visit the India team and in doing so, was able to identify a host of communication gaps and process improvements that have since helped greatly increase productivity. Even still we occasionally face challenges that hamper productivity (e.g. electricity outages, cultural communication barriers, technology issues). Overall, working with our India team has been a boon to our development capacity; however, it is far from a no brainer.

What about sites like Elance or Guru? Expect to spend about $3000, wait double the planned project time line, get 60-70% of the MVP you actually want depending on your technical skills and cultural awareness plus a lot of miscommunication and frustration. Outsourcing can work, but unless you have the majority of the factors listed above accounted for, I would say it’s more risky and far from a sure shot and at worst can lead to an expensive, half-baked product that isn’t worth your time.

Developing an opinion on development

If you have a non-technical background and are working with a development team to build a product, make sure you understand the difference between elegant development (modular structure, easy to change/refine) vs. hacking (quick & dirty coding, interconnected, hard to change) because the development decisions you make early on will determine your future options in relation to factors like scalability and ability to iterate. The aforementioned considerations are fairly rudimentary and go much deeper, but even knowing this basic perspective provides increased granularity in regards to building considerations and the basis for a common understanding of the development process with your engineering team. Oftentimes just handing over a list of site requirements to a develop is not enough to ensure the final product you want, as different developers can deliver the same end-product on the surface, but have entirely different under-the-hood implementation which can drastically effect your options for iteration down the road.  Understanding their development philosophy is one way to gain a deeper understanding of their skills and habits and what the end product will look like from a code level.

Keep in mind that hacking a solution can be very easy for developers to do, especially when working to meet deadlines and unless you’ve discussed this approach ahead of time, you won’t know what’s happening or what to expect in terms of output beyond the end user level which is important but also only one perspective.  Establishing guidelines for when it’s ok to hack and when it’s not, for example because you’ve identified an area that is likely to be built upon, changed or is a vital product feature, allows for your team to operate using a common development philosophy that is aligned and informed by your best interests both in terms of speed to market and integrity of the product.

Building a movement

Which perspective do you find more meaningful?  Selling a wrench vs. selling a tool that allows you to fix your home and take care of your family.  Creating a larger context for your product that connects its value to a fundamental personal need is as important as building a product or service that addresses a substantial customer pain point.  I found this perspective surprisingly easy to lose sight of when focused on building the product and designing functionality.

Initially, I tried promoting mainly the function of my product to customers and received mediocre engagement results.  But then I identified the movement that my product connects to.  In a nutshell I am working to make yoga accessible to everyone.  This connects to specific functionality for students, teachers and other stakeholders within the yoga industry, but ultimately it is this high level message and value of making yoga accessible that I have found initial success with in terms of engaging customers in something that they care about that includes but also goes beyond them.  Further, in creating a manifesto that synthesizes my argument for the movement’s relevance, I equip my customers with the ideas necessary to get excited and help spread the word.

Know what your movement is and also how it relates to your specific customer types.  Also know your role in the movement you are connecting to.  Are you a good candidate to be a face for the movement?  Or is one of your customers better suited?  To date I have worked with my movement to help recruit a core customer group that I am in touch with for product feedback, insights and encouragement.  Building my movement will play a fundamental role in both product refinement and community mobilization.  What is your movement? 

Le Petit Prototype: From Little Questions to Big Ideas


by Riva Bakal, Emily Kramer, Namrata Patel

Eric Ries told us on the first day, “launch early and launch often.”  But, what can and should be done before launch? How do you think about Ries’ advice for an early-stage product (something that’s not even ready to launch)?  For our fledgling mobile application, the iterative approach really took hold in customer discovery interviews and usability tests.  We learned first hand the power of talking to users, customer-centric hypothesis testing, and “launching” with paper sketches and wireframes.  Users may not always know what they want and can’t tell you exactly what product to build; they can, however, share potential use cases and latent needs, ultimately describing exactly what the market looks like.

We started the semester with the plan to build a mobile application from scratch.  With lots of app ideas floating around, we whittled our way down to one: mobile safety.  The first version of Checkmat.es was born.  The application aimed to make students safer by keeping them in contact with friends or parents in the event of an emergency.  Aside from creating a product, the process taught us about applying lean techniques to startups in their nascence.

Having a Hunch
As classic founder-users, we brainstormed use cases initially based on our experiences as college students.  We certainly had a hunch as to how the app would work, but how could three HBS students who all attended college in Cambridge, MA – Harvard, MIT, and Tufts –really understand the safety needs of students in diffuse urban campuses or sprawling state universities?  Having a hunch is great for the beginning phases of development, but customer interviews kept us from assuming that everyone had the exact same needs as us, from falling victim to confirmation bias, and from building an app that served the needs of a small minority.  

Talking to Users Early
There is no good reason to wait for high fidelity prototypes.  Talk to users early.  There’s a temptation to “wow” users with an aesthetically pleasing, fully-baked prototype, but in reality, you can’t let users anchor to a prototype. Thinking creatively and expansively about the problem is paramount.  Wireframes were more than sufficient to coax such feedback from users and validate or challenge our hypotheses. In the early hand drawings, we sketched out the core interactions and use cases.  We transferred those onto an iPhone outline and created buttons and messages with the basic PowerPoint tools.  PowerPoint then gave us enough flexibility to make quick modifications to the wireframes, especially during the usability tests.  A high fidelity prototype doesn’t give you the flexibility you need to act quickly on what you hear.

User discovery interviews also revealed the importance of privacy to users.  We were surprised by users’ false concern that the app would track users’ location at all times or automatically push notifications to parents or campus security.  While we had designed the app from the beginning so a user can self-select an appropriate contact, we had underestimated how much this concern could prevent user adoption.  Users latch onto preconceived notions of how things have worked in the past or how they think they will work.  Though we reframed the interaction design to emphasize privacy and choice, these interviews helped us understand the real needs and preferences of our users, rather than just the features they need in our application.

Keeping it to the Minimum
We also learned that “minimum” is the key word in minimum viable product.  Jamming the app with additional ‘bells and whistles’ confuses users more than anything.  Clean design tugs at their intuition so that they can see how to navigate through the product on their own in order to capture its value.  We took the design advice that “in anything at all, perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away” to heart[i].

Minimum also doesn’t mean cheap.  Development estimates for Checkmat.es ranged from $7.5 to $10k.  “Lean” necessitates bootstrapping and hustling to find resources.  If we had a do-over, we would apply for MVP funding.

So, What Does Lean Mean?
We were scrappy and process-oriented.  We tried everything that we could to push the product forward without throwing tons money at it.  All the techniques we deployed – user discovery interviews, usability tests, and a minimum viable product – were geared towards testing whether our product met the users’ market.  At each juncture we reflected on our initial hypotheses and revised our approach.  While luck may be another way to get there, customer-centric hypothesis testing is more of a sure-fire way of building something that people care about.



[i] Antoine de St. Exupery. Wind Sand and Stars. Trans. Lewis Galantiere. New York: Harcourt Inc

PhoneDuel: What We Learned

by Russ Heddleston & Naman Shah

Design is Key
When we first came up with the concept for the game, it seemed very simple: an asynchronous mobile game where users eliminate each other in a bracket structure using trivia questions. However, from looking at the huge graveyard of mobile phone games that never made it off the ground we realized that we really had to pay attention to the details. Therefore, we decided to change our initial implementation plan. At first we were planning to have the game work over SMS between users. However, the design using only SMS made things significantly clunkier. We decided to upgrade to having the game be an iPhone app, where we could make more use of the social side of the game. We’ve tried to pay very close attention to design, but we’ll only really know if we’ve gotten it right after we’ve launched.

Outsourcing is Difficult 

There were three different technical pieces to creating our iPhone game: the website, the server backend code, and of course the front end iPhone code for the game itself. We built the website and the server backend code ourselves, but for the iPhone code we decided to outsource to a team in India since we didn’t have the time/skill to do it ourselves.

The actual cost of outsourcing to India was very low, around $15 per hour of developer time. This is dramatically lower than than the >$100 per hour rates we would be charged for a developer in the US. The project was projected to only be ~80 hours of development time, which would have been only $1,200.

The problems we encountered came in two areas: the delivered product and the amount of time required. Despite our very detailed technical specs, the developers did not understand what we wanted built. One issue was that we talked to a sales representative from the outsourcing company and not the developers directly. The instructions he got from the sales person were different than what we originally said. This required a number of iterations before they even understood what we wanted built. When the product was finally delivered, it looked really bad. We are now in the process of redoing the design to make it look better. All of these iterations caused this to go from a one week project to a one month project. Cost also increased to ~$2,000 as a result.

Integrating It All Together
We realized that putting a complete game together requires a number of different pieces, which can be a little overwhelming to put together. Coming up with the product design, creating the website, finding/hosting a domain, coding the backend, coding the frontend, and then actually launching is a lot to get done. We found that there are a lot of free/cheap tools out there to really help with this and we’ve listed a few below:

  • Product design: we fell in love with Balsamiq as a mockup tool. This was a big improvement over PowerPoint, which we used before. 
  • URL and logo design: we searched for 10 minutes before deciding on phoneduel.com, we bought the domain, and then created a logo in another 10 minutes. There are lots of free logo templates online if you have access to photoshop. 
  • Website hosting: there are a ton of really cheap providers in the market. We chose webfactor.com since it’s under $10 per month and they have everything you could ever want already installed on the shared servers you get access to. 
  • Website: we used wordpress which only took a couple minutes to setup. We started with their default theme, stripped everything out, and added in a plugin called Gravity Forms. This allowed us to setup a simple landing page where users could signup for access to our beta. This took only a few hours in total to get running. 
  • Backend server code: we used the same hosting for the backend as for the website. It’s written in PHP and uses mysql so everything’s free. 
  • App distribution: since this is an iPhone app, we’ll have to go through Apple at some point. To avoid the app store, it’s fees, and the one month approval delay (at least for our beta) we decided to have adhoc builds of the app distributed using TestFlightApp. This is a free service used to distribute app builds to users wirelessly.