Ask HN: Missing needed skills for startup
This is partially a technical question and part business.
I have a business idea, which will require a non-trivial database. I have a CS degree but almost no db experience. I'm considering moving forward with the project with plans to hire an expert to redo the database later if the business gains traction.
I'm curious if anyone on HN has been in a similar situation and am curious how you handled it. Would you take several months to gain expertise before beginning rather than learn while doing with intentions to replace the code later? Are there utilities to do some of the heavy lifting for the database portion that are good enough for use in production? What would you do if you were in my place?
24 comments
[ 4.3 ms ] story [ 59.6 ms ] threadCustomers don't see schemas.
It's like writing a full spec. before writing any code for a project. As soon as you get a layer or two into the complexity, you start coming up with different problems and different requirements (that you never thought of before you started).
If it's bad, you'll learn from your mistakes. If you study up beforehand I can guarantee that the knowledge will do you no good. You'll forget the good parts because you can't relate them to real world scenarios, and you'll remember things you'll never need. Common sense and divide & conquer will get you to the point where you need an expert.
Lastly here are three rules of thumb that have helped me along the way: 1) If you want to read then you need to write. 2) If you want write then you need read. 3) Read, write, fail, and vigorously iterate until your ideas and expressions get executed in real-time
It will also save you from doing lots of admin stuff that you probably have no experience with. And it will scale out of the box.
You don't need to build for scale now anyway. You need to get something working in front of someone that tells you they will pay for it.
Reach out, contact customers, get coding. Nobody's initial database makes it into a successful product unchanged anyway. Thats a fantasy.
Non-trivial. So that's almost certainly not a relation db. Probably something really scalable like Tokyo Cabinet or Berkeley DB.
SQL lets you issue very complex queries incredibly easily (both for production & for measuring your own metrics). With alternative systems you'll have to do a lot more work to get the same results; I'd say SQL is invaluable for getting something working.
Once you've locked down your schema & have a good idea of the queries that run, then you're in a much better position to evaluate the various technologies. If you choose an 'alternative' DB, it'll be fairly easy to get your data out of MySQL, whereas the converse often doesn't hold.
Finally, it seems to be the fashion to underestimate how much data a relational database can handle, while taking it on faith that alternative databases can handle a lot more. Once you have real data, you can do your own comparison, rather than just buying into the hype.
Summarizing - Just do it with a DB implementation that is as simple as you can.
What I need is to track an exercise regimen. Some issues are basic- columns for user ID, exercise ID, but I don't see how to keep track of things like number of reps & weight without growing quickly. I want to be able to log every day how many repetitions of each lift a user does and how much weight was used. Anyone spot an easy solution I'm not seeing?
Non-trivial in what sense?
If it's non-trivial in size and you're worried about scaling, just build the simplest thing that will provide the desired functionality and start shipping.
Why? Because you'll have money to solve scaling problems before the db stops working because it has gotten too big.
Customers and money are the solution to most problems.
Also, I might use the line "Customers and money are the solution to most problems" as the mantra for my venture.