ROUNDTABLES ★ 45 upvotes 2017

Ask HN: For beginners: what is the hardest part while learning web dev?

The Founder's Submission

Direct narrative and submission text authored by @alinalex on Hacker News:

Hey there,

Self-taught web developer here. I managed to get a job after 11 months of learning of my own. For me, the sheer amount of resources was overwhelming and sometimes got me thinking to give up, but I kept at it and managed to get a job and find out how web dev looks like in real life.

Eager to hear your stories.

Thanks, Alin R.

Retrospective Overview & Key Insights

Distilled analysis of the business dynamics, operational challenges, and strategic takeaways:

An open Ask HN community consultation from 2017 where @alinalex convened hundreds of developers and bootstrappers to share real experiences, hard numbers, and tactics.

Core Principles for Independent Builders:
1
Participants share raw revenue figures, churn rates, and stack decisions that corporate PR never publishes.
2
Recurring answers reveal that distribution, not coding skill, is almost universally the rate-limiting step in developer businesses.
3
Practical recommendations on bookkeeping, payment gateways (Stripe vs Paddle), and freelance-to-product transitions.
Community Debate Themes:

Hundreds of active indie hackers contributed case studies, pricing heuristics, and pitfalls to avoid when moonlighting on side projects.

Community Discussions & Critical Reviews

High-signal perspectives, counter-arguments, and peer founder insights debated on Hacker News (41 total discussions):

DE @devwastaken Peer Contributor

The hardest part, for me, is knowing how to 'get a job' as a web dev. It seems like thats something no one ever talks about, and rarely do I see any information for. The reality is that you need to have some worth to a company, and that is in your skills and ability to improve your skills. Thing is, how do you prove that? Just because you make some app in React doesn't mean you're now an experienced React developer that can solve complex problems with it. Just because you make some web apps doesn't mean that you know the proper technologies to work with in other projects. It takes a lot of time and effort to learn things, and there are plenty of companies that aren't there to pay you to learn a whole bunch of new things unless overall you have a lot of experience.

I look at job postings all the time, and I don't feel I can honestly say: "Yeah, I can do that". I could learn to do what they need, or maybe the circumstances of the employment may cause me to be useless in its duration. There just doesn't seem to be a way to know what you're going to be working with until you just jump ship into it, and if you fail, well, nobody talks about that, and thats legitimately scary to me.

Sometimes I feel its not real, like the people who get 'real' jobs with this stuff can either just fake it and get lucky, or are simply better. It sucks, because I know I've made some cool things and can make much better things. It sucks even more because there's a limit to how much time you can spend working towards a complex career goal like software development before you just end up working a retail job full time to survive.

So, yeah, that parts difficult.

JM @jmkni Peer Contributor

In my opinion, it's the sheer amount of options available. It's overwhelming.

First of all, the tooling. Should I use NPM, Bower, Gulp, Grunt, Webpack or something else?

What text editor should I use? Visual Studio code? Sublime? Vim? Emacs? Something else?

What Javascript framework should I use? React? Angular.js? Angular2? Vue.js? Do everything with jQuery? Something else?

What CSS framework should I use? Bootstrap? Semantic UI? Material Design? Something else?

Should I just use ordinary CSS? SASS? LESS? Something else?

Should I use plain Javascript? Typescript? Dart? Something else?

All of the above have a learning curve (which means spending your valuable time learning the specifics of each choice). And no matter which combination you choose, somebody will come along and tell you that you have made all of the wrong decisions and should start again with X, Y and Z instead, which is incredibly frustrating when you just want to build something.

I've learned that, if you have learned X and are using it to build something, and somebody comes along and says, What are you using X for, everybody is using Y now, X is dead, you just need to have enough backbone to say, X works for me, I know it inside out and I can use it to build a mean product, go away.

It reminds me of the old but still relevant Joel Spolsky blog post, Fire and Motion[0].

[0] - https://www.joelonsoftware.com/2002/01/06/fire-and-motion/

MB @mbeasley Peer Contributor

1. Code tutorial websites teach mostly syntax but are weaker when it comes to teaching you how to set up an environment and structure a new environment. As such, it's useful to look at other people's code on github or similar. Websites and web applications are only partially about the code your write; they are also about the system on which they are built. Learn what it means to "deploy" a website and how that works. Even though some will argue that that's more of an operations concern, as a web developer you often have to wear multiple hats, including operations and server management.

2. With languages like javascript, especially for those with no programming experience, it's really easy to get your feet wet and believe that you "get it", that you "know javascript". That's a fallacy. Javascript, perhaps more than other languages I know, is easy to stitch together to get working (quick and dirty) but really tricky to write eloquently in a way that follows core software development principles and in a way that is easy to manage in the long term (which is part of the reason that there are so many JS frameworks out there).

3. Accept that there are things that you just don't know (and things that you don't know you don't know) and dedicate time to learning from others; not just as you get started, but forever. We spend time on our team every day sharing even the smallest things that we've learned that week to promote this idea (even things like "I discovered the `git add -p` command and here's what it does!").

KE @kewin87 Peer Contributor

The way I teach it to beginners, is by making them create something the really would love to create.

Because teaching them HTML/JS/CSS and/or a random framework simply 'always' is overwhelming.

And because some really like backend, others Frontend. Some really like Vanilla and others really like frameworks.

If we sit together for 5 minutes to talk about the requirements.. They usually getting really excited and seem to to do a Minimal Viable Product approach with a lot of motivating.

For some reason they learn really fast that way and start to make quick choices from the start because they have a clear goal and start to look more 'what works for them' instead of getting lost in all pretty looking blogs and to much technicall theory from the start.

Next to that, I'm being really clear that there code will always suck. Same as there 2nd project and the 3rd project.. Even my code will suck after I did 50 more projects..

Point is, they have to have finish something first, look back and than realise what they want to improve.. After a few years you know a lot of pitfalls and you 'could' call your self a good developer

CO @codegeek Peer Contributor

I think that a majority of "beginnner" tutorials miss the point. They start with the actual HTML/CSS right away. Heck, some even start with jquery as part of a beginning course.

I really believe in learning the "why" of something and not just the "what" or "how".

For example, if you really want to learn web dev, you have to learn to some extent how the internet works, what are the various protocols for web (http vs ftp vs ws etc), what the hell is DNS, the whole client/server cycle (request/response etc) etc. Sure it can help showing actual HTML code to explain http or request/response but I feel a lot of beginner tutorials just focus on the result and not the actual path.

Teach about the document/DOM etc and then write a simple helloworld.html. But then open the web inspector, show them how the request was sent (header,data) and then show the response received from the server.

There is plenty of tutorial on the usual stuff but not many that get real deep which is useful for beginners.

HISTORICAL ERA Cloud & Mobile Era (2014–2019)
COMMUNITY SCORE ★ 45 points
TOTAL DISCUSSIONS 41 comments
TOPICS & TECH STACK: