Wednesday, October 30, 2013

Watercooler Wednesday #9 - Private Beta

We are excited to announce that we will begin letting people into the private beta starting tomorrow. If you have already signed up for the beta then you will receive your email within the next week or so. If you haven't signed up, you can still do so at https://www.findarecord.com.

To use the app, first fill out the search fields in the upper left hand corner. The Place field is a search box with autocomplete. After selecting a place, set your search radius and optionally limit your results using the from and to fields. Now click the Search button.
Your results will show up as cards on the right side of the screen. If you hover over them, the locations they cover will appear on the map as red markers. You can click on a result card to see what information is included. If you click on the Details button you will see how to access the records in that collection.
Well that's it for today. See you in the Beta!

Wednesday, October 23, 2013

Water Cooler Wednesday #8 - Data and Licenses


Having access to data, especially as developers, is key. That being said, much of the data relating to genealogy is behind a paywall or otherwise restricted. While we believe in being able to make a profit, it should be from providing tools and services, and not for selling access to the raw data itself.

We believe that the data that we are collecting for Find-A-Record should be freely available to other developers. To that end, we will be licensing our database under a Creative Commons License (probably Attribution-ShareAlike). Regular dumps of our collection, repository, and place data will be available for download.

While we are making our raw data freely available, we will be charging for access to our API. Why? Because we are adding value to the data by providing multiple ways of querying it. It will be hosted on our infrastructure that costs money to maintain.

In other news, we are almost done preparing for the beta. We'll have more to announce very soon.

Wednesday, October 16, 2013

Water Cooler Wednesday #7 - Moving Fast - Part 3

This week we finish our three-part series about moving fast. Part 1 was about environment. Part 2 was about mentality.

Part 3 - Talent

Moving fast requires talent.

A small disclaimer. The goal of this post is not to praise ourselves, but to convey what we have learned while working in many different companies and environments.

Skill

If you don't have sufficient skill then nothing else really matters. Here are a few characteristics we see in truly skilled people:
  • Thirst for learning. If someone has a certain body of knowledge, but is unable or unwilling to learn new things, then that person quickly loses their value. True skill is being able to tap a vast body of knowledge while keeping that body updated in an ever changing world. When someone becomes unwilling or unable to learn, their skill quickly becomes obsolete.
  • Know what they don't know. No one can know everything, but only the best are consciously aware of that fact. The ability to say "I don't know", coupled with the knowledge that they can learn anything they need to, is a rare combination.
  • Are not afraid of criticism and are secure with who they are. They are sure of what they know, and are confident in their ability to produce. They don't pay attention to the naysayers, other than to collect information that may be of value.

Passion

Skill without passion is wasted. Here are some qualities we've observed in passionate people:
  • Looks forward to working. This doesn't mean that they get ecstatic about every little thing. It simply means that they enjoy and take pleasure in their work. For the most passionate ones it can get to the point where money becomes secondary.
  • Cares about and takes pride in their work. Passionate people make an emotional investment when they work, and find fulfillment in what they produce. This means that they actually care about the end product and making it work correctly.
  • Will stand up for what they think is right. Because they are emotionally invested, they will stand up for what they believe to be right. The best ones will do this in a tactful and sensitive manner, but all passionate people will try and do what they believe to be right, sometimes regardless of the consequences. The trick is to keep the lines of communication open and let them be heard.
To sum up, the right environment, mentality, and talent have enabled us to move quickly.

Wednesday, October 9, 2013

Water Cooler Wednesday #6 - Moving Fast - Part 2

Last week we begin a three-part series about how we move fast. Part 1 was about environment.

Part 2 - Mentality

Moving quickly demands the proper mentality to maintain focus, handle failures, and be decisive.

Focus

Without focus you have no product; with it you can conquer the world. Here are a few of the lessons we have learned about focusing:
  • It takes a certain amount of ramp up time to settle into programming. Turn off your phone, close your email, damn the torpedoes, and full steam ahead.
  • Never lose sight of where the product is going. Define a clear direction for the product and make sure all efforts move the product forward in that direction. You may occasionally change the product's direction (pivot), but if you do be sure to reassess everything you're doing to make sure it fits the new vision. This doesn't mean that everyone needs to know the full details of the plan, just that they know the final destination and what role they play in getting there.
  • Refuse to be distracted for more than a short amount of time. This is best illustrated by the character Doug in the movie UP. Occasionally he sees a squirrel and gets distracted for a moment, but he always comes back to what he was focusing on before. These squirrel moments can be one of your greatest sources of new ideas, but beware of losing focus on your endgame.

Persistence

Any product which has a small amount of complexity will not work 100% right from the start. It takes persistence to get it right.
  • Go home at the end of the day. It takes a lot of energy to come to work and produce crazy new stuff. You can only continue producing if you turn off production and rest. Working more than 40 hours a week should not be a common occurrence, and weekend emergencies should be even more rare (see post here).
  • Enjoy what you are doing. Working is much easier when you love what you do. If you don't, I recommend you take a careful look at where you are in life. It is important to find fulfillment somewhere in your life. If not at work, then at home or in a hobby. It almost doesn't matter where you find it, as long as you do.
  • Make it a habit to keep on trying. I'm getting all meta here, but be persistent about being persistent. It takes a lot of practice, and you will fail. A lot. Trust me. I've failed way more times than I've succeeded, but I've learned to not do some things. Don't take failure to hard, but if you must be angry, use that anger to stoke your determination to try again. And if it is impossible, just let it go.
As Dory said, just keep swimming. That simple fact is so powerful that it bears repeating. Just keep swimming.

Decisiveness

Many decisions require time for investigation so that the different options can be accurately weighed. It is easy to spend inordinate amounts of time researching because there's no easy way to know when you know enough. Here are some for spending the right amount of time making decisions:  
  • How important is this decision, really? Is it a chocolate vs vanilla ice cream decision (assuming no allergies involved), or is it a who to marry decision? Make sure you work on developing the skills to see the difference. We usually think a given decision is more important than it really is. Here is a small truth: most decisions don't really matter. Objects in the mirror are smaller than they appear. Hindsight will let you see things for what they really are if you are honest with yourself.
  • Learn when to cut bait. You can continue to sink time into so many things, and that time is the most precious of your resources. Learn when to let go.
  • Just make the decision. Take a few seconds, collect yourself, then make it. The decision may change, it may be preliminary, it may be wrong, but at least you made a decision and can now move forward. Most decisions can be changed if you learn later that it was actually wrong.

Wednesday, October 2, 2013

Water Cooler Wednesday #5 - Moving Fast - Part 1

A little background. Over the last couple of weeks we have been talking to many different people and companies. When we show them our alpha version, we frequently hear comments like "Wow, you started this when?", "You are launching this year?", and "How did you build it that fast?". Thus we begin a three-part series in an attempt to answer the question: "How do you move so fast"?

Part 1 - Environment

The right environment is critical to product development. You need the right tools, low administrative overhead, and good understanding of people.

Tools

It is critical that you use the right tool for the right job. Although you can hammer in a screw, it's not optimal. And I suppose you could try and hammer in a nail with a screw driver, but really, who does that? Here are the most important tools we use on a daily basis.
  • AWS - Because you never know what hardware you need until after you bought it.
  • Github - Because you should always use version control, and there is no better service.
  • Puppet - Spin up a new server, and it configures itself. No manual intervention required.
  • Trello - Centralized todo lists. Easy to use, keeps us on track.
A small aside. More of a pet peeve. SQL is not the answer for everything. Here is when we use (and don't use) SQL:
  • SQL - When you have highly structured relational data and the schema is fairly stable. 
  • Neo4j - When your data is actually a graph, use a graph database.
  • Couchbase - When your schema is loose and your data is not relational.
  • Memcache - When you are using key value pairs that aren't persistent (ie, session storage)
  • Elasticsearch/Lucene - When you need something more robust than %like%

Overhead

Nothing is more of an anchor that administrative overhead. Every report, every status update, and every request for permission slows things down. To move fast you MUST reduce this to the barest minimum. Here are some of the things we do to keep overhead down.
  • Max of 1 recurring meeting - We only have 1 scheduled meeting per week. It's on Friday, and its purpose is to review the week and schedule out the next week. Every other meeting is called as needed, and only if it is needed.
  • Good delegation - If you hire the right people and you delegate appropriately, asking for permission to do something or to get something done shouldn't happen very often. If everything is working correctly, the majority of communication along these lines is limited to broadcasting the decisions we made, rather than trying to get decisions made.
  • No decisions by committee - For every decision, there is always a person who has final call. This means that no decisions are made via committee or consensus. This doesn't mean that things aren't discussed. This means that after the discussion is over, there is a decision made by one and only one person. And the decision is respected, even if other people may not agree.
  • Let the administrative process build itself - Instead of creating process and structure up front, we take a "lets try this" approach. We take a minute and decide on the process we want to try and use, and then test to see if it works. After we've tried it, we ask ourselves a simple question: Do we use this process next time? If so, we use that process. If not, we try something else. It boils down to having a mindset of "lets figure out what works for us".

People

Every time you involve a person with something, that thing always takes an immediate speed hit. Imagine a referee saying "Add a person, take a penalty". Here are a few things we've realized so far.
  • 1 task, 1 person - For each task, only one person should be responsible for it. Having two people responsible for the same task is asking for trouble. Not only do they have to collaborate on the task itself, but they have to figure out who is ultimately responsible anyway. Just assign it to one person in the first place and give them the authority to get it done. Note that this doesn't mean not collaborating, it just means assigning responsibility to 1 and only 1 person for a task.
  • Outsource - Only hire people for what you can't outsource at a reasonable cost. We have outsourced everything we can. Payroll, accounting, taxes, building maintenance, etc. Just make sure to choose well, because one of the main reasons you outsource is to gain time. The time you are not spending managing is time you can spend creating.
  • Do without - Ask yourself if you can do without before you do. If you can do without something or someone, even for a little while, it reduces the amount of people and things you have to deal with. You can now move faster because you have more time to spend on other things.
In part 2 we discuss the importance of a proper mentality.