Nowadays, many people strive to conquer the heights of programming in one language or another. There are debates about which language is better, which is more productive, many developers and beginners focus on benchmarks and foam at the mouth to prove something to each other. This is so childish and so pointless!
Ask yourself the question, what will you create using this or that language? Do you have a startup idea? Can you create something new? Remake an existing one, but make it 10 times better?
If you are offered a job or take tests and interviews, you will be given technologies that you will be required to use. Business, money, and interests of managers who have never written code themselves will carry more weight than the results of your research and study of effective programming languages. This is the fucking reality of the industry today!
Therefore, you need to learn something else: physics, mathematics, chemistry, neurobiology, any natural science. This will give you the opportunity to write something in your favorite programming languages that someone else really needs. Not boring schedules and product lists, mailings and stores, fuck commerce.
Natural on, that's what should advance your programming knowledge!
The boring answer: the boring shit pays the bills. If you want to apply your programming chops to science then academia is your home
UBI often touted as an answer to this kind of thing though, breaking capitalism through removing cheap labour will have untold societal shifts, including an uptick in creative thought and independent research. Beware though: most research today costs way more than you think to generate meaningful breakthroughs
Therefore, you need to learn something else: physics, mathematics, chemistry, neurobiology, any natural science. This will give you the opportunity to write something in your favorite programming languages that someone else really needs
While I generally agree with you I would like to add that for some people it isn't about learning about some scientific field, it can be about learning about an industry in depth and then use technology in that industry to solve problems.
In the past when a scientist knew about programming and was able to code stuff he was able to suddenly revolutionize his field with a few lines of code, nowadays programming is kinda assumed as a must have on those fields and there are entire teams that understand "both worlds" enough to come up with very advanced solutions.
Tl;dr: It is no longer the lone scientist that happens to know how to code that cames up with some solution, it's about large teams of computer engineers with backgrounds on that field and vice-versa that collaborate to build software that takes months / years and delivers some additional value over what already exists.
Business, money, and interests of managers who have never written code themselves will carry more weight than the results of your research and study of effective programming languages. This is the fucking reality of the industry today!
That is not even remotely the reality where I work. The reality where I work is:
Everyone we have hired, and everyone we plan to hire in the future, is familiar with languages X/Y/Z. Therefore you will use those three languages.
If you want to use a fourth language, first you need approval to train every single employee in that language. To a high level of proficiency. That would take thousands of hours for each employee.
If you want to use a fourth language, first you need approval to train every single employee in that language.
I've worked at a company where each and every single engineer was free to pick up what he felt was the best tool for the job.
It was an utter mess of unmaintainable code, and everyone wasted time trying to get projects not die out of bitrot.
Training people is not a problem. You also do not have to train everyone to create a single project in a particular framework/programming language. What you do have to factor into your analysis is the inefficiency of having to waste time managing multiple fameworks/runtimes/deployments/programming language development environments, and the lack of progress you will have in your team's skillsets if everyone turns into a one-man silo.
I'm not sure if I understand your question, but if you are trying to build a solution, you will have to know the problem. I am writing said mailings, database, rest interfaces etc. for which Java and Spring boot is pretty useful. Some people might consider this antiquated. I also used python for data science stuff in the past. Neither would i like to have been using java back then, or python now. But in both cases i needed to know what i was building before i (or my employer) chose the technology to use.
If you are offered a position where you will have to use a technology for something you think its not a good fit for then run. Some people might even be more interested in you if you tell them as it makes you look more experienced. And you're right, it is usually not worth it to have religious wars over 0.xy percents of performance gain, as long as you're not trying to build a house with a screwdriver.
I'm an old fart but we learned a lot of languages in school from simple Basic to Cobol, to RPG for corporate reporting, then Pascal and Fortran for engineering, and finally C for the future. And then of course I ended up hired and placed on a DB team to write SQL for years after being hired as a C programmer. But I do feel my years in Liberal Arts majors helped me in many ways through my career and gave me a lot of flexibility to keep finding a niche as the corporate entity changed goals and methods. I trained engineering sw for about half my career and couldn't have done that without my non computer education
What’s you’re describing is more of the role of a project manager. They learn what the client wants, and formalize a product around it. Sometimes this requires some domain knowledge.
The programmer then writes a program that solves the problems the product manager formalizes.
I work in a company with other people. it's not a good idea to have an idea where you have to specialise in a range of things to be successful. I specialise in programming.
also, those benchmarks translate to better user experience which means they actually use our product, and lower hosting costs.
frameworks and patterns reduce bugs and let us create features quickly. it's important, if you think it's pointless maybe it's not for you. if you want to go do a startup instead, good luck.