this post was submitted on 19 Mar 2024
47 points (98.0% liked)
Programming
17378 readers
235 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
In my opinion the best developers are "generalists" who know a little bit about everything. For example I have never written a single line of code in the Rust programming language... but I know at a high level all of the major pros and cons of the language. And if I ever face a problem where I need some of those pros/don't care about the cons then I will learn Rust and start using it for the first time.
There's not much benefit to diving deep into specialised knowledge on any particular technology because chances are you will live your entire life without ever actually needing that knowledge and if anything, it might encourage you to force a square peg into a round hole - for example "I know how to do this with X, so I'm going to use X even though Y would be a better choice".
Wikipedia has a list of "notable" programming languages, with 49 languages just under "A" alone and I've personally learned and used three of the "A" languages. I dislike all three, and I seriously hope I never use any of them ever again... but at the same time they were the best choice for the task I was trying to achieve and I would still use those languages if I was faced with the same situation again.
That's nowhere near a complete list - which would probably have a few thousand under "A" alone. I know one more "A" language which didn't make Wikipedia's cut.
The reality is you don't know what technology you need to learn until you actually need it. Even if you know something that could be used to solve a problem, you should not automatically choose that path. Always consider if some other tech would be a better choice.
Since you're just starting out, I do recommend branching outside your comfort zone and experimenting with things you've never done before. But don't waste time going super deep - just cover the basics and then move on. If there's a company you really want to work for, and they're seeking skills you don't have... then maybe get those skills. But it's risky - the company might not hire you. Personally I would take a different approach, try to get a different job at the company first then after you've got that, start studying and ask your manager if they can help you transfer over to the job you previously weren't qualified for, but are qualified now. In a well run company they will support you in that.
As for learning outside of your 9-5... you should spend your spare time doing whatever you want. If you really want to spend your evenings and weekends writing code then go ahead and do that... but honestly, I think it's more healthy long term to spend that time away from a desk and away from computers. I think it would be more productive, long term, to spend that time learning how to cook awesome food or do woodworking or play social football or play music... or of course the big one, find a partner, have kids, spend as much time with them as you can. As much as I love writing code, I love my kid more. A thousand times more.
Programming is a job. It's a fun job, but it's still a job. Don't let it be your entire life.
Look Ma, this guy says it's ok that I'm a full stack dev. He says it's even good!
Also: counterpoint: if you teach your kids to code, you can outsource to them.
I'm also a full stack dev - so maybe I'm biased. But I'll add that there's definitely a place for specialist work, but I don't agree, at all, with people who think specialist developers are better than full stack ones.
The way I see it full stack devs either:
Take OpenAI for example. They have a bunch of really smart people working on the algorithm - so much so they're not even engineers they're more like scientists, but they also have a full stack team who take that work and turn it into something users can actually interact with, and above the full stack team is the management team. Maybe OpenAI isn't structured that way, but that's how I'd structure it.
But most software isn't like ChatGPT. Most software isn't bleeding edge technology - you can usually take open source libraries (or license proprietary ones). Let the specialists figure out how to make TCP/IP handle complex issues like buffer bloat... all the full stack dev needs to know is
response = fetch(url)
.Great advice, you two. Have a bunch of kids and teach them APL, Actionscript, and Autohotkey. On it!
:)