Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: How do I escape webdev?
56 points by valleyforge on March 3, 2020 | hide | past | favorite | 74 comments
I'm a self-taught spaghetti coder webdev with thirteen years of beginner experience; mostly learning by googling how to do everything as I built web apps for small businesses or wired up forms and APIs through agencies. It worked for a long time, and yeah I'm probably that guy who wrote that stinky codebase you're dealing with. I'm not particularly proud of that.

Anyway, my "skills" (heh) seem to be mostly irrelevant now. I hated frontend ever since the responsive era, but I got by sticking to less design intensive stuff. These days the web is evolving very rapidly and I've kept up sorta, but I'm not passionate about this field, I'm getting older and there's lots of competition now and I'm unemployed. I basically want to get as far away from Node and React and CSS as possible. What's a good path out?



So you want to write spagetti in another language because webdev is getting too difficult? In my opinion one should strive to learn their craft well, and if you havent by now, you should very quickly educate yourself out of writing bad code. Otherwise it's a habit that keeps you feeling bad about you and your code and hold you at disadvantage against that competition you are so worried about.

But if you think a break in another domain would just magically make everything better, try becoming an expert in some obscure domain in some not-well reputed company. There most of your work will probably end up be muttering a few words in meetings and drinking coffee, with no one to tell you what to do as they dont really understand your domain.

There are a lot of codebases with really bad code that no one wants to take care of, so findind a gig like that would probably also pay you well.


Honestly it sounds more like OP is stuck int the bad code trap because they work alone. Couple that with web dev and of course the world would seem bleak. Frontend code can be beautiful and maintainable but not having senior people to help you even know what that means sounds frustrating to me. my vote is to join a company as an intern/junior and grow.


100%. I worked alone for a few years. Again self taught web development. I tried to read the “best practices” for the languages I was learning. But it was bugs galore and code I feared maintaining after release.

I then spent 5 months at a company in a team where every bit of code went through a peer review process. Even I was responsible for reviewing others code. I learnt a hell of a lot, we barely had any bugs and if we found a bug, it was usually easy to fix. Since then, writing maintainable and (importantly) readable code is my standard and I try and help other Devs do the same.


It's nice how you are telling the OP to just learn to write nice code and then you support it by anecdote about how others taught you to write nice code.

I am not under the impression that OP wants to continue writing bad code.


He's telling the OP to _join a team who will support you_.


That’s exactly what I was referring to. I thought by replying to the comment that mentioned joining a team would have provided the context of what I was agreeing too...


This is one of the most passive offensive responses I have read on this website. It adds nothing of value and helps no one. Not even you as the author of the comment.

Becoming the 10x engineer everyone dreams of is one thing but definitely not a viable option.


Self taught developer here.

I learned to write better code by making code testable. When writing spaghetti code with a few tests, I'd create a big mess that worked. But then I'd try to add a test for something new and I couldn't figure out how to make it work. After coding myself into a corner enough times, I'd eventually learn to create more flexible abstractions. And eventually the code started making a bit more sense out if necessity.

The next big jump in my understanding was learning Elixir and the actor model. Learning how to write async code that didn't get a reply and where messages might not be received was huge.

I didn't get my first dev job until I was 40. I most definitely understand what it feels like being older than my peers in this industry. My secret weapon is knowing my shit and working my ass off to stay relevant. This is a hard industry if you don't like it enough to keep your skills sharp. Like you, I don't relish front-end development, but I do my best to learn what I need to know as needed.


I've got a friend who almost exactly met your description a few years ago. He moved into technical sales at a midsized SaaS startup and its been a good fit. If you're technically inclined enough to write even hacky code that works, you can probably wrap your head around a companies software product enough to do technical sales.


A lot of websites these days are "build to last", but that is almost always a sales argument with very weak evidence. It just sells well to the client because they think they buy something for the future. And every agency or freelancer sells the same lie.

We make websites according to the latest fad and all your work will be thrown out when the business decides to change agency, framework or rebuild everything in some marketing automation tool. I've worked in an agency for almost 10 years and I have accepted that fact.

No matter how beautiful your code is, most web code is thrown away after a couple years anyway. It is just has to do what it is supposed to do, nobody cares about the code.

Agencies also deliver spaghetti code, what is the definition of that anyway? All code is spaghetti in some way. All real code is a mix of different styles and approaches. It will be a mix of OOP, Functional, declarative, imperative code. It is all custom build by different people with different backgrounds.

If you want to work on a more structured codebase then try applying to a company who have 1 product and 1 big codebase. You are likely to find much more structured code there because organising codebases take a lot of time and effort. For a larger codebase with more people working on it things like design patters, rules, best practices, linters and tests will become useful and teams will add then over time.

You will not easily find all of that in web development simply because there is no budget for it. There is only 1 goal in web development. Add as much business value in the least amount of hours.

You can be proud on what you delivered for the businesses you worked for. You solved their problems and you created value for them. No matter what the code looks like. As long as it was secure and it worked then it was perfect for what it was supposed to achieve. Don't be so hard on yourself.


- mobile / desktop apps. Very frontendy but less messy than web.

- start a business yourself with your skills to build the mvp then hire people to do the front end work and move to core business work

- build the mvp for another startup and move to core business work

- do more BI stuff. BI people will hire you to make charts and shit. Then you can learn BI there.

- make fake interfaces for movies ?

- teach


Please don’t become a teacher if you’re not passionate about what you teach. It’d be a personal and social harm.


Vouching your comment, as this is a very valid point. If the OP is sick of webdev, they the likely end case is that they will just end up discouraging their students.


> I'm not passionate about this field

What are you passionate about?

> I'm unemployed.

Now is the best time to really ask yourself what you're passionate about and how you really want to spend your finite time on earth.

> I basically want to get as far away from Node and React and CSS as possible. What's a good path out?

It's hard to give any suggestions without know what you want to get more into? Do you enjoy web development but hate what it has become? If so, you're not alone for example the NoScript extension has 1,688,456 users in the Firefox Add-on store. You can still make web applications with 0 lines of JavaScript. Just hare React? Well, jQuery didn't stop working when React was invented.


When you ask for another path out, do you mean in programming or another field?

There's always lots of jobs in app development, back end, game development, AI/ML, and so on. You still have a baseline of usable skills, mainly debugging and knowing why spaghetti code is bad.

It also sounds like you've been in some bad companies with poor mentoring. You might have to move around a bit, work with a better culture, but they uh, don't hire people who aren't brilliant. It's a circular problem, but moving might help. Code Review Stack Exchange and Programmers SE are good for pointing out otherwise obvious things you have never picked up.


Go learn Rust (no pun intended). You can still do web stuff with it, but it will open new paradigms for you. With the stricter rules it enforces on you, your craft will level up. Not sure where to go from there though :)

To leave frontend behind, you can maybe check out database focused projects, try devops, learn graphics or the ultimate answer: try management as a team lead or product owner, I'm sure in 13 years you've seen web project from all angles.

If you have enough money left, try to relax, read some IT classic books and don't think about work for a while, you will know what to do most likely.


Why rust vs python or golang?


Rust has a few interesting things going for it versus Golang.

It's more difficult to learn, it's more intimidating to get into and keeps more devs away because of that, and it's in high demand. That can be a great combination for job security.

Golang and Python are also both perfectly fine and in demand, however they don't have the complexity / difficulty barrier to entry that Rust does. In terms of candidates in the job market, Python is pretty well flooded at this point (especially for less demanding work).

If you wanted to stand out from a pack, I'd choose Rust over Golang and Golang over Python. However you'll see a lot of lower-mid and mid-tier ability devs in Golang that have come from languages like PHP, because it's fairly easy to dive into. You don't see that nearly so often with Rust.


I have literally never seen a Rust job advertised anywhere. I think it's 'high demand' in our minds because it's so esoteric outside of Hackernews


The March 2020 "Who's Hiring" thread from two days ago on this very website shows five jobs, with two more where Rust knowledge is a plus.

https://news.ycombinator.com/item?id=22465476


Well, I think my point stands. It's in-demand within the HN bubble but is unheard of outside it


Where is Rust in demand?


On Hacker News!


I see excitement, but not jobs.


Indeed


Everything is becoming a huge database with some light interface stuck on top of it. Maybe you can apply your webdev skills in another industry. I think “ai” products will need webdev to sell and work.


I know what you mean. While web is unavoidable in some area for the 'instant deployment' benefit it brings (in consumer internet...), it lacks in my opinion a solid architecture fundation (separation of business data and layout...), and we pay a high price for this (costly development, high cost of obsolescence...). So I prefer to avoid web development when I can.

Also, many development environments (not only web) are not keen with 'medium skill' developpers: the architecture is too complex that it is a mess just navigating around, and it requires self discipline and experience to organize your development. There should be, in my opinion, a 'safe place' for people whose job is just to transcript business requirements into working code without requiring extra 'architecture' skills. Most IT departments of companies have this 'medium skillset' population, and as a result, there is a lot of waste and drama.

With that in mind, I spent around 1 year of my private time designing a low-code framework to provide enteprise IT developers with a 'medium skillset' an efficient tool to develop business apps. This is fully open-source, so do not hesitate to have a look and get involved ( https://openlowcode.com/ )


> requires self discipline and experience to organize your development

Almost like developers with self-discipline is a bad thing...

I feel like you've just had bad experiences and have tarred web dev with the same brush. Either that or tried to conflate enterprise development with web development. Those things are not the same.


Instant deployment and obsolescence is the same sentence. Do you not see the contradiction? Also, how on earth does the web not have a separation of concerns between business logic and UI?


Hi,

I am not sure what your point is. Instant deployment is an advantage of web architecture: you have nothing to do on the user device for them to use the new version of your software (barring some rare issues with browser cache).

On the other hand, so far at least, a web application does not age so well at the timescale of enterprise software (an application will live 10-30 years in a company). So we have an obsolescence problem often, i.e. a 5+ years old application will need to be rebuilt to use more modern technology, often at a high cost.

Originally, web architecture mixed in web pages presentation and business data, a result of an hypertext architecture being used for transactional software it was not aimed at at the beginning. Sure, there have been billion of dollars of investment in web technology since then and a lot of things have improved. However, I have the strong feeling things are still messed-up, especially for developments 'in the wild' for team who do not have strong architecture skills.


DevOps would seem the perfect path out to me. You won't have to work on code anymore, but you could still use your coding experiences when implementing deployment solutions.


As a self-taught developer (although I don’t think self-taught has anything to do with it) I strongly relate to you! I’m currently a full-stack and working hard to transition away from webdev. The first (and probably hardest) thing for me was to decide what to transition towards, and that’s a question that only you can answer. If you are self-taught I’m gonna take a guess that you once had this huge curiosity and strong motivation to learn coding! You probably skipped sleep from time to time because it was such a rush learning all those cool things! One clue to decide what to transition towards could be finding again that same motivation that made you learn by yourself in the first place. As an example, I’m currently learning x86 architecture, assembly, C, kernel development, etc... because (after a few years exploring) I finally decided that I want to transition towards low level hardware programming.

Another idea about transitioning could be taking a break from development. Maybe there are other technical skills that you have or can learn (i.e. video editing, 3D design, penetration testing, etc...) that might spark that original flame or leaning and enjoying what you do.

One last thing is, take a look at the flow state. I remember reading the book “Deep Work” in a time that I was in a job that I hated and about to throw the towel and the ideas in the book completely changed my experience at work. It was still the same job but my attitude was drastically different and I started enjoying immensely what I was doing! (Still quit and got a better job... bad organizational culture is quite hard to fix)

Anyways, wish you the best in your search!!


> Another idea about transitioning could be taking a break from development. Maybe there are other technical skills that you have or can learn (i.e. video editing, 3D design, penetration testing, etc...) that might spark that original flame or leaning and enjoying what you do.

As someone who is in the same boat as OP, I think this is the path I want to take. I am currently learning UI and Product Design to augment my web coding skills.

Seems to be a natural path since I got frustrated that I can code websites but couldn't conceptualize one in the first place.


You could always try your luck with middle-out compression.


> I basically want to get as far away from Node and React and CSS as possible. What's a good path out?

.net core or spring boot?


If it's going to be .net, give Blazor a try: https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor.

Still, this does not completely skip de design/style part.


I understand you. I am also self-taught webdev working in small company with loooots of legacy/scary code behind us.

I somewhat lost interest in new cool frameworks/technologies and somewhat stagnated in "JQuery era".

For me, these three ideas helped:

1) have life outside work. Have some hobbbies/friends/social activities. Do not try to find meaning in work.

2) do something completely different with computers. For example - I started making computer music, coding my own VST instruments in Csound etc...

3) try new technologies in meaningful project. Not just code for code sake. For example: I am currently implementing custom point of sales system for friend who is curating gallery. In this system I have tried to use Vue.js and found it very useful.


I think I actually agree with your #1 item but also find it sad as 8-10 hours a day is a lot of time to just grind for the sake of supporting your other activities. I'd love to find a middle ground but it may not exist.


Leverage your experience and knowledge. Dont start from scratch.

Do some node-backend projects and working your way into a decent full time position.

OR try full stack development of react + java backend.

Jhipster sets u up with a full SAAS demo-type app with java-spring-boot, SQL, and react. You need to learn about hosting, DB, config, network issues, etc. Just getting a full app hosted and working on a free heroku server will give some starter backend experience.

If you are willing to put in the time, u can do a first backend gig by combining this with some minimal front end react work.

Where r u located?

p.s. it also sounds like you have some burn out and life issues - which may or may not be solved by better work


Can you clarify whether you are asking how to get out of web dev, but stay in tech? Or are you asking what to do with your life because you lost the passion for tech?

Because the answers to those questions are completely different.


You could try joining a company that does webdev and something else you might enjoy. Then after a little time there doing webdev, get to know those in the other teams and see if you can get a chance to work with them.


This has been suggested by someone else but I'll suggest it again: Learn Rust. I was in your shoes a couple years ago, and decided I'm done with the Spaghetti. I got lured into Rust, somehow. It was the best thing that probably happened to my programming/development skills.

I've been doing some JavaScript (again) lately, and I have decided that I can only go on forward with TypeScript. Rust strict types, traits and patterns will completely change how you approach and think about code.


There's a chance you may get stuck with React again due to React Native and Electron if you move to mobile or desktop apps. Maybe try transitioning to Full-Stack and eventually Backend?


Why not just fuck your demons and learn modern web dev?


I've thought about going to a bootcamp, but I'm not sure I want to double down after a decade. Burnout is a real thing.


Could look for 'IoT' jobs.


You mention burnout in another comment thread here. With that often comes a feeling of powerlessness and apathy.

"Escaping webdev" is the easy part --- you just need to quit. But doing so is only a transition away from something. We need to find what you should transition toward, instead.

What are your skills that you still feel at least somewhat passionate about? And how can we turn that into a future career?


Sounds like a problem with the code you write instead of industry. Like you are not proud of your work and it eats you.

Almost everything is connected to web nowadays(frontend and backend) and it certainly doesn't have to be as bad as you describe. I would advice to try automating as many things as possible. Especially things you don't like as there is a lot of motivation for that


Practice Leetcode for half a year until you get good at interview questions. Scour your network for referrals to big companies. Do well on the Leetcode interview you will get. Once you get in work for about a year then say you are unhappy and transfer teams. Go to a distributed systems, ml, ai team etc.


Feeling the same way, which is why I'm wanting to build some open source apps that replace as much as possible w/ db/api from db...e.g. using Hasura + React or Vue to create a SaaS framework, to re-use for multiple business ideas, maybe have a hosted version or being open core as a biz model.


get your cissp or oscp cert and go into the infosec sector. you make a ton of money and are basically in a managerial role so there is little hands on and zero coding.

get a cloud cert in aws, azure or google and basically do dev ops at a large scale. again... tons of money and zero web development.


I was re-invigorated a few years back after doing nothing but webdev when I was thrown into a SysOps role (on AWS primarily). Having a webdev background helped when building small applications to hack things together.


> thirteen years of beginner experience

My God. I'd love to learn more about your background. How, if you've worked in web development since 2007, consider yourself a beginner?


Could be humble. Or could be like me and have a severe inferiority complex, mostly from the constant flexing of recent CS grads always makes you feel like you really don't know what you're doing.

Even if you do.


I feel like a beginner a lot of the time.

There are several competing forces at play.

On the one hand, JavaScript is changing every year. CSS releases new features such as grid. New releases of frameworks such as Vue and Svelte are released. React launches hooks. The list goes on and on. You read the headlines about all of the new stuff, but you may not actually use the new stuff in a real project.

On the other hand, the client needs features yesterday, and there's a need to deliver new features as fast as possible with the functionality you know inside and out.

You keep using the small core of functionality you know over and over again for years. You know a small number of things very well, but you know nothing about many things you read about. There's a whole world of things that experts know that you have never used.

Maybe a lot depends on your environment? If you're at a shop with 100 developers, a few developers might spend a lot of time playing with new stuff, and teaching it to others. In a small shop, your results may vary. Not every shop has that new junkie who jumps on the newest thing, evaluates it as appropriate for this shop or not, and efficiently teaches the new stuff to others.

I try to use and learn new things, but it's time consuming. So even though I am learning new stuff all the time, I often feel closer to the beginner side than the expert side.

The default is to make the donuts every day with the tools you have. It takes effort to learn new things and use them in a real project.

I'm happy to answer any questions.


It is possible to repeat the same first year experience over and over if you don't raise the bar.


Can't speak for the OP, but my background is exactly the same, self-taught web dev, started in 2007, worked for myself for a decade (no college degree, either). I understand where he's coming from. I'm also now a senior front-end engineer at a fortune 500 company, so I figured out how to transcend as a programmer.

As a self-taught, self-employed coder, I can tell you that you can get extraordinarily far without knowing a single fundamental. Just having a willingness to dig in and tinker will put you miles ahead of what most people are willing and able to do, and you can absolutely build a career out of a can-do attitude and google. Over time, however, what seems to end up happening is that many people in this situation (myself included) learn systems without learning technologies.

At my place of employ, we distinguish between Application Developers and Software Developers, and I think that's a thing a lot of large companies do. Both are valuable, but they're fundamentally different. You can have a very advanced Sitecore Application Developer who writes Sitecore code all day, but if you hand him an IDE and ask him to write up a CRUD, he'll flounder, whereas a software engineer can more or less invent something new on the fly from scratch, but isn't going to be particularly fluent in any given third-party system.

I think, overall, these long-term self-taught web developers hit a wall like they do because they're really application devs and not software engineers. Sometimes, it's actual apps (I'm looking at you, WordPress and Drupal), and sometimes it's libraries or frameworks like jQuery and Bootstrap. I certainly did. It's basically the same sort of fluency one often finds in bootcamp grads, just with much more practice.

I managed to get over the hump by basically starting over after 10 years, relearning the basic fundamentals of browser development and really mastering development with vanilla html, css and javascript, learning the fundamentals of node, local automation, and just enough computer science to be dangerous. With that, I took those skills and started working for other people again, as a developer on a team. I can't tell you how valuable it's been to simply have other human developers to compare myself to. This is what I learned:

1: There are a lot more shitty developers with CS degrees out there than I realized. However mediocre I may be, there are loads of my peers out there being just as bad.

2: You'll advance faster than your peers once you enter industry. Junior developers can usually program, but senior devs use old age and treachery to get shit done. You've done the hard part already by gaining experience -- now you just have to catch up with technology.

3: You'll find the software engineers around you are generally more specialized than you are. People who work for themselves for a long time get very good at doing everything all the time and learning new things quickly because clients are needy and think you're good with computers. This is a superpower. This is what tech leads are made out of.

I mean, look, I couldn't re-implement quicksort of you put a gun to my head, I've never written my own compiler, and my networking fundamentals are complete shite. But I can negotiate for the resources my team needs, I can bash a misbehaving legacy codebase in a language I don't know into submission fast, I can sniff out an overengineered solution at 30 paces, I can architect a front end, I can delete code at a furious pace, and I can sit on juniors until they start making simple solutions instead of elegant ones.

I'm 40. I've been doing this for 14 years, and I'm exactly where I should be in my career. That's enough for me.


Have you considered analytics? I think of it as progression and you might want to continue the web-dev work with a new hire. They make a decent story together


Go to a smaller company. They are much slower on changing technology.


Really? My experience is the exact opposite - large orgs choose a tech stack and invest heavily, staying on it for years, if not decades. A client is still on .Net 4.


If it is not a modern startup my experience was always the other way: software had to work and the stack didn't matter and was not often updated.


Back end Python web development is a joy these days.


Depends who's code you have inherited. Agreed Python is a lot more pleasant than Javascript, but people still write some horrible stuff.


But does Python back-end code scale like Javascript?


Are you saying that you can't scale code because it's in Python? And JavaScript would solve the problem?

You can scale Python apps just fine (though obviously it depends a lot on the problem as how you go about that)


Sure, I meant for greenfield projects.


Thanks, I'll check it out.


This is free but it is Python 2.X not 3.X: codecademy.com/learn/learn-python

It should teach you the basics of Python in a tutorial.


I actually learnt programming 7 years ago with the codecademy Python class after a career in marketing. I'm now a confirmed Data Engineer. I feel blessed.


I believe there is the 3.x variant available [0]

[0] https://www.codecademy.com/learn/learn-python-3


Would suggest way better resources found in /r/learnpython


Pick up a copy of K&R


Flutter


SAP,DataFlex,ERP,Cobol,SQL ETL,ColdFusion,PHP are all good options.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: