34 ms·
Ask HN: Self-taught webdev with lots of free time. What should I learn?
Hey HN,
I'm a self-taught webdev with 10 years xp. I have lots of free time right now with a bit less freelance projects coming in, and I'm getting a bit bored of building web CRUDs and feel like I'm not learning much anymore.
I'm thinking it'd be better to specialize more, but I'm unsure which direction to go. I'm actually selling myself as a full-stack web developer, knowing JS/react/vueJS, PHP/Laravel, bit of design, server management etc.
If possible I'd like a job that can be fully remote or at most 1 day on site, which probably excludes security and high level stuff.
I have lots of time to learn so I'm open to any advice even if it's just to git gud and read SICP.
tl;dr webdev having done every type of CRUD under the sun - what do now
Thanks for your input !
- satisfaction 6y agoalgorithms and data structures, prepare for interviews at larger companies that follow more traditional CS interview practices.
- blasrodri 6y agoWhat about WASM?
- nicwest 6y agoI found that learning and writing some Clojure and Go made me think better about the code I was writing in my main language (python). I enjoyed working through Clojure for the brave and true: https://www.braveclojure.com/clojure-for-the-brave-and-true/ https://www.braveclojure.com/clojure-for-the-brave-and-true/ and the go tour is probably the best introduction I've ever had to a language: https://tour.golang.org/welcome/1 https://tour.golang.org/welcome/1
- christophilus 6y agoI came here to suggest these two languages, too. On the other hand, you could focus on building something non-web. A language, a video game, etc.
- thatcodingdude 6y agoThat's a good idea. It'd probably be great for me to start a non web-app side-project.
- cornedor 6y agoBecause the syntax alone is already so different it was a great way for me to "re-learn" programming. Even for the very short while I played with it, it really thought me to look further than the default go-to patterns I used to use.
- nathanyz 6y agoThis is my recommendation as well, although since you mentioned it, I would throw in SICP as well, You can work through SICP to help learn Clojure/LISP at the fundamentals level, and then expand out to more practical use cases with the recommendations above.
- jcheng 6y agoI can imagine the impact Clojure had; learning about Lisp had a big impact on my programming journey. What was it about Go that made your Python code better, though?
- nicwest 6y agoGo helped me learn about designing good interfaces, and how to write tests using dependency injection rather than just patching stuff out.
- sneeuwpopsneeuw 6y agoI quit webdev after 3 years and I'm now trying more and more thing in the gaming world. Mostly cpp and opengl. Emscripten(was) and WebGL are very nice to make shiny doodles. So maybe try one of those. Or make simple art with css.
- thatcodingdude 6y agoWere you able to get a job or freelance gigs in the gaming field ?
- sneeuwpopsneeuw 6y agoI'm still studying Computing science right now and will start with a master in Game Technology next year. But it is really hard to get a job or do freelance work in the gaming field so no not yet but hopefully soon TM.
- sneeuwpopsneeuw 6y agoProject Euler is also always nice to learn more things about math.
- brian_herman 6y agoYou could learn python/machine learning. https://www.coursera.org/learn/machine-learning https://www.coursera.org/learn/machine-learning There are a bunch of guides like the coursera course I mentioned and on youtube there is the official tensorflow channel also! https://www.youtube.com/channel/UC0rqucBdTuFTjJiefW5t-IQ https://www.youtube.com/channel/UC0rqucBdTuFTjJiefW5t-IQ
- andai 6y agoI also highly recommend ML, not for the experience (though it may certainly come in useful) but because it's surprisingly entertaining. Last year I had a lot of fun playing with GPT-2 on Google Colab (you can run it yourself on a decent GPU tho). My friend and I were trying to generate the funniest possible output to make each other laugh -- as an aside, this might be the only category where GPT-2 beats GPT-3 hands down :) Python is also a joy in its own right. xkcd said about Python "programming is fun again!" and that has certainly been my experience.
- langitbiru 6y agoI second this. With Webdev + Machine Learning skills, you could build interesting products. I give you an example from my life. I build PredictSalary (https://predictsalary.com https://predictsalary.com), a browser extension to predict salary range from job opportunities which don't disclose salary range. A browser extension is basically a bunch of JS files injected to web pages. If you know webdev (frontend), you are set to build a browser extension. All you need to learn are machine learning and deep learning. You don't need to dive deep (unless you want to). In my case, basically I just use basic regression to predict salary range.
- KorfmannArno 6y agohttps://d2l.ai https://d2l.ai And https://247reading.group https://247reading.group
- luckylion 6y agoIf you're not already well-versed: get familiar with Google Analytics, Google Tag Manager, Funnels, a/b Testing etc. It's cool to know other tools as well, but privacy concerns or not, GA + GTM are the default. They're largely underused, but my experience is that clients love it when you can set it up for them, especially in combination with Adsense/Adwords to optimize their campaigns.
- classics2 6y agoSoft skills.
- oropolo 6y agoUnder the broad heading of soft skills you could learn how to spell and become a better writer. Most technical people aren't good communicators so taking a course in composition and storytelling would put you in better standing compared to most.
- deleted 6y ago[deleted]
- thatcodingdude 6y agoThat's always a good answer, but I'm not sure how one would go about 'learning' soft skills. Perhaps simply focusing on them is enough to improve.
- ktpsns 6y agoBesides all kind of data science/machine learning, what about learning the "greybeard" mastering of Unix servers? This will connect a lot of old-grown idioms (think about daemons, classical TCP services, etc.) and get you a lot of knowledge in networking (which has connections to event-based networking and thus asyncio, greenlets and all that).
- thatcodingdude 6y agoThat's probably the most interesting part of my job ! Making some small scripts, managing the build step, servers etc. Although I'm not sure you can get this kind of job as a self-taught dev with no degree/certifications.
- rexreed 6y agoAbsolutely you can. Just build up some real experience. Some certifications help as well. Just be careful the ones you spend time and money on.
- slowwriter 6y agoI’m also a mostly self-taught freelance webdev, and recently I’ve been learning about Rust which I’ve found to be very interesting.
- thatcodingdude 6y agoWhat kind of projects are you taking on with Rust ?
- frequentnapper 6y agonot op, but there was a post today about how to build single page apps using Rust on the front page: http://www.sheshbabu.com/posts/rust-wasm-yew-single-page-application/ http://www.sheshbabu.com/posts/rust-wasm-yew-single-page-app...
- slowwriter 6y agoI read that one too with great interest. I’m still only learning and reading, though. I’m hoping someday I’ll be able to use Rust in some professional capacity, but for now it’s just to have fun and play with something new.
- frequentnapper 6y agoSame here. I started going through the excellent guide a few weeks ago.
- deleted 6y ago[deleted]
- breytex 6y agoI'd expand on one of your best skills you already have. The "stack" gets more and more complicated so "full stack" will stop to be a thing in the future. If you are already good in react, learn more libraries / frameworks in that ecosystem and increase your day rate. You are a frontend architect now. I'd start with things like nextjs, Gatsby or Redux saga. You could also go into the devops side of Frontend. Learn the different approaches of deploying / scaling a Frontend with server-side rendering (vercel, digital Ocean, docker...)
- thatcodingdude 6y agoBuild / Deploy / Scaling is the most interesting part of my job right now, so it makes sense to focus on this part. Thanks !
- munna77 6y agoAny specific resources you recommend for learning react, gatsby, devops and stuff
- Joeri 6y agoIf you haven’t done any functional programming I can recommend this course: https://www.coursera.org/learn/progfun1 https://www.coursera.org/learn/progfun1 The techniques you learn there will transfer to javascript and make you a better web developer.
- codeafin 6y agoGreat time to read some books if you haven't already. - Mythical Man-Month - Design Patterns - Code Complete
- bashwizard 6y agoGet into security, specifically web app security pentesting. You'll thank me later.
- thatcodingdude 6y agoThis and the servers/linux stuff is the most interesting part of my job. I do have my doubts about being able to get into it since I suppose you really have to master low level dev (which I don't) and I don't think I can get a job as self-taught in this field.
- bashwizard 6y agoWhy not try it out by start messing around with it and get a feel for it? But to answer your question: no, you don't. You already have more than enough prerequisites for an easier transition. https://pentesterlab.com https://pentesterlab.com https://portswigger.net/web-security https://portswigger.net/web-security Have fun! Edit: I'm completely self-taught and I've been working in the field for a few years. No dev or even IT background prior to getting into network pentesting and web app pentesting.
- thatcodingdude 6y agoNeat, thanks for the advice. Pentesting got a spot on mr. learning list's wild ride.
- frenchman99 6y agoIf you like devops and security, have a look at SRE (Site Reliability Engineering) positions. Companies look for software engineers to fill these positions. And you'll work on security related stuff. Not necessarily pen-testing per se, but network security, operational security, etc. Also, teams with SRE expertise most likely use modern tech because SRE itself is a rather new way of managing infrastructure. So you'll probably be able to get your hands dirty with lots of cool tech.
- 6y ago
- downshun 6y agoWhy not mentor?
- ch_sm 6y agoI second that idea. You can learn a lot about your field from trying to make people understand it.
- OliverJones 6y agoYes. And do some teaching. Short course?
- qzw 6y agoLearn C. Then maybe one of the newer systems languages like rust, zig, D, nim, etc. If you’re bored with CRUD, there’s a whole other (bigger) world to explore when you get a little closer to the metal. It’s tremendously empowering and fun as hell to get you’re hands dirty a bit, so to speak. You’ll also become a better and more employable programmer as a nice side effect.
- thatcodingdude 6y agoC or C++ ? Thought about it, at the very least it would make me a bit more well-rounded.
- fouc 6y agoC is probably better, less abstractions.
- speedgoose 6y agoYou should learn C. Life is too short to struggle with C++ now that we have better alternatives such as Rust. You can also ignore the people who ignore the complexity of web apps. Classic C programs are very often much simpler than full web apps IMHO.
- thatcodingdude 6y agoC it is then. Thanks for your input.
- mucholove 6y agoHappy you chose to learn C. That's exactly what I would recommend. If you are so inclined, I'd look into how to write your own home-grown version of Objective-C—given that valid C is valid Objective-C. Because then you would learn Smalltalk and the whole ladder of it all! Smalltalk is far and away one of the greatest joys on programming. :) http://objective.st http://objective.st The "Gang of Four" explains the patterns in Smalltalk and in terms of entrepreneurship—Patrick Collison's first startup was written in Smalltalk and I think early introduction to it leads to the clean design and success you see coming from Stripe.
- bitwize 6y agoSICP is a great thing to pursue. Pick an area of interest outside webdev and pursue it. Try learning about systems or low-level programming. The field is vast.
- a_imho 6y agoEntrepreneurship? Getting more technical has a diminishing ROI after 10 years. Or something completely orthogonal to computing. Something you enjoy. For fun.
- bluedevil2k 6y agoI disagree on this. A senior developer in any language will make far more, 2x-3x, what a junior developer will make.
- ta17711771 6y agoCan make.
- dbbk 6y agoThere is a hard plateau on how much you can make as an employee though. If you can build something and own the business, it's unlimited.
- bluedevil2k 6y agoThere’s also a floor when you’re an employee. The floor for an entrepreneur is $0.
- dbbk 6y agoYes, you should have some sort of income, hence I'd recommend working for others until your own business makes enough to support you.
- qorrect 6y ago> Entrepreneurship? Getting more technical has a diminishing ROI after 10 years. Does anyone do anything just for the hell of it anymore, or is it all driven by money?
- sushshshsh 6y ago
- semicolonandson 6y agoI'm not sure if this scratches an itch for you, but I would learn more about business via the route of launching a small side-hustle. By having skin in the game, you'll learn a lot about product trade-offs, marketing, selling, etc. In the best case, you get a profitable side hustle going for yourself (and increase your financial independence). Worst case, you go to your next programming job with a ton of extra skills and insights that have excellent commercial value in the workplace. I recorded a few videos showing the big picture of my first side hustle (code + marketing) and these might make it concrete and real for you: https://www.semicolonandsons.com/episode/Bird's-Eye-View-of-a-Profitable-Web-App https://www.semicolonandsons.com/episode/Bird's-Eye-View-of-...
- _benj 6y agoI'm a self-taught webdev too and I would strongly recommend learning SQL, not just `SELECT * ...` but really learning it! I've been digging into postgreSQL and in quite a few applications it's possible to greatly reduce the complexity of the backend by receiving exactly the data you need from the DB. It is so much so that in cases you can even "get rid" of the backend completely (yes, no writing controllers and endpoint, etc.) by using a tool like postgREST (postgres to REST) or Hasura (postgres to graphQL) Best of luck on your search!
- thatcodingdude 6y agoSQL made the cut on my learning list !
- bszupnick 6y agoAny specific resources to recommend?
- KiranRao0 6y agoMy favorite has been https://pgexercises.com/ https://pgexercises.com/. Instead of going through theory, you practice writing progressively more complex queries to achieve a specific result.
- _benj 6y agoThe postgresql documentation is actually a pretty good start (and finish!). I like learning by doing something so I took an old side project and I'm making it on PostgreSQL with PostgREST in front of it. It is crazy all the things that the DB can do! Triggers after an actions happens, virtual columns, JWT Tokens, Unit Testing...
- cpursley 6y agoUsing postgrest and combining postgres triggers with Elixir listeners, you can then do callback like actions on the data: https://blog.lelonek.me/listen-and-notify-postgresql-commands-in-elixir-187c49597851 https://blog.lelonek.me/listen-and-notify-postgresql-command... Or do similar using Hasura's Event system but with webhooks. https://3factor.app https://3factor.app
- haspok 6y agoHow about getting back to the basics? You know, taking some maths classes, CS fundamentals, algorithms, data structures, that kind of stuff. It is timeless, and if you are self-taught, I can guarantee you that you have massive holes in your knowledge. Also, might sound off topic, but learning a new language (not programming, human) could be an amazing step forward, in ways you cannot even imagine now.
- thatcodingdude 6y agoYeah, found out about https://teachyourselfcs.com/ https://teachyourselfcs.com/ which seems decent enough, it's about time to learn this stuff.
- molifor 6y agoAs a self-taught dev, this was a very helpful curriculum. I will say that it can be a little hard to stay motivated on some of these things if you have little chance to apply them, but at least skimming the various topics and understanding the terminology / primitives of each area is a big benefit. For example, understanding what processes and virtual file systems are is helpful even if you're not implementing page tables or whatever.
- andai 6y agoRe: human languages I recently discovered that it is possible to learn Latin by listening to it. I struggle getting through written material so I had given up on my dream of learning Latin, until I found out there's audiobooks [0] and even YouTube channels where people speak it! [1] [0]: Lingua Latina per se illustrata by Hans Ørberg, also available in audio -- this one's entirely in Latin, yet I could understand the first few chapters very well just from knowing English and some Spanish [1]: Luke Ranieri on YouTube https://youtu.be/j7hd799IznU https://youtu.be/j7hd799IznU He also has Skype lessons and conversations, super cool!
- monoideism 6y agoMy observation about most of the new spoken Latin courses and lessons is that they're teaching Vulgar Latin or something akin to early medieval Latin. That's cool, and very interesting. As you alluded to, you're basically learning proto-Romance. However, as you likely know, people should not expect to be able to read classical Latin based on that knowledge. They should be able to read many medieval Latin works (including many notable scientific works!), but forget Cicero, Ovid, or Tacitus. Those will require significant additional study.
- rawoke083600 6y agoSvelte !
- mstipetic 6y agoI'm a bit biased since I run a Kubernetes training platform, but even basic Kubernetes knowledge will allow you to deploy all sorts of architectures with a few YAML files without having to patch several external services together
- mesaframe 6y agoI read this book. https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321 https://www.amazon.com/Designing-Data-Intensive-Applications... And it was really enlightening. I would heavily recommend it. It starts off by teaching different types of implementations of different parts of DBMS. Then goes on to teaching about how distributed systems deal with various problems.
- thatcodingdude 6y agoIt's actually recommended in the teach yourself cs curriculum, so I'll get around to reading it !
- ifarhanp 6y agoi'm a mobile application developer aspiring to learn backend. will this be a good read for me if i have negligible experience on server side of things?
- damidekronik 6y agoNot really in my opinion, the book is really about the data aspect. Probably your best bet is to just pick your favourite programming language and build something in it. The book is great but not what you seem to be looking for.
- ifarhanp 6y agoi'm not looking to learn backend through this book, I find the content of the book interesting and just wanted to know if my inexperience with server-side hamper my ability to grasp the content of the book.
- nwsm 6y agoYou would definitely benefit from doing general backend side projects and reading before reading this book. I don't think you'll have enough context for it otherwise. However, the book is definitely relevant to mobile applications. The backends for all the most popular apps are built with systems described in it.
- ykevinator 6y agoUpdate your skills, php is hard to market, learn python or rails, that would have high roi
- thatcodingdude 6y agoPHP is used a lot in France where I'm based, so that probably differs a bit from the US market.
- Nextgrid 6y agoHowever, the market will eventually change and it's better to be prepared. Plus with PHP being the mainstream I wouldn't be surprised if you could make better $$$ by going after the (still) relatively niche technologies.
- sohamsankaran 6y agoStarting an independent project or two in an area you haven't played in before might be both fun and useful. I have a somewhat long list of ideas I don't have the time to do if you're looking for inspiration -- feel free to email me if you want 'em (soham at soh dot am).
- Tepix 6y agoHow is your knowledge of regular expressions? Spending a few days to learn them well² is really worth it. -- ² it's also worthwhile to know how they are working under the hood if you want to write high-performance regular expressions
- geocrasher 6y ago^^^^ I'm not a dev, but regex is so much better when you understand what it's doing (I'm not claiming that knowledge in full!) The Book: http://regex.info/book.html http://regex.info/book.html I bought an older edition for a lower price, got through 7 or 8 chapters, and never touched it again- and I STILL gained huge amounts of knowledge and am much better at regex than I ever thought I'd be. Highly recommended!
- XCSme 6y agoHonest question, why would you read a book about Regex? I personally find it a lot easier to learn how it works just by going to sites like https://regex101.com/ https://regex101.com/ and trying things out while reading their docs.
- geocrasher 6y agoBecause it was highly recommended to me by a sysadmin I respected who was extremely proficient with regex. Sure, there are sites too, but after reading the book, the sites weren't really needed. I personally got more value from the book. It's subjective, of course.
- thatcodingdude 6y agoI love them and went through https://regexcrossword.com/ https://regexcrossword.com/ for fun, they're great tools. I have no idea how they work under the hood though !
- geocrasher 6y agoKnowing how they work under the hood will help you to write better expressions that perform well and don't waste performance.
- gitgud 6y agoHave you considered open-source development? [1] All the languages and libraries you've listed are open-source projects started by someone like yourself. > "having done every type of CRUD under the sun - what do now" You have a lot of experience developing CRUD, why not build something that alleviates the pain of CRUDdy development. What annoys you? What sucks and could be done better? Anyway, just a thought. Good luck to whatever you do. [1] https://i.imgur.com/qr7Sr8B.png https://i.imgur.com/qr7Sr8B.png
- thatcodingdude 6y agoI'm far from being good enough to contribute to open-source projects unfortunately. I can make lots of things work but I don't know enough advanced patterns and low-level stuff to contribute in a meaningful and maintainable way.
- bdcravens 6y agoYou could start by triaging issues, something that is very tedious for maintainers, especially on small projects. More than that, you can look at each issue and try to see if you can identify the problems. You may find you are better than you think. There isn't a level you need to be to contribute - it may feel like that because on higher profile projects most of the low hanging fruit has already been addressed. Beyond that, there's a skill you learn here - practice communicating professionally (sometime people are submitting issues when they are extremely frustrated), concisely, and clearly (sometimes you need to speak highly technically, other times speaking with a management voice is needed) In the same vein, there's plenty of poorly documented READMEs and wikis, other areas you can contribute, and skills that are very important. Strong communication and writing skills can level you up over better developers. (I'm a self taught developer from the late 90s)
- joshribakoff 6y agoWhat better way to learn then?
- iaml 6y ago
- j45 6y agoRust, WASM, Vue, Hasura, API Integration
- rexreed 6y agoWhat are your goals in life?
- thatcodingdude 6y agoJob-wise I'd love to find something more technical and less business/project oriented. I find myself not really caring about the end product but I love focusing on how things work. I've often been the only one enjoying debugging since it's more of a brain teaser than a business/product focus. Also the build/deploy part of dev interests me a lot. Also gotta get to a scratch golf handicap, but that's outside scope.
- bsaul 6y agoEver tried following the « from nand to tetris » curriculum ? I knew a few people (including myself) who dream of taking a few months off just to complete that course.
- thatcodingdude 6y agoFunny you should mention it, I'm 3 chapters deep in nand to tetris on coursera. It's a great course.
- rexreed 6y agoMaybe you should look into diving deeper into DevOps / IT Ops / AI Ops / ML Ops? And perhaps more jobs around Ops / Network / Sys admin stuff? There's a lot of need for good people who like to debug tricky problems.
- thatcodingdude 6y agoSeems to be where I'm headed now. A new world of learning opens !
- qwerqwerqqwe 6y agoI really understand, I love tackling the hard problems. I'm working on a fully remote freelance project at the moment and we could really use some decent react.js experience. We're processing large amounts of data in deck.gl and we're really pushing the envelope. Can I contact you somehow?
- onyb 6y agoLearn web3.js and build dapps. You already have most of the requisite skills under your belt.
- newsbinator 6y agoI haven't encountered any dapps yet that are useful in day-to-day life. Are there any popular or important ones you could recommend?
- snack_man 6y agoRight now best examples are mostly NFT games like Axie Infinity and NBA Top Shot. DeFi arguably qualifies... Decentralized replacements for many siren server offerings will likely be developed over the next decade, no harm in getting started now.
- beaner 6y agoCompound, dYdX, crypto kitties, uniswap, Dai, Lightning network, Augur... These are mostly financial apps. Compound for example provides the ability to earn decent interest rates (currently ~2-6%) in a time of 0.1% at banks. That's definitely important for people taking it seriously and using it to grow real savings. It's not a joke or a toy, it's used for real investments. Lightning is helping Bitcoin become more usable. dYdX, uniswap, and dai are important infrastructure for the crypto economy. Cryptokitties is a game that is not important but is popular. Augur gives insight about the future.
- erdos4d 6y agoPlease learn how to actually make money off web development and let me know how you do it. I've noticed a huge disconnect between what people think a web dev can/should make and what I've been able to get from it.
- chrischattin 6y ago100% self-taught here. I change $150/hr for full stack Rails work and none of my clients have batted an eye at that. I’m thinking about raising my rates, actually. If you know what you’re doing, I can assure you, making money is not going to be one if your problems.
- erklik 6y agoI have been trying to do this, and my biggest problem seems to be actually finding clients. After exhausting my social circle asking for work, it seems really hard to land a client. I am not even able to get anyone on the phone, and all emails are ignored. Any suggestions?
- XCSme 6y agoI might be talking shit, but one solution would be to make the clients find you instead of you finding clients. Make them want you, see you, look for you. You can do this by being active in the relevant social circles/platforms while being respected by your fellow programmers. It's hard to learn how to market yourself, but if you do it well you can easily have clients reach you.
- chrischattin 6y agoYes! Build something. Contribute to open source, do some charity work, personal project you care about, teach a class at a local code school/college, make a tutorial video, etc. When you have a track record of good work, people will find you.
- erdos4d 6y agoWow, I must be a complete idiot with this stuff because I can't get people to give me even 150 bucks for a full website right now. How do you actually get these 150/hr clients? Please don't tell me I need to work in Silicon Valley for some years and get the "contacts", cause I don't want to live in the US anymore. Tell you what, here's my site: https://www.andeswebdesign.com https://www.andeswebdesign.com, if you like it, just send me all your work and I'll do the whole site for you for an hour of your pay. I also have a PhD in computational and applied mathematics if you want to put some real deal data science pipeline in it! I've never made a cent off of that PhD either, so maybe you're the guy who breaks it all open for me.
- qubex 6y agoDiscrete Mathematics
- fendy3002 6y agoBeside SQL which is strongly recommended, it's good for you to know static typings, java and c# comes to mind (haven't tried go, anyone can recommend it or other suitable)
- brlewis 6y agoTypeScript is the obvious choice for an experienced webdev. It's worth spending extensive time on to get good. Learn generics and advanced types to the point of not needing to look things up.
- halfmatthalfcat 6y agoDevOps, SRE, CloudOps. Things are starting to trend where full stack jobs requires knowing how to build (usually with containers) and deploy (usually into a PaaS) your application. How do you manage a build pipeline, how do you provision appliances in a cloud provider, how do you monitor your applications if shit goes wrong, etc.
- rexreed 6y agoBased on his responses elsewhere here, it looks like Ops / Admin oriented things would be his groove.
- thatcodingdude 6y agoIndeed, that's what I took away from reading the answers ! This thread has been a great help, I'm thankful for each response.
- kfk 6y agoI think containers, orchestration, nomad. Apps in the cloud decouple storage, security. The real “app” is an ephemeral container
- tibbon 6y agoRust, Terraform, Kubernetes - or at least, that’s my focus and bet for the future
- krzepah 6y agoTry functtional programming using ramda.js to step up your js skills; try putting up a prom & grafana stack for monitoring, try using something like django & drf for your APIs (django is somewhat a large web dev market & is really solid, DRF will make you go lighting speed on your dev, it will also step up your permissions programming skills) ; work up to 100% coverage with unit tests and then write e2e tests that reflects the specs, ElasticSearch is a valuable tool to know as well (for logging or be it to use it as a search engine for one of your projects) - get 100% score on web.dev, do not use any css template and actually master it (all that flux / grid system is still a mess for me) (use variables etc..., maybe even scss or sass to be able to loop and whatnot) ; the list could be lot longer but one thing i learnt is that iterating on architecture is a lot more beneficial than spitting out features
- krzepah 6y agoOh and if by any chance you are not efficient with linux & docker do it !!!!!!
- abhishekjha 6y agoAny advantages of using Prometheus over telegraf?
- bluedino 6y agoPuff up your LinkedIn, Github, etc
- pauletienney 6y agoI was in the same situation. I have done CRUDs for years and finally got longer projects (2 years). I am now facing much more techy problems : recommandation engine, OCR, search engine, simple geographical functions, etc. It is much more fun, also much more complicated. My first take would be to learn ElasticSearch, to get a new superpower (it is how it felt to me) and compliment your CRUD expertise. My 2 cents.
- bed99 6y agoI started Computer Science last week. Math is awesome, learning Calculus slowly. A decade after normal people do.
- thatcodingdude 6y agoHow's it going ? I'll be starting as well, feels like I'm too late to the party. Won't stop me though.
- dimitrios1 6y agoTry writing an operating system in rust https://os.phil-opp.com/ https://os.phil-opp.com/
- bionhoward 6y agoAuth and API Security. Lots of apps fall apart when time comes to add login and data persistence! Also, Jupyter Notebook is really cool, and it would be awesome to have Web Assembly versions that work in the browser. Colab is a nice UX, Binder, Thebelab, all steps in the right direction. Feels like notebook computing with WASM is under explored key infra for AI
- spanhandler 6y agoMobile or desktop dev (not Electron or React Native). See how the other half lives. Last I checked Apple TV recommends a markup+JavaScript development process for standard TV streaming applications. It's not a web environment, but it should feel pretty familiar. Easy transition, knock out a demo app and you could start pulling contracts for that, maybe. Dunno how hot that market is. I'd second others with leveling up with SQL. Maybe also dig into esoteric or advanced uses of HTTP daemon software, Redis, et c.
- gkilmain 6y agoYes. Native mobile would be a great side project coming from web dev. You'll learn new languages and tools which for me helped me become better web dev.
- munna77 6y agoAny specific resources you recommmend for learning react
- spanhandler 6y agoWell I wrote not React Native for mobile dev, but I'm the wrong person to ask in any case. I learn best by starting a project with something I'm totally unfamiliar with and just... going. In fact I find learning other ways almost intolerably dull and am unable to stay focused, when it comes to computer stuff (other topics, I don't have that problem). So from my perspective, the answer to "how best do I learn this computer thing?" is going to be "just start a project—ideally one that pays" about 95% of the time. Or pick a simple-enough-looking but not-dead project in the tech on GitHub and start contributing. I gather other people like reading docs (OK, that's alright) or tech books (ugh) or watching videos (double ugh) or listening to podcasts (triple ugh) to learn computer things. I almost never do most of that (aside from consulting docs), especially not when first approaching something. I am, therefore, just about the worst person to ask about resources for learning any computer thing. My only suggestions other than that would be to use Create React App, because the alternative is the sheer cosmic horror or a complex JavaScript build, and that goes at least double if you're doing React Native rather than browser-targeted React, and to start a React project with TypeScript because without it JavaScript is kinda miserable, and there's little reason not to.
- x87678r 6y agoArtistic side - color wheels, photography, design, typography.
- webreac 6y agoIt seems you are good at building web CRUDs, but complains it is boring. It is boring because it is repetitive. Create a web CRUD builder. Computers are there to cope with repetitive tasks. You can put your expertise in the builder. You will continue to earn money by selling web CRUDs, but you should take your art to a higher level. Repetitive tasks are an opportunity to increase abstraction (like in SICP) and write smart programs. Try to find your ikigai.
- jjice 6y agoI like this. It would be a nice challenge and end up with a solid product. Abstraction is the most valuable concept is computer science.
- iaml 6y agoTo expand on that, if what you are doing is simple crud, it might be possible to completely ditch the backend and use https://hasura.io/ https://hasura.io/ and talk to it directly using graphql. It can also generate typescript definitions which is another suggestion I was going to make. Using it made some parts of js more obvious and gave me a lot of confidence working with it.
- dominotw 6y agoI'll suggest something different, leetcode.com seriously. it will give you a lot of confidence with algorithms and DS. You'll be able to look under the hood of many webdev/data frameworks. hey it might even give a higher paying gig ;) , but don't worry about that.
- thiago_fm 6y agoLearn Kubernetes and/or learn a programming language that has a hot market and static types like Kotlin(if you into more webdev) or Rust(if you into systems programming).
- xgenecloud 6y agoTry XgeneCloud : https://github.com/xgenecloud/xgenecloud https://github.com/xgenecloud/xgenecloud - its free & open source. With XgeneCloud, * You can generate REST/GraphQL APIs instantly on any database (MySQL, PG, MSSQL, SQLite) * And deploy entire backend into a single Serverless function! (AWS Lambda, GCP CLoud fn, Azure Function Compute) * Has a built in GUI tool for Database design and API debugging as well. Idea is you get to pass the boring bits (CRUD et al) and invest time into business parts of application. (Disclaimer : Im the creator)
- aarreedd 6y agoGet a Laracasts subscription. They have courses on lots of web dev topics. Not just Laravel/php.
- jameslk 6y agoWeb performance This is an underappreciated field that lends to plenty of consulting. As the web becomes more complex, with heavy frontend code, third party services, and demanding amounts of images and videos, it's requiring a deeper understanding about networking and browsers to keep the web performant. Compounding the problem is the growing number of users who use mobile devices to browse the web, which have larger constraints on network and hardware than desktop users. Additionally, web performance speaks to businesses because a "slow" website can impact your bottom line. There's lots of case studies about this: https://wpostats.com https://wpostats.com. For large companies with heavily-trafficked websites, this is critical as you're losing potential users/customers as a %. Google has slowly been making it a bigger objective for websites to focus on SEO-wise, especially with their latest push around "web vitals." Therefore it's becoming a higher priority for marketing departments as well. Web performance is not sexy and requires a lot of patience around analyzing websites to figure out why they're slow and coming up with specific optimizations for them. This is not like building websites. It's more like debugging. And it requires a pretty deep understanding of how websites load and run in browsers. Provided these things, I think that's partially why it's given so little attention and why so many websites perform terribly. If you're not deterred by these factors, there's a lot of businesses that could use this specialized expertise.
- jakub_g 6y agoI'm working as a webperf guy as a staff. I find the work interesting (although sometimes frustrating), but I'm not sure how many companies want to have full-time perf people onsite. As you mentioned, It's mostly consulting type of work now as far as I can tell (so might not be suitable to everyone), but maybe this will evolve or is already evolving (I've been only approached once for webperf onsite position on LinkedIn in last year, by Atlassian, but maybe because my profile is not that well LinkedIn-optimized). Anyway, if someone's interested, you can start by reading articles from: https://hpbn.co/ https://hpbn.co/ https://web.dev/learn/ https://web.dev/learn/ https://developer.mozilla.org/en-US/docs/Learn/Performance https://developer.mozilla.org/en-US/docs/Learn/Performance https://calendar.perfplanet.com/ https://calendar.perfplanet.com/ https://csswizardry.com/ https://csswizardry.com/ https://phabricator.wikimedia.org/phame/blog/view/7/ https://phabricator.wikimedia.org/phame/blog/view/7/ And some of my own content: https://calendar.perfplanet.com/2018/getting-started-with-web-performance-2019-beginners-guide/ https://calendar.perfplanet.com/2018/getting-started-with-we... https://jakub.gieryluk.net/slides/rivieradev/ https://jakub.gieryluk.net/slides/rivieradev/
- baq 6y agolearn sql. no matter what else you do, sql will be with you sooner or later. read your favorite DBMS manual end to end. this could amount to thousands of pages; each one is well worth it. watch leslie lamport's TLA+ videos.
- melvinroest 6y agoHey, Let's meet up online and play hackthebox.eu together for a bit. My idea is to simply pick a live box and hack it together. You can pick the difficulty. I've done 6 years of CS degree programs (1 bachelor, 2 masters), 1.5 years of software engineering experience and done security courses (network security, hardware security and reverse engineering) as extracurricular subjects. Anyone who feels up for the challenge, my email is in my profile.
- xgenecloud 6y agoThis is nice idea, see if you can use us to build interesting playgrounds on your site. We are in based in UK as well (Dorset).
- 52-6F-62 6y agoSeems like something in signup is broken. Every code I get back fails. edit: Scratch that. Took about 5 or 6 codes to finally work for some reason.
- melvinroest 6y agoIf I seem to create the impression, I am simply a user of hackthebox and a pentesting enthusiast :) I'm not affiliated with it.
- greenie_beans 6y agoi love these ask HNs...they are always full of such good resources i never knew i needed
- thatcodingdude 6y agoYeah, I never expected so many good answers.
- ChefboyOG 6y agoTL;DR: There's probably not an obvious, "learn this and you'll increase your job prospects" technology for you at this point. But, you can also decide to learn almost anything, and because of your years of experience, open up a ton of new doors. I'm also a self-taught engineer (well, I've done course work now, but only years after starting in the field). If I'm reading this right, I think you're in a position where there's not an obvious next thing to study, as you've more or less become an expert in CRUD applications. I think a lot of developers hit this point, especially us self-taught types. When you're making your way in the industry, it's really easy to notice the in-demand skills/technologies that you don't have, and to add them to your toolkit one at a time. It's a nice, linear progression. Then, you reach a point where that approach doesn't work anymore. If you're a 10+ year developer who knows React and Vue and is strong with vanilla JS, adding Angular to your toolbox won't raise your salary or your skills—you could probably pick it up on the fly if you really needed to. I think at this point, you need a paradigm shift away from "what is the market pulling me to do" and "what do I want to do." It sounds like you want to stay an IC, so that means it's going probably going to be purely technical—so what technology do you find interesting? For me it was machine learning, and then hardware-level stuff. That's what lead me to take university classes and study higher math/more fundamental CS. There wasn't an obvious pull in that direction from the market—none of my bosses offered me a raise if I became an ML engineer—but I liked it, and because I had years of experience already, becoming proficient in the field opened up an entire new world of opportunities in terms of career and personal life. I wasn't a new grad who studied ML. I was a career developer who'd built businesses, who now had a background in ML. You could apply this same logic to any new field you study, it doesn't even have to be technical. If you got really into design, you'd be a designer with 10 years of development experience. If you got really into sales, a salesperson with 10 years of dev experience is a hot prospect at any company that sells to engineers (in other words, some of the most valuable companies on Earth). If you want to stay in web development and level up there, I'd recommend following the advice of many on this post. Pick a part of the stack you find interesting, and dig a thousand layers down. Even better, if you find something you think could be done better than the standard tooling does it, build something there.
- thatcodingdude 6y agoThanks for the detailed answer. I do intend on staying technical for as long as I can. I'll have to pick something around servers, UNIX, security and performance since those are actually the (seldom used and surely not deep enough) parts of my job I enjoy the most.
- m4tthumphrey 6y agoWhere are you based?
- thatcodingdude 6y agoI'm based in France.
- nicoburns 6y agoHonestly, in terms of employment you don't need to learn anything at all. Your skillset (which is quite similar to mine) is highly in demand. What you'll probably find is that you can specialise in any of the areas you already have skills in simply by advertising yourself differently. However, it's always good to learn more. I have a couple of suggestions: 1. Rust. The Rust book is an excellent introduction to lower-level programming languages, and also to more functional patterns. I went into it from a primarily JS/PHP, and it's been a wonderfully refreshing experience. And it's also been an excellent way to level-up my programming experience. 2. Embedded programming. Get yourself an Arduino or an ESP32, and make something that connects to the physical world. Lot's of fun. You can technically combined this with Rust, but I'd recommend sticking to C/C++ for embedded work (at least at first) because it's much better supported. 3. AWS / Kubernetes / Cloud computing. Managing large amounts of infrastructure on these platforms is an art unto itself. And it's worth learning if it's something you have an interest in. I'm not usually a "training" kind of guy, but I'd recommend doing some kind of course / using structured learning materials for this. Because there's so much tribal knowledge that needs to be acquired.
- thatcodingdude 6y agoBy "The Rust Book", do you mean "The Rust Programming Language" ?
- nicoburns 6y agoYes indeed. The free online version (which has the same content as the printed version) is available here: https://doc.rust-lang.org/book/ https://doc.rust-lang.org/book/
- thatcodingdude 6y agoThanks. Rust has been recommended a bit in this thread so I'll check it out. Out of curiosity, what's the appeal of learning Rust ? What kind of projects do you use it for ? I find that I can solve mostly everything with a blend of PHP/JS, but I also never escaped web CRUDy stuff, and PHP is very well suited for these.
- dgb23 6y agoHi fellow self-taught web-dev with (almost) a decade of experience. Since we have no formal education we need/want to constantly learn new things in our free time. This is both fun and can be very impactful. Learning for us is a habit, or even kind of an obsession, but we should always look at topics with a pragmatic eye too. All of the things I list here helped me do a better job (qualitatively) in some way or another. This is an incomplete list but hopefully you find something useful in here. In the past: - SICP => fell in love with Lisp and started to "get" what programming is about. Hard to explain. - canvas, SVG => out of necessity at the time, pushed me down a rabbit hole of linear algebra. If you touch GUIs then a solid understanding of these concepts is multiplying your productivity and ability. - Go, programming language => first I didn't have a use-case for it. Glad I learned it because it sparked a strong interest in learning languages. Every next language was incrementally easier to learn. - theoretical computer science, algorithms and data structures => these concepts are typically taught in CS/IT courses. They are incredibly powerful, important and timeless. Some of the most practical and powerful concepts for web-dev: complexity analysis, graph data structures, FSMs. In the more recent past: - Clojure => I have a strong appreciation for data-driven, functional programming and REPL driven development now. These concepts fit very well into web-dev. - SQL in depth => especially temporal data-modeling. I started asking questions like: Can I do this in pure SQL instead? The result is a much higher appreciation for the language and a more productive approach for both backend design and programming. - Regex in depth => a nice data-driven approach to handling strings, ubiquitous and practical. - writing a compiler => this blew my mind. everything is a compiler... Currently: - Rust (and WASM) => I wrote a little automation tool with it so far and hope/expect that the language will become empowering even in web-dev. On the horizon: - Julia => I hope to dive deeper into math and linear algebra specifically in a practical way, also I assume that some data-science (specifically analysis) concepts help me to develop better solutions and broaden my horizon. I my goal is to use Julia as a vehicle for this. - WebRTC, video/audio streaming - WebGL => I want to dive deeper into graphics programming
- thatcodingdude 6y agoNice, that's really interesting ! How did you touch so many different languages, was it only on personal side-projects or did you learn on the job ? I'm afraid learning too many different languages just for fun would be detrimental on my main "job" language, like I'd forget the main patterns. But probably not.
- jakub_g 6y agoI'm asking myself the same question. WebAssembly (WASM) looks like something that might have some potential for the future, but adoption will be probably slow/limited.
- pabe 6y agoTry to get maximum Google Lighthouse scores. Get into functional programming and useful patterns (e.g. state machines). Try a TDD side project and get a feeling about test coverage. Maybe develop a view about next gen tools / compilers like SvelteJs. There aren't too many people who're able to write a well structured and maintainable, secure high performance web app with a high test coverage. Career cheat: If well known open source projects merge your code, that's worth a lot!!111
- conradfr 6y agoDo you often use asynchronous tasks? If not you could use RabbitMQ or Redis (etc) and try to use queues, workers, or pub/sub. Maybe tying that to a websocket. If you want to expand from PHP you can look up Go or Python. If you want to try something very different and fun but with less prospect for a job try Elixir. You can also update your skill to the new Vue3.
- phenkdo 6y agoWhy not try something very different outside of programming? Such as learning to play an instrument, a foreign language, Jiu Jitsu etc. In the long run, such offbeat pursuits have a multiplier effect.
- eagsalazar2 6y agoI learned Banjo a few years ago while freelancing. The trick is to hang it right next to your desk. You'll play it way more and keep playing it as a nice break (vs watching youtube videos).
- thatcodingdude 6y agoOh, I already have lots of outside hobbies. I'm just trying to make work more fun (I do realize how privileged I am to even think this.)
- eagsalazar2 6y agoReact Native if you don't already know that. Also UX and Product Management. Then just launch some little thing to real users. It will be a thrill ride. Of course I'm projecting what interests me but that's my advice.
- snack_man 6y agoWeb 3.0
- thatcodingdude 6y agoBut is it webscale ?
- roberthahn 6y agoYou have all the skills needed to succeed in a technical level. Maybe look into expanding your expertise in sales, marketing, or running a business. If that doesn’t float your boat then I suggest getting into woodworking with hand tools. My point is that you don’t need to spend all your time focused on tech skill development - you might burn out on it.
- dcminter 6y agoThere's another thread at the moment about touch typing. I think that's only 'meh' useful. Instead, how about spending time on getting all the hotkey combos of your favourite IDE or editor into your muscle memory? If it has a presentation mode, then also learning how to use any of the features of that would be a nice plus.
- kamban 6y agoYou can consider building SaaS product around your expertise , for eg you can sell APIs. But ofcourse doing market research is another domain. But if you start with an audience, and their problem, you might hit it off. ROI is exponential with a successful SaaS product.
- beaner 6y agoYou could take some time to familiarize yourself with Docker and how to deploy a full-stack application as a set of "microservices" that talk to each other. It's really helpful for getting closer to understanding infrastructure, scaling, and deployment. You could familiarize yourself with some crypto things like running a Bitcoin node and maybe Lightning (Bitcoin's layer 2), and then figuring out how to deploy it or build a website that uses your node to accept payments for you or on behalf of others. You could start a side project that uses both, such as a blogging platform that lets users publish articles that can be unlocked with a crypto payment rather than a subscription or credit cards. You could use both containers and Lightning to do it and learn both at the same time.
- SwiftyBug 6y agoThis is definitely what I would do if I had lots of free time!
- juliend2 6y agoI think you should take a look at Flutter for mobile dev. https://flutter.dev/ https://flutter.dev/ would be a good starting point if that sounds interesting to you.
- alexdowad 6y agoSuggestion: Dig in to the very bottom of your computing stack and get a working knowledge of your CPU, bootloader, OS kernel, system libraries, etc. Along the way, you will want to try: - Using a debugger to step through simple programs at the machine level and see what happens to the registers, stack, etc - Using tracing tools like strace (for Linux) to see what syscalls various programs issue (this is after you learn what syscalls are and how your OS handles them) - Playing some old-school hacking wargames like vortex, utumno, etc. These are fun and really make you learn the low-level details of how your OS loads binaries, memory layout of processes, etc. Most developers don't know this level of the stack, and when you are the one guy on the team who does, it's a bit like having superpowers.
- thatcodingdude 6y agoDo you recommend any books / courses that could help give me some sort of curriculum around this knowledge ? I unfortunately don't know what I don't know, so I'd need a bit of guidance to learn efficiently. Something like http://pages.cs.wisc.edu/~remzi/OSTEP/ http://pages.cs.wisc.edu/~remzi/OSTEP/ maybe ?
- mooneater 6y agoI'm surprised by a lot of the suggestions (learn C?). I mean sure, everything is interesting, but what is the goal here. There are many paths, I suspect you could use more exploration to know which ones appeal to you. From my pov: - general backend people are a dime a dozen, deep front end expertise is harder to find. if you already have front end skills, adding deeper design/UX skills to that would take you to another level completely - on the backend, python unlocks a giant data / ML ecosystem, plus django
- thatcodingdude 6y agoWell, my post was kinda generic and more exploratory so I appreciate every answer. I've read every post and realized I'd like to focus on back-end, specifically server management / devops / security.
- maitredusoi 6y agoBest way is to build your product. A real world product. There only you will be able to confront upon the wall of Reality .... Even the lightest simplest product is the best tool to really learn, as you confront, think, invent, try and errors everything. Languages have no meaning if there are not tested in real space. I lost a lot of karma here because of discussion on PHP (I am a ruby guy). But at the end you can keep and relie on PHP, because until you don't see yourselve flaws, then those flaws doesn't really exist. And only then you choose your language that will correct problem the right way ;) After your product is done, show it to us here, return to HN and expose your vision, and receive rewards and critics at the same time.
- thedangler 6y agoContact me! I have work that needs to be done. You will contribute to open source projects and will help my company expand its services.
- thedangler 6y agoPlease Contact Me! I have lots of mini projects that need done, you will be contributing to open source projects that will help expand my service offerings. You can reach me through my profile. Thanks!
- pknerd 6y agoI couldn't find some contact or email.
- nicexe 6y agoSystem orchestration (docker/kubernetes/aws/...) This falls a bit under dev-ops and sysadmin but it would unlock your brain to think in different ways.
- thatcodingdude 6y agoThanks for all the great answers, they all helped me think about what I wanted to go for. I'll be focusing on linux admin / devops / security and brush up on the parts I've missed (computer science basics / SQL / C...) I welcome every course / book / resource advice !
- Zealotux 6y agoI'd suggest having a look at IoT, chances are you already have the skill set to work with IoT and the demand will only grow in the following years.
- karmakaze 6y agoA different perspective on the server-side of things might be useful. Could either go lighter like Firebase, or thicker like Rails/Ruby, Django/Python, Phoenix/Elixir, or Yii/PHP. They have more structure and let you tune things differently. Certainly being exposed to working in a functional style with immutable data can benefit your thinking even when using common languages. I prefer the static type-inference flavors, e.g. F#, OCaml, or Haskell which is a bit more of a stretch. SICP/Scheme is great or even playing around with Clojure.
- tonka3000 6y agoWebAssembly
- justaguyhere 6y agoany resources you can recommend?
- ExcavateGrandMa 6y agoAye karamba... they all 10yrs exp old... am skeptikal :D well the way you speak tells a lot about your real skillz... Work on...
- zamalek 6y ago> specialize more With how rapidly the web changes, I would consider specialization a wart on your resume. Web developers have to be generalists. I'd keep doing what you are doing: learning new things. I'd learn some other back-end language. C#, Java and Rust come to mind. You're very strongly tied to the scripting/dynamic ecosystem.
- catmistake 6y agoVery few webdevs know it, but they should all learn it, with a gun to their head if necessary: restraint.
- fspacef 6y agoplay with SwiftUI!
- probinso 6y agolearn the language `webppl`
- peteypao 6y agoSecurity. It's an in demand field right now, and I just don't see how it will become irrelevant in any time in the future. React, Angular, etc will all be passe in a few years. Don't base your career on fleeting technologies.
- RemingtonLak 6y agoNo shortage of great suggestions here. Lotsa knowledge pouring in! So I'm there with you although not quite as extensive. May I suggestion: mobile app? I'm just now trying to get into PWA using vue. I have quite few mobile ideas and trying to pick your fav child is hard ;-) But using a bit of Biz Intel, research is pointing me to certain direction. Also why not make it side hustle? Check out indiehackers.com (I have no affiliation). Great motivation and inspiration.
- vonwoodson 6y agoWeb assembly is going to change everything. Rust compiles to web assembly, maybe start there with single page apps as a start. Smart contracts. Writing a smart contract is pretty easy. They use web front ends to work. Bringing quality UX/UI to crypto may be a skill that’ll open doors for you.
- JanVanRyswyck 6y agoLearn about Test-Driven Development and Software Design. Or learn about Software Design and Test-Driven Development. You'll learn that they are both ends of the same stick.