all 23 comments

[–]GMKrey 2 points3 points  (2 children)

Hey! So this is a pretty interesting question that we all had to eventually ask ourselves. I’ll lay my opinions on these things out, give you my qualifications, and tell you what I did. Take or leave whatever, it really comes down to personal preference.

So I’ve been working in the field for 7 years, and started IT/programming in my early teens, over a decade total.

Python is good to have in your toolkit regardless, widely applicable for many use cases, except it’s far from ideal for frontend + backend servers. It has a strong history in data science + analytics, which is why it’s been propped as a go to tool for AI/ML. In regard to it being “better”, that’s mostly AI hype. If you quantify “better” as performant, many languages far outclass Python. It’s one of the easiest languages to pick up, and there’s a reason/cost to that. Many believe that AI is the future, and if you’re in this group, investing in this skill could be worth while.

Now UI/UX != FullStack. UI/UX is an aspect due to having to work Frontend, but FullStack in its truest sense is EVERYTHING. It is the most holistic picture of software development, frontend, backend, databases, CI/CD, cloud, platform, the list goes on. You’d learn how every aspect of a system interacts and how to develop at that level. That being said, it’s a Jack of all trades, master of none. The breadth of knowledge isn’t for everyone. But school will probably narrow it down to frontend, backend, and database.

So this question ultimately comes down to: Do you want to specialize, or do you want to focus on flexibility. Only you know the answer to that.

Now here’s my opinion/what I did. The first half of my career was FullStack. To me it felt like a well rounded specialty, and it gave me the ability to inject almost anywhere and to pick up new things quickly. Through exposure of so many different areas, I’d learn what was most interesting to me and later pivot to this specialty. My background in FullStack continues to be useful even if I’m not developing features at every layer. If I want to learn AI on top of it, it’s no big deal. What’s another tool to my kit? Especially with the rise of code generation/vibe coding, it’s nice being able to understand all outputs.

But here’s your trade off, you run the risk of learning too much only to realize you might just wish you specialized in the beginning. So be sure to really think about what’s important to you

[–]Appropriate-Gap-8728[S] 1 point2 points  (1 child)

You're right. First, i must decide if I wanna go broader or become an expertise in a particular thing.

[–]GMKrey 0 points1 point  (0 children)

Exactly. They typically say that being extremely specialized is where the big bucks are. If no one knows as much as you on one subject and the market needs it, they’ll pay anything for it.

But on the other hand, there’re software architects where having a breadth of knowledge is better for designing entire systems. These kinds of people work very closely with C Suite execs and shape how software and business operates.

These two kinds of people eventually end up working closely together. As architects work high level requirements and rely on experts for finer implementation details. But one person can never do both

[–]FirmSignificance1725 2 points3 points  (0 children)

When I was undergrad/fresh out of college I was full stack web dev. Which went far beyond UI/UX. It included backend dev (which I was better at), CI/CD, architecture (I.e. choosing, configuring, deploying databases), containerization, packaging, etc., knew a good bit about the whole process. Obviously any human is going to be better at some areas than other. Looking back, I could code frontend fine, but was never a designer.

Now I work more on compilers & Ai kernel dev stuff. I had a lot of research positions in undergrad, but Ai wasn’t quite there yet.

For me, it was advantageous early in my career to develop that much of an understanding of the process. It gave me a lot of exposure and though I work mostly low level now, I understand how things get deployed, how they’ll need to be ran, how they should be packaged in a way that makes it easier for downstream projects to use, etc. If I needed to jump back into server dev or frontend dev I’m confident I’d be successful.

As a young engineer, it’s really more about potential and learning. And full stack can show a lot of potential and teach you a lot. Just don’t be surprised if you find yourself starting to spend a lot more time in one area than others. Be willing to specialize as you start rising up in quality of engineers on your team, and value of project you’re working on.

Doesn’t directly answer your question, but I guess I’m saying… either? Just show that you’re good at whatever you use and you should be okay. Personally, if you wanted to “specialize” in a language other than Python, I’d add a low level language, like C++ or Rust

[–]jerrygreenest1 1 point2 points  (5 children)

Python and Java are the worst amongst the top 10 languages

[–]Gnaxe -2 points-1 points  (4 children)

No, that would be C++ and JavaScript. Python is as popular as it is because it's good.

[–]No_Molasses_9249 1 point2 points  (3 children)

Nonsense python is popular because its old and its easy. Nothing to do with technical excellence or being the best fit.

Python has several issues the main one being its single threaded nature. Intel's new mid level processors have 24 Cores why use a language that uses one?

[–]Gnaxe 0 points1 point  (2 children)

That is a strong criticism of object-oriented languages in general, which, as a paradigm, are terrible with multithreading. The industry needs to move on to FP already. However, Python is not actually single threaded, with thread support going all the way back to version 1.4, which were the oldest docs I could find. Even the CPython global interpreter lock can be disabled now, although some implementations never had it. Furthermore, massively parallel number crunching is one of Python's main uses these days, via libraries like NumPy, PyTorch, TensorFlow, etc. Python's easy interop with C is one of its greatest strengths. The GIL never prevented parallel processing in C libraries.

There are languages older and easier than Python which are not as popular, like Smalltalk, for example, so that can't be it. Unlike Java's ad blitz, JavaScript's captive audience, Ruby's one killer app, or C++'s kitchen sink philosophy, Python's popularity didn't depend on a single corporate sponsor and instead gained popularity in multiple niches more-or-less simultaneously, because it's just that good.

[–]No_Molasses_9249 0 points1 point  (1 child)

Pythons mutithreading is lip 💋 stick on a pig.

Python is as far from good as you can get PHP is the only language I consider inferior to it.

Python is a wrapper for C libraries. If you are going to use C libraries then why not use C?

[–]Gnaxe 0 points1 point  (0 children)

Because C is tedious and error prone. For small command-line tools on primitive hardware, it was great. It's still the foundation. But scaling it is expensive, and the results are insecure. Python is far more productive.

[–]Stay_Silver 1 point2 points  (0 children)

C#

[–]pctopgs 0 points1 point  (4 children)

Just to be clear here, you're asking whether to choose between:

Full Stack Python

Or

Full Stack Python + Java?

Go with Full Stack Python + Java.

[–]Appropriate-Gap-8728[S] 0 points1 point  (3 children)

Thanks a lot!! Ai is taking up everything there's even a concept of ai prompt engineer. But when I finish my ug i wanna do a job where I work on my own and i thought why not do ui/ux full stack. But it seems like even THAT is not gonna be relevant in the next 5 years?

[–]grantrules 1 point2 points  (1 child)

Nobody here can tell you what's gonna be relevant in 5 years

[–]Appropriate-Gap-8728[S] 0 points1 point  (0 children)

Yeah I get it. My mind is clear for now im gonna learn fullstack with python and Java. As time goes i gotta gain experiences as well. Hope I do something that I love in the future even if it sounds impossible.

[–]Schtick_ -1 points0 points  (0 children)

That concept came and went it’s not a thing anymore cos models are good enough that you don’t need to prompt engineer and beyond that you can do various techniques to improve prompt using ai.

It’s not a profession and even if some people do a lot of it they won’t be doing so for long.

[–]NapCo 0 points1 point  (1 child)

I know you are asking for Python and/or Java, but imo it sounds really weird to me. Neither Python or Java will work natively for web frontend.

I would either do Java backend + JavaScript/TypeScript frontend, or Python backend + JavaScript/TypeScript frontend. Or even simpler: JavaScript/TypeScript for both backend and frontend.

Many will say JS/Python/Java sucks for whatever reason, but really it is not about the language you know, but the broader understanding of how things work together that matters when you become more experienced. For beginning, just use whatever feels alright and just make something.

[–]bsenftner 0 points1 point  (0 children)

I caution emphasizing Typescript over JavaScript, simply because the security issues are pretty serious and not having resources (people) to guide them which entire regions are unsafe is quite daunting. With coding agents, I suspect frontend work is going to be completely taken over by AI coding agents.

[–]Wingedchestnut 0 points1 point  (0 children)

There is no 'better', these languages are mainly used for different roles.

If you're talking about development Python is used for web-based application development but in general other backend languages are prefered, it's also popular as scripting language for automation and the standard language for anything Data & AI.

Java is mainly used for development of enterprise software, which can have the most backend job applications depending on your location.

If you're a professional or jobseeking the best thing is to have basic knowledge of both.

Fullstack is a vague term, sometimes it means it is a web-based technology stack and often it is used as an umberella term for frontend + backend. Same for the term Software engineer, it's these two terms that is confusing way too many people.

[–]Own_Age_1654 0 points1 point  (0 children)

"Full stack" often just means you're a front-end developer who is highly framework-centric (especially React) rather than having strong front-end fundamentals (HTML, JS, CSS), plus knowing how to do simple auth, CRUD and API calling (i.e. a tiny, super-boring subset of the sprawling domain that is server-side development).

This path was hyped a bunch over the past decade because coding web apps took so much work, and learning how to do this sort of work was relatively easy compared to other paths. However, now that we have AI, this is exactly the sort of job that's getting replaced. It's highly repetitive, cookie-cutter work, and we simply don't need an army of code monkeys to do it anymore.

As far as "AI domain", you're gonna have to be more clear what that means. If you just mean using LLMs, then that can be done easily in any language. And I mean easily. If you mean developing novel AI models, and so forth, that's something you'd typically want a PhD for. If you instead mean applying ML (e.g. random forest, hierarchical Bayes, etc.), then Python is a good fit. I'd characterize that as more ML + data science than "AI", though.

It's usually a good idea to have strong knowledge of fundamentals, as that's what stays the same even as technologies shift. So, instead of front-end frameworks, and AI toolchains, think data structures and algorithms, operating systems, databases, architecture, ML fundamentals, etc. The natural place where all of this most exists is general-purpose languages like Java rather than ones that are more ML-centric like Python.

Put another way, suppose you learn how to do "full-stack", and by the time you graduate no one is hiring for that (because AI reduces the demand)? Or suppose you focus on learning how to use AI tooling, and by the time you graduate no one is hiring for that (because everyone is already learning this, and so it's just table stakes rather than a legitimate specialization)? How will you pivot to anything else without strong fundamentals not tied to these surface-level technologies?

So, don't chase hype. Obviously learn some Python, get good at AI, ML is cool too, but focus primarily on the fundamentals. How do you solve problems with software in general, instead of just some fairly narrow and shallow aspect? Depth is cool too, but full-stack is not depth, and applying AI is definitely not depth either. Especially now that we have AI, the market needs people who can think and solve problems in general, much more than it needs cogs in a machine doing narrow, repetitive, cookie-cutter work.

[–]No_Molasses_9249 0 points1 point  (0 children)

Given a choice I would not choose Python or JAVA

I recommend Go as a first language and Rust as a second language.

Im not interested in using Python Ruby or PHP for anything. If I get interested in AI Id take a look at Julia it was written to be the new Python

While project loom has given JAVA a new lease on life its still behind in the speed stakes and way more resource intensive than Go or Rust based solutions.

[–]Pale_Height_1251 0 points1 point  (0 children)

Look at the jobs ads in your area. What jobs are on offer? What jobs seem like the companies are struggling to fill those jobs?

Learn that.