4 ms·
Ask HN: What's the best way to create a web app the first time?
I have a confession. I feel like I am cheating. I have been slaving away at this web app concept I have for the last few weeks, but haven't been making as much progress as I want to.
I did CS in college, and am familiar with the web, but I have never built a web-app from scratch. I can understand most programming languages, and most markups, but since I never went into a programming job right out of college (and never really had much motivation to do it on the side) I don't know how to build something from scratch completely.
I have been trying to 'tried and true' way of just sitting down and struggling and it has been very, very difficult to stay motivated. Whenever I come across a problem that Google doesn't help me solve, I post a question to some tech help site (like stackoverflow) and that helps me much. Sometimes I read through reference files and figure out the problem.
When I do figure it out, it feels like I scored a winning touchdown in the superbowl (especially if I have been struggling with that one problem for days).
I am tempted to use jQuery plugins to help me do what I need to do, but to be honest I feel like I am cheating.
Maybe it is the college mentality that is forcing me to not want to re-use any code from anyone else (it took me about 2 weeks to convince myself that using jQuery was fine). It sounds stupid I know...but I guess I have just always done all of my work from scratch and so doing it any other way right now is so hard.
So my question is, do you have any tips about how I can go about building my web app (given that it is the first time).
The UI functionality I am trying to build is like a hybrid of many functionalities I have seen in many places (popular sites as well as not so popular ones), but I feel like by viewing their source and taking bits and pieces I am stealing :(
Do I just continue doing what I am doing, but how do I stop myself from feeling like I am annoying people with always asking questions...because I have ALOT of questions.
I am feeling very conflicted right now, and discouraged to be honest...but I KNOW that if I can get this thing to be the way I want it to be, it will solve a very specific pain problem that many people face.
By the way, everything I am talking about is just getting it to some form of a minimum viable product. But I am still struggling :(
Help!
- deleted 17y ago[deleted]
- fhirzall 17y agoDon't feel bad about using jQuery or any other library. These libraries have been built for re-use. Once you get more familiar with the basics and build a few apps, you can start looking into the actual libraries and figuring out how they work. Think about it this way, you're driving a car but you have no idea how the engine works and that's OK! As for asking questions on the various tech sites, you shouldn't feel bad about asking questions - these sites were created for that specific purpose. You're actually helping other programmers that might search for the same issue later on. My only advice would be to hone your search techniques to be able to find answers faster. Mostly everything that involves basic web apps has been answered in one form or another. If you run into a problem with something, just note the issue and move on to the next part of the web app!
- marcamillion 17y agoThnx for the encouragement fhirzall. The truth is, a funny thing has started happening. The more I used jQuery and the more I solved some problems, is the more I understood javascript better - which was a bit strange at first. I have had a few 'epiphany' moments. Your analogy about the car makes total sense, especially for what I am trying to do. Your point about my questions helping other programmers is also very true and prescient. This is why I love HN, because I can get good, heartfelt feedback about issues I am dealing with in the moment. Thanks again.
- stakent 17y agoI'd like to add: pick technologies/libraries/frameworks which have enough active users to ask most of your questions in advance. Looking for already egsisting answers to your questions is much faster than asking questions and waiting for somebody's answer. There may be no answer at all.
- ismarc 17y agoYou're mixing multiple concepts into a single thing, and that's probably a large portion of why you're running into difficulties. There's fundamentally two pieces to a web-based application. The user interface and the server that runs it. The server piece is critical for accomplishing the tasks while the user interface is critical for triggering those actions. Now, since this is your first, and you're in over your head (not a bad thing, we've all been there before!), you need to decide which is more important: 1) Interface turns out how you want - You don't care how sloppy the back end is, or it's trivial and you care about user experience above all else 2) Back end functionality - What the server does is critical, it holds the important pieces and the user interface can be simple at first and expanded later 3) Getting something, anything working - You want a product that just needs improvement, it can be a mess for the UI and the backend, but it's functional 4) Increasing your knowledge of how these systems are built - You recognize this project might not succeed, and you would like to learn enough so that you know how to choose and utilize existing tools in the future 5) Be able to churn out multiple applications at a quick pace - You want to be able to kick out multiple applications quickly to see which will stick better as a concept, and then move to improve the one that has the best chances Now, there's multiple ways to address each one, and they're not necessarily mutually exclusive, I simply chose this list so that you can pick the direction you go. If #1 is the most important, get a simple backend and live on w3schools/specifications pages for ECMAscript/other resources (unfortunately, I don't primarily do UI work and typically use the w3c recommendations/w3schools for any references I need, there are likely good communities out there around CSS/ECMAScript). If #2 is most important, choose the language and platform and use just quick, thrown together UI to be improved later. A lot of frameworks prefer convention over configuration, so which one you choose likely won't matter to you since there aren't any "preferred" methods yet. One with an active community is best, IRC channels are your friend when the documentation fails you. If #3 is the most important, reuse everyone elses code as much as possible, duct taping things together. There won't be much knowledge gain here, but you'll have a product that's a pain to maintain and extend (I suggest against this being your priority if you're inexperienced). If #4 is most important, don't use anyone elses code at all. Only use built in language features and common libraries (don't use web frameworks, don't use high level libraries such as jQuery). You will most likely never launch the web app, or even get halfway done, but you will learn a LOT. A couple of failed attempts such as this and you'll be able to pick the right frameworks for your project based on capabilities and easily work around short comings of those frameworks as you hit them. This is an educational route, and not one to base a business idea on (not saying it won't work, just that it's not likely). If #5 is most important, follow the steps for #4, then #3, then repeat as necessary until you can do #5. A lot of people will probably disagree, but I'm a firm believer that understanding the capabilities of the underlying system and what is possible and how makes using the abstracted systems a lot easier and faster. You understand how much time you're saving, how they likely did it and you aren't completely lost the instant there isn't an existing solution to what you want to do. The idea is not to think that you're going to build a new framework that you'll use everywhere, but instead you actually understand what it's doing when you type "gimme_a_new_controller --named MyMagicStuff --with_table MyMagicStuffTable --with_fields secretIngredient,specialSauce".