Jump to content

question for the professional developer's

Ripred

I'm not totally sure this is for this thread but it is coding related so, anyway I've been learning to code, currently in python and taking cs50 course, also dabbled in Java last year, all this is partly for my own uses and also for potential side career, maybe fulltime if things go well, so with that thought i was perusing through some job boards just to see if there were any patterns of developer skills or specialties that are most in demand, generally just try to get an idea of what direction i should focus on besides my own interests to land one of these gig's in the future and was a bit shocked to find about 70% of the boards are saturated with Java developer, sr Java developer, backend developer-must be familiar in Java, so on and so forth...So my question is once I've finished my current classes and am comfortable in python, should i swing back and lean hard into Java? from the stand point of the job boards Java, Python and their associated frameworks seem to be on top, followed by all the C's, just like to get some inside perspective from people already living that life, is Java where the money is currently? if so any ideas as to why, like does the language suit the needs of all these companies, or to do with some of the shady business dealings from oracle I've read about, forcing companies to be locked in?  either way from an outside perspective looking at the employment demands it seems like these are the two top languages to be familiar in, scrolling the internet doesn't offer much clarity because every coder/programmer seems to live and die by there favorite language, I'm looking for opinions a little more real world unbiased as much as possible from those doing this for a living

 

                          Ryzen 5800X3D(Because who doesn't like a phat stack of cache?) GPU - 7700Xt

                                                           X470 Strix f gaming, 32GB Corsair vengeance, WD Blue 500GB NVME-WD Blue2TB HDD, 700watts EVGA Br

 ~Extra L3 cache is exciting, every time you load up a new game or program you never know what your going to get, will it perform like a 5700x or are we beating the 14900k today? 😅~

Link to comment
Share on other sites

Link to post
Share on other sites

I've got about a decade of professional coding experience.

I find that Java and C# are pretty interchangeable. They are both full fat languages with massive sets of libraries behind them. Takes a bit of effort to switch between them but it's not a ton of effort. I primarily professionally code in C#. If you want to work in the web dev sphere, either is a great place to focus effort

As for Python, dang, it's POWERFUL, but ultimately a lot of that power comes from precompiled binaries often written in some flavor of C. But it's most useful in building pipelines. If you want to work in data sciences (computational biology, any physics/astronomy, most geology/oil/water, etc.) it's a really good tool, but know that there is *very* little money in those fields without a PhD. That being said, if I'm writing something personal and durable that can't be easily done in bash/cmd/ps, I always reach for python.

Ultimately, the best advice is to stay language agnostic. Learn the fundamental concepts of programming: boolean logic, objects/interfaces/inheritance, lambda functions, etc. Then apply those ideas with whatever syntax the language requires. Heck, there are some super cool things being done with Rust and LUA and Go. They all have their strengths and they all have their weaknesses, but never let anyone tell you that one language is better than all others, even PERL has its place... probably.

5950X/3080Ti primary rig  |  1920X/1070Ti Unraid for dockers  |  200TB TrueNAS w/ 1:1 backup

Link to comment
Share on other sites

Link to post
Share on other sites

I am in a similar situation, I was asking myself the same question a few days ago. I hope that someone who has experience in the field answers the post to have an idea of which path would be better to follow.

Link to comment
Share on other sites

Link to post
Share on other sites

I used to be an embedded dev, but moved to data because it's easier to get remote jobs and pays better, so I've been mostly doing stuff in Python for the past 5 years or so.

 

Do you like one language more than other? If so, they just continue with it and you'll likely land a job nonetheless. However, if you don't really care about languages and just want to build stuff/get a job, then go for the language that has more openings available in your area.

 

Java is big mostly because it's old and better suited than C for some enterprise-ish software, so it got lots of traction and now has a shit ton of inertia. Performance is good, the language itself is improving, and many people learn it in universities, so there's not much reason to not go with it. Similar how python has lots of inertia in the data world, even your blazing fast C/Rust/whatever lib has to have a python API on top of it to get used.

 

I also see lots of job openings for javascript/typescript, php and C# (which is pretty similar to java, as noted above). Go also has some job openings.

 

Not as common, but not impossible to find, are jobs in some more niche stuff like Rust, Elixir and whatnot.

 

So just stick with you like best, try to learn a bit about other languages so you won't be 100% lost in case you have to deal with them, and focus on learning what you like best/get paid better.

 

To complement what @OddOod said, languages are tools, having a favorite hammer or preferring a hammer over a screwdriver sounds dumb, doesn't it? So just use the right tool for the job at hand and that's it.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, OddOod said:

I've got about a decade of professional coding experience.

I find that Java and C# are pretty interchangeable. They are both full fat languages with massive sets of libraries behind them. Takes a bit of effort to switch between them but it's not a ton of effort. I primarily professionally code in C#. If you want to work in the web dev sphere, either is a great place to focus effort

As for Python, dang, it's POWERFUL, but ultimately a lot of that power comes from precompiled binaries often written in some flavor of C. But it's most useful in building pipelines. If you want to work in data sciences (computational biology, any physics/astronomy, most geology/oil/water, etc.) it's a really good tool, but know that there is *very* little money in those fields without a PhD. That being said, if I'm writing something personal and durable that can't be easily done in bash/cmd/ps, I always reach for python.

Ultimately, the best advice is to stay language agnostic. Learn the fundamental concepts of programming: boolean logic, objects/interfaces/inheritance, lambda functions, etc. Then apply those ideas with whatever syntax the language requires. Heck, there are some super cool things being done with Rust and LUA and Go. They all have their strengths and they all have their weaknesses, but never let anyone tell you that one language is better than all others, even PERL has its place... probably.

thanks for the reply, so i've heard that a few times to be language agnostic, does this mean even if one were only familiar in one or two languages but have a strong understanding of the concepts, they can still get coding work, even if its a job using a language you've never tried?

                          Ryzen 5800X3D(Because who doesn't like a phat stack of cache?) GPU - 7700Xt

                                                           X470 Strix f gaming, 32GB Corsair vengeance, WD Blue 500GB NVME-WD Blue2TB HDD, 700watts EVGA Br

 ~Extra L3 cache is exciting, every time you load up a new game or program you never know what your going to get, will it perform like a 5700x or are we beating the 14900k today? 😅~

Link to comment
Share on other sites

Link to post
Share on other sites

Being familiar enough to do work in a language is usually sufficient to get your foot in the door with a developer job. The thing is: each company is going to have its own SOPs (Standard Operating Procedures) for how things need to be done. So even if you know Java really well, it's likely that you're going to have to change some of your habits to fit with the SOPs of the company you end up working for. The key isn't to be able to do everything in the language, it's to be able to do enough that they can set you loose on more basic tasks to get your feet wet while they train you into your role.

 

I ended up getting a job using PHP. It was not my strongest language (that would actually be Java, funnily enough) but I knew enough to code my own website, and the team was impressed with the work I did on it when I showed them the code, which is why it's important to have a diverse portfolio if you've done work in multiple languages.

 

If jobs using Java are very common in your area, I'd recommend becoming familiar with it to give yourself a broader range of options. You'll also want to be familiar with the ideas of object oriented programing if you aren't already, as that's essential for working with Java. For day-to-day programming, the biggest differences to learn about is going to be "typing" (Python is "loosely typed" as in, you don't need to specify what a variable is, but in Java, until recently - so a lot of code you encounter will be this way, you absolutely had to say if some variable was referring to an integer, a String of characters, an array, etc.), permissions (in Java, methods (functions) and variables have a permission - public, private, protected, or default - that permission determines which other classes are allowed to access them), and what it means for a variable or method to be "static" (the variable or method is not associated with a specific object). Once you get past those key concepts, the rest of it should feel pretty familiar to you coming from Python - within reason, obviously there are more nuances, but those are the big ones.

 

Do some projects, keep the code legible and presentable with comments, and throw it in a portfolio of projects to show to prospective employers.

Link to comment
Share on other sites

Link to post
Share on other sites

15 minutes ago, Ripred said:

thanks for the reply, so i've heard that a few times to be language agnostic, does this mean even if one were only familiar in one or two languages but have a strong understanding of the concepts, they can still get coding work, even if its a job using a language you've never tried?

Honestly, 90% of what I use in my day to day job I learned *on* the job. Book learnin' and lecture can only take you so far, everything else is just time behind the keyboard.
If you're really gonna make a go at it, I'd commit and go for an internship after nailing the basics. I learned more SQL in a week of doing support tickets than I did in two semesters of database classes. I haven't taken a C# class in my life but that's >80% of my professional output. 
So, can you get work in a language you don't know? Yes, but mostly at the entry level. I did get dang far in an interview process for a senior level Go position after spending 3 hours learning stuff, but that's a rarity. 

Oh, and for internships, you really wanna hone your soft skills. Get good at talking to people. Active listening and empathy are learnable skills that will pay dividends for you every day for the rest of your life. In fact, I would say that the most valuable class I took in my 7 years of college was Improv for Engineers.

5950X/3080Ti primary rig  |  1920X/1070Ti Unraid for dockers  |  200TB TrueNAS w/ 1:1 backup

Link to comment
Share on other sites

Link to post
Share on other sites

More of something is not the whole picture. You should also look at the demand side. There might be many qualified java developers in the market who compete for the same roles. 

 

Interestingly enough, one of developers that has the biggest demand and supply mismatch is COBOL devs and perl devs. No one wants to code in these languages so no new comers and all the senior devs are now retiring leading to a huge spike of unfulfilled roles and positions even if you see very few job postings online.

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

As mentioned by others, if you know how to program then the specific language is almost irrelevant. I wouldn't spend all my time coding in something ultra obscure like Zig if I were looking for a professional career, but as long as you have some background in a fairly popular language like any of the ones you mentioned you'll be fine.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

My background/degree is in Physics, but I taught myself programming starting in high school and took a few college courses. Not long after college, I started pursuing a career in software development. I'm 15 years in now.

 

As others have said, fundamentals and programming concepts are far more important that the languages you know. With the right fundamentals, learning a new language is something that can be done basically on the fly. I got my start with TI-Basic and C++. My first job was working in PHP and Javascript, but with an element of Android (Java) and iOS (Objective C). From there, I pivoted and focused on mobile development which took me in the direction of Kotlin. Even as a primarily mobile/Kotlin developer now, I'm still given tasks that involve other languages, like Python, Go, and Ruby.

 

My one big recommendation is find something you find interesting and learn whatever the language is that goes with that. I had a budding interest in mobile tech as that was emerging, and it's what led me to become a strong Java developer.

 

If you're wondering where the money is right now, it's in AI/Machine Learning, which is dominated by Python. But again, understanding the fundamental concepts, algorithms, and patterns relating to AI is more important. In my personal opinion, I think AI is a bubble primed to pop in the next few years. Big money in it now, but as it matures into actual products with profit requirements, general consumers are going to lose interest, and then so will the investors. If it's a field you find interesting, go for it, but don't get into it just for the money.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×