Ask HN: How long should it take to build this web app?

5 points by contemplating1 ↗ HN
Hey all,

I am a new developer, a first year CS student, and an aspiring entrepreneur. I am building my first "real" web app this summer, and I am just looking for some general guidelines. I really don't know how long it is going to take, and I know a lot of this depends on the experience of the developer. So let me give you a little background on me:

I have been programming for about 2 years. I feel like my knowledge of Python is pretty good, although I never stop learning! I have been reading up on Django and have done the tutorial on models/views/etc. I also have done front end stuff, mainly playing around with HTML/CSS/Javascript, although I could definitely spend more time on learning Javascript/jQuery. I could go on, but I don't want to bore you to death, and I just am looking for an estimate anyways.

My app will handle many users at one time. It will basically be a CRUD app. The two things I really have to add in are Geolocation, and payments, both of which can be achieved through integrating third party services/API's. Everything except for logo design has to be done by myself.

So if I threw this at an experienced full stack developer, how long would it (approximately) take? How do I break something like this into smaller chunks to estimate the time it will take? And most importantly, how do I know which technologies I should brush up on prior to doing this - or do I just hack it and learn as I go?

Thanks in advance! Any tips - relevant to my question or not would be helpful as well!

EDIT: I am focusing solely on the tech side of things. While I know our product better than him, and very much contribute to our vision, he is responsible for handling business/legal/marketing etc.

7 comments

[ 3.0 ms ] story [ 33.6 ms ] thread
From 2 days to a year. Depends on the person. I can knock it out in about 10 days if using a good framework like Django or Rails. But I'm no rockstar.

I would approach this by explaining the system on paper. Then break out the functionality into paragraphs. Each paragraph is its own library. Do those functions first, then move on to the actual program itself (what implements the libraries). Then its just a matter of making sure everything leads to the right place.

Say:

Puppybook is a facebook for puppies.

paragraph #1 Each user logs in. Using two factor authentication.

#2

    the user arrives to his profile, 
    where he can see the latest puppy posts
..and so on.

For paragraph #1 I need to write the authentication code. For #2 I need to write the code to pull the latest puppy posts from the database into the system.

Then you would import those libraries and do a regular MVC type app. I suggest your read up on one of those. If you are lost, then check out protocademy.com. You can learn to do just that there.

That sounds like it would be pretty useful. What would you suggest as far as the database? I plan on using Postgres on Heroku and will be either be using SQLAlchemy or Django's ORM. What would be a good way to approach this problem? I was planning on doing something similar, making a diagram of all of the models/tables I will need, and additionally writing out all of the details of each relationship and possible entities I will need to add in the future.
That sounds like a good setup. Just dont waste time thinking and get to coding.
Right, what about my level of knowledge of Javascript? Should I spend a few days hitting it really hard just to learn it or is it something I can pick up on the go if I have a background with Python/C++/Java?
For the initial stage, your schema will probably be in a flux and ONLY for that reason, I would suggest using MongoHQ or MongoLab on Heroku. After a while, if you decide otherwise, you can always go back to Postgresql.
Hi, I'd suggest that you read The Lean Startup if you haven't, it should put you on the right track to determine priorities.

Web development is a beast and very different from traditional thick clients as you often have to cater for multiple types of users (roles & permissions) as well as multiple portals (different user interfaces and interaction based on users). Most projects would typically require at least two distinct portals: traditional user portal and administration portal. For franchises there are usually two levels of administration (top level/standard level) that requires different views of the data (ex. across the franchise for administrators and impersonation of standard franchisees).

In my experience there isn't really a simple crud application - the information you collect depends on the functionality you provide. Many users is also very abstract as it will impact your infrastructure requirements - too many unnecessary abstraction layers will really slow down development but is typically required for SOA/N-Tier/CQRS stacks.

My advice is simple: Pick one thing and go through the process of validated learning. It's possible to run a successful business on an adhoc stack - it's not required to run perfect software from the beginning, but flexibility and adaptability sure helps. I'd almost say build something quick and dirty that you can change/scrap easily depending on your business requirements till you reach the point of the business being profitable, then you can invest more into it.