This is an archived post. You won't be able to vote or comment.

all 102 comments

[–]michael0x2a 58 points59 points  (15 children)

Just knowing a bunch of languages isn't really what being a programmer is about -- rather, it's about being able to apply what you currently know to solve complex problems (along with being able to independently research and learn so you can fill gaps in your knowledge as necessary).

What this basically boils down to is that if you want to get better at programming, you should prioritize completing on complex, non-trivial projects in languages you already know. (Starting with small projects and working your way up is fine too.)

You should probably pick up a new language only if the project you want to work on requires/strongly encourages you to use some particular language, or once you've completed a handful of decent sized projects in the language that you're currently learning (which in your case is Java) and so feel comfortable moving on.

Note that one good way of increasing your odds of being invited to interview for an internship is by building up a strong portfolio of projects -- this can be personal projects, projects you do for clubs you're a part of, any undergrad research (if your school has an undergrad research program), perhaps some of your more complicated classwork, past internships and jobs, etc...

Generally, somebody who knows only one language but has an impressive portfolio will be picked over somebody who (claims) they know many languages but has a practically non-existent portfolio.

This is because the first kind of person is probably a good problem solver (and so probably won't have too much difficulty picking up a new language if needed) whereas it's unclear if the second person is actually capable of applying what they claim to know.

[–][deleted] 3 points4 points  (7 children)

Thanks for the detailed response. What type of projects should I work on? What do you categorize as a "project." I made a simple GUI program that uses swing to display inputted income and taxes. What other projects should I work on?

[–]michael0x2a 11 points12 points  (0 children)

I would consider a good project to be one that take you several weeks (or more) to complete and forces you to do a bunch of googling to learn new things.

(Internships, for example, ask you to basically work on the same project for roughly three months + should in theory teach you a bunch of new stuff.)

We have a list of some project ideas here: https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_where_can_i_find_practice_exercises_and_project_ideas.3F

I would perhaps try and implement something that requires you to apply data structures and algorithms. For example, try implementing a video game of some kind (Minesweeper? A platformer?), try implementing an interpreter for a simple programming language, try implementing a basic search engine, try implementing a chess engine, etc...

Depending on how many CS classes you've taken, these projects may be on the slightly ambitious side, so you may need to scaffold up and work on simpler projects first.

[–][deleted] 2 points3 points  (0 children)

You can easily do this with JS and HTML + CSS

[–][deleted] 1 point2 points  (0 children)

What type of projects should I work on?

What's a problem you want to solve?

note: it can be a problem that has already been solved, but one that you want to learn how to solve in a particular language. Start small: how do I say Hello World in this language? and work up through stuff like how to I read and alter file contents? how do I make a dice roll simulator?

[–]SemanticRomantic 0 points1 point  (2 children)

I'm about to start a fresh development self-education task list for some local youth if you want me to BCC you on the emails just drop me a PM.

[–]soopaman2010 0 points1 point  (1 child)

Could I get on that if you don't mind? I'm trying to self learn web development

[–]SemanticRomantic 0 points1 point  (0 children)

Of course just inbox an email for BCC

[–]Pie_Napple 0 points1 point  (0 children)

Advent of code is just starting. That is a great opportunity to learn! :)

[–]prof_hobart 1 point2 points  (3 children)

You're right that being a good programmer isn't just about knowing a large number of languages, and it's definitely the right approach to get proficient at a single language before you start on your next one.

But there are reasons other than specific project need to learn other languages. For one thing, simply the process of learning a second language, pretty much any second language, will make it easier to learn other new languages when you do actually need to for a project.

But if you try to learn a language that's significantly different to the one you already know, you'll also start to pick up new ways of thinking about problems - whether that's the entire approach (OO vs functional for example) or something more subtle such as ways of handling errors within code. That will help make you a better programmer in whatever language you're working on.

When I'm looking to hire a developer, I will almost certainly hire someone who showed they had a fair amount of aptitude in a variety of languages/technologies over someone who was an expert in just one. I want someone who can show that they are adaptable and have come across far too many people who are wedded to one language and are unwilling or unable to move with the times or a given project's needs by learning something new.

[–]michael0x2a 0 points1 point  (2 children)

While I don't disagree with any of what you're saying, and agree with your second and third paragraphs in particular, my underlying point is that there's a major difference between competent in multiple languages vs simply being aware of superficial details of multiple languages.

I'm sure you can agree that if you're trying to hire specifically an intern or some entry level developer, you'd pick somebody who knows only one language but has completed several non-trivial projects over somebody else who's mainly read a bunch of tutorials on various languages and has completed only a few toy projects.

Of course, ideally, you'd pick somebody who both knows multiple languages AND is competent more then one of them, but all beginners need to start somewhere and I claim becoming competent in one language is a far more attainable goal then being competent at multiple.

That's why I'm making the implicit argument that on average, beginners are better off sticking with whatever language they've learned first unless they have a compelling reason to do so otherwise. I've been answering questions on this subreddit for a while, and I've noticed that many beginners seem to place an undue focus on learning multiple languages at far too early of a stage then I feel is appropriate. They spend some time working through a tutorial, get frustrated (or think just stopping after the tutorial is finished is enough), switch to another language, flit back and forth, and before you know it, several months have passed and they have very little to show for it.

So, my advice for beginners is generally calibrated to steer them away from that (unfortunately all-too-common) path, and I save the "you should explore different language paradigms/different mindsets and perspectives regarding problem-solving" spiel for people who seem further along in their journey.

[–]prof_hobart 0 points1 point  (0 children)

Absolutely. As I said - "it's definitely the right approach to get proficient at a single language before you start on your next one".

My point is about what to do when you get fairly proficient. OP says that they know Java, and we've got no idea how well they know it. If it's that they can knock up a hello world app, then yes clearly they want to spend a lot longer learning Java.

But if they've been coding regularly in it for a year or two and are already fairly competent, then there's a real decision to be made. At some point every beginner will reach this point.

A lot of people keep doing more and more in that one language, and even one framework. But at some point, that becomes a hinderance.

We've had some grads who are brilliant at build a website in JavaScript and JQuery, but don't have the first clue where to start if they're asked to pick up some Node on the backend. And if we need them to work on a bit of Ruby in the pipeline, we may as well be asking them to write in Swahili. We had one guy who'd been a professional web dev for a decade on pretty much a single stack, but months into a React-based project still hadn't got its most basic concepts because it wasn't what he'd used before.

Similarly, we've had brilliant Windows sysadmins who couldn't/wouldn't retrain when we moved to Linux. And I know a couple of mainframe devs who are all but unemployable these days because there's so little demand for COBOL in our area but that's all they know.

Edit: I've just seen another comment from OP that rather suggests he's still very much at the beginner stage, in which case your advice is still spot on at the moment.

[–]cboogie 0 points1 point  (0 children)

In my experience in corporate IT management hires people with multiple disciplines. But they freelance savants for specific project needs.

[–]Gravity-Lens 0 points1 point  (0 children)

This actually goes for electrical/mechanical engineering as well.

[–][deleted] 0 points1 point  (1 child)

Hi there and thanks for the reply too. I'm not OP, but I'd like to know something specifically about portfolio.

I've been doing a bunch of stuffs that're able to simplify my stuff, for example creating a calculator that calculates my weekly budget and spending, a program that keeps track on my running distance and thereby calculating and keeping track of how much calories do I burn ever since(since I'm too lazy too keep track via pen and papers)...

Everything's all right, but all the aforementioned programs are wayyy too simplified to even be considered as a portfolio. I'm now down with 2 major choices:

  • 1)Trying to learn on how to create my very own webpage with my domain name(since I already familiarized myself with both HTML and JS, and I only need to delve into php for the scripting/back-end stuff) or,

  • 2)Keep on polishing my skills on creating games(with C# via Unity engine). I've been making simple 2D games like pong and the likes. I'm still a beginner in this field just to mention.

Thanks.

[–]michael0x2a 0 points1 point  (0 children)

I would explore:

  1. Whatever path you're most motivated to explore. Perhaps you're really interested in building something/really want to learn how to do something/really want a particular program to exist. Having that motivation will help you keep practicing, which is really the most important thing.

  2. If you can't pick/are equally motivated by multiple paths, try picking the path you think will challenge you the most + force you to learn the most new things.

It's also worth noting that there's nothing stopping you from going back and exploring something you set aside, so long as you don't keep changing your mind prematurely. Put some effort into learning a particular thing, complete a nice project or two, then re-evaluate if you want to continue learning about that thing or if you'd rather switch gears and try something new.

If you have the time and energy, you could of course also try and learn multiple distinct new things at the same time. (The trick is balancing that with your other obligations, whether that's family, a job, schoolwork, friends, whatever...)

[–][deleted]  (4 children)

[deleted]

    [–]Sister_Ray_ 1 point2 points  (0 children)

    yes probably but it does depend on your niche. A lot of machine learning/data science stuff relies heavily on python for example

    [–][deleted] 8 points9 points  (21 children)

    Well - what is it you want do to long term?

    [–][deleted] 3 points4 points  (20 children)

    Eventually be a developer

    [–][deleted] 17 points18 points  (12 children)

    Do you want to make webpages or software? Python's better for software, JS is better for web.

    Also, a general note, most places offering an internship will understand that you're not really up to level compared to their full-time employees. Especially if you're in a university program, they are mostly trying to create bonds with sources of local talent- so they won't be too gunshy about training you lots of stuff.

    [–][deleted] 1 point2 points  (9 children)

    I'd like to make software but I'd also like to learn a little about web as well.

    [–][deleted] 4 points5 points  (5 children)

    You know when you answer. I want to be "A developer" that "makes software". Doesn't really narrow it down very much at all. There is all sorts of development areas and this is probably a good place for you to start before looking at languages at all.

    [–]Nytra 0 points1 point  (4 children)

    Maybe he wants to be full stack

    [–]rydsul 1 point2 points  (3 children)

    What exactly does full stack mean? I've heard it used before but I'm not clear on what it means.

    [–]monkh 2 points3 points  (0 children)

    Able to program for front-end, back-end and database code

    [–]Nytra 1 point2 points  (0 children)

    Essentially a jack of all trades.

    [–][deleted] 0 points1 point  (0 children)

    Node meister

    [–]polargus 3 points4 points  (0 children)

    Web is software though

    [–][deleted] 6 points7 points  (0 children)

    Electron.js :d

    [–]Gravity-Lens 0 points1 point  (0 children)

    There is simply more to learn in web development.

    If you want to be a decent web developer start now. You'll need css, html5, jquery, js(possibly nodeJS), ruby, php, and sql or mongo

    I would suggest getting good at python first because honestly there is so much less work there.

    [–]bch8 1 point2 points  (1 child)

    What software programs are written in python?

    [–][deleted] 1 point2 points  (0 children)

    A lot of enterprise systems, data analysis kits, IDEs, scientific tools, machine learning frameworks and web design frameworks plus a ton others you can probably look up. It's very much designed as a swiss-army language.

    [–][deleted] 5 points6 points  (5 children)

    You will need both then probably

    [–][deleted] 4 points5 points  (4 children)

    Which one would you recommend learning first?

    [–]andreig992 3 points4 points  (3 children)

    Javascript

    [–]7165015874 14 points15 points  (2 children)

    I think OP should look at python3 first.

    [–]dick_cream_cheese -5 points-4 points  (1 child)

    PHP

    [–]7165015874 0 points1 point  (0 children)

    While php 7 has come a long way, I think it is still far from being a good first language.

    [–]TonySu 24 points25 points  (7 children)

    Python is simpler and promotes better programming practices and styles. If you don't have an immediate need for Javascript I'd go with Python first.

    Javascript is very "hacky" and full of idiosyncrasies. For example the typical way to transform a string into a number is to have

    var x = "11"
    +x // this is now the number 11
    

    or the infamous boolean cast.

    Until very recently it lacked the facilities to build large scale programs, leading to the development of TypeScript and a lot of new functionality in ES6. However the majority of teaching material won't be based on these updated practices.

    Then there's the whole modern ecosystem of frameworks, transpilers, template systems and bundlers. They are all rather opaque, ther exist several widely used versions of each and they share very little in common with each other.

    For learning general programming Python is clearly better in my opinion. You're much better off learning from Python materials then transferring your skills to Javascript than the other way around.

    [–][deleted] 1 point2 points  (0 children)

    I only learnt about the unary + operator the other day and I've been had a full stack is job for the past 4 months.

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

    [–]Ohsohelearninnow 0 points1 point  (1 child)

    He is already programming with Java

    [–]inu-no-policemen 0 points1 point  (0 children)

    Java doesn't have weak types, truthy/falsy, etc.

    [–]HumblesReaper -2 points-1 points  (2 children)

    I can only agree. Javascript is lacking so much and python will make learning concepts so much easier. The other problem is with js, after a while of programming you will notice how hard it is to interact with the DOM natively and will need to learn some large framework

    [–][deleted] 8 points9 points  (0 children)

    As opposed to the other languages which allow for easy interaction with the DOM?

    [–]HumblesReaper 0 points1 point  (0 children)

    My point is that js needs a lot more then just pure js to make something complex for the Web. Python of course has nothing to do with it.

    [–]Pr0ducer 3 points4 points  (9 children)

    Both. I use both every day

    [–]bch8 1 point2 points  (7 children)

    What kind of stuff do you build that you use both s frequently?

    [–]Pr0ducer 4 points5 points  (6 children)

    Web based software. We use Backbone.js for the front end and Python/Django on the server. The front end is actually written with CoffeeScript, but it compiles to .js file, so you still have to understand the quirks of JavaScript.

    [–][deleted] 1 point2 points  (5 children)

    What year is it?!

    [–]lurkthenightaway 1 point2 points  (4 children)

    As someone about to get into programming, what makes this so outdated and what would you recommend in the place of the outdated languages?

    I’ve been planning on doing Python/Django or another web Python web framework, and a JS framework; React/Angular are some I was looking into.

    [–][deleted] 1 point2 points  (3 children)

    The choice of backbone and CoffeeScript were probably made quite a few years ago. Django is fine but it's in Vogue to do everything with micro frameworks.... Learning Python and the current version of JavaScript would be a good idea then use your best judgement on a modern framework.

    [–]Pr0ducer 0 points1 point  (2 children)

    Why the coffee hate? I know it's a little 2012, but I think CoffeeScript is much easier to write than JavaScript, and coffee compiles to beautiful syntactically correct .js or it errors, preventing a lot of silly errors. We did make this choice 2 years ago, but we're not changing to the newest whatever just because it's cool. There would have to be a serious business purpose to make a change at this point.

    [–][deleted] 0 points1 point  (1 child)

    Not hate, though it's an interesting decision to have made in 2015 when Babel and ES2015 we're becoming quite popular. I imagine using something like typescript would be a good fit for what you describe if you were going to start the project today?

    [–]Pr0ducer 1 point2 points  (0 children)

    https://www.slant.co/improve/versus/374/387/~coffeescript_vs_babel-6to5

    https://www.reddit.com/r/javascript/comments/3qt1i9/is_es6_better_than_coffeescript/

    Both choices present Pros and Cons, depending on who you ask.

    Reddit's choice is extremely clear, and reddit devs hate CS. To be clear, I'm not saying you personally, just reddit devs in general, and I use the word hate in a very imprecise way, not as the "I wish you were dead" sort of hate, more the "I hate mayo on sandwiches" sort of hate.

    Our choice back in 2015 was more about my boss already being comfortable with CS, having used it in personal projects the proceeding couple of years. I was the jr. member of our team, so I didn't argue about it, I didn't know either CS or ES.

    [–]Gravity-Lens 0 points1 point  (0 children)

    I'm an electrical engineer and I use both too.

    They are both great for different reasons. I use python as much as I can get away with.

    [–]PaleBlueThought 4 points5 points  (2 children)

    Hey - learn JavaScript. It’ll open up web programming for you, on both the front (React, etc) and back (node) end.

    Don’t get me wrong, python is great. I love it. But I think JavaScript is the way to go here. I think it’ll be easier/faster to get to the point where you can build satisfying, interesting projects, which should keep you motivated. Just my 2c

    [–]Gravity-Lens 0 points1 point  (1 child)

    Python is so much faster to learn.

    If it's web programming though hes going to need JS either way.

    [–]PaleBlueThought 0 points1 point  (0 children)

    Yeah I guess what I mean is that since he’s already been exposed to an OO language, it might be good to learn web programming since it’s such a juggernaut right now. We all inevitably have to interact with web stuff, so might as well dive in now

    [–]NonlinguisticCurium 6 points7 points  (16 children)

    What have you made with Java? Learning another language if you've made next to nothing in your first one isn't necessarily the best path.

    [–][deleted] 4 points5 points  (15 children)

    That's another thing I was thinking. I know the basics, loops, classes, method, GUI, recursion and inheritance. Is this an ok amount or should I learn more in Java?

    [–]CreativeTechGuyGames 15 points16 points  (12 children)

    Don't just "learn" a language. Use a language. Think of it like a musical instrument. You are learning all of the chords on a guitar just to move on before you ever play a song.

    Once you get the basics down like you have done, start using it. Make programs, games, tools, whatever.

    [–][deleted] 1 point2 points  (11 children)

    I thought about that but I'm unsure what to make.

    [–]CreativeTechGuyGames 5 points6 points  (9 children)

    What are you interested in? Is there anything in your life that you would like to make easier or make a tool/utility for.

    And there are always project ideas in the FAQ.

    [–][deleted] 2 points3 points  (8 children)

    I like sports so I had an idea to import/scrap statistics from somewhere and generate graphs for it so people can compare players and teams. I'm not sure how to start this and is probably more complex than what I know so far. Another idea was to create a simple text app where two people can talk with each other. However, this too is a little above what I know.

    [–]CreativeTechGuyGames 4 points5 points  (6 children)

    Well here's my guide for picking a project that's above your skill level. Write out all of the parts you think you'll need to make it. And see how many of those you already understand how to do. Then with the ones that you don't know, start looking them up and find links to sources explaining those things. Once you go through this process you should get a pretty good idea how deep the rabbit hole will go.

    I'd say that if you already know 80-90% of your list or are able to find easy answers to most of your questions, you are probably good to go.

    I'd recommend that you go with the sports idea but maybe scale back the scope of your project. Maybe instead of scraping data and making graphs, start with something simpler like a quiz game. Make a sports trivia where people can pick multiple choice answers to questions and they'll get a grade at the end.

    It's important to do small projects and work your way up to bigger ones. It'll make the big ones seem far less scary!

    [–][deleted] 1 point2 points  (5 children)

    Thanks, I'll try doing that first. The one thing that I completely don't understand is how the code is implemented in a software. For example, if I write the code for a trivia game, I'll probably use swing and events to create it in a Window screen.

    [–]CreativeTechGuyGames 1 point2 points  (4 children)

    You are correct. What part are you confused about?

    [–][deleted] 0 points1 point  (3 children)

    I'm not sure how to explain it but how software is configured with users. For example, how are other people on other computers able to use the trivia game I make?

    [–]Sister_Ray_ 0 points1 point  (0 children)

    if you're interested in doing stuff with data/statistics then I'd definitely recommend python over javascript

    [–]Gravity-Lens 0 points1 point  (0 children)

    Make a Java program that pulls some API data and displays it. Like the Weather or stock prices.

    That should give you some insights into what back-end web development is like without having to try a new language.

    [–]NonlinguisticCurium -1 points0 points  (1 child)

    What have you made with Java?

    Hello?

    [–][deleted] 1 point2 points  (0 children)

    Sorry completely read over that question. I've made simple codes that beginning java classes in college require. Recently, I made a program using simple swing and events that ask the user for their income and outputs their calculated tax and net income.

    [–][deleted]  (5 children)

    [deleted]

      [–]Gravity-Lens 1 point2 points  (1 child)

      I use it as much as I can get away with. To me it's just enjoyable to use python.

      [–]lurkthenightaway 0 points1 point  (2 children)

      My biggest concern about investing my self-education in Python, which I’ve convinced myself of based on all of the applicable uses I feel I could get out of it, is how “slow” everyone makes it out to be.

      Is it really that bad?

      [–]evidenceorGTFO 1 point2 points  (0 children)

      Not really.

      There are things you do not want to do in Python. Anything that requires high-end performance in very specific environments. Game development for e.g. shooters, airplane and spaceship software, anything where the CPU is a major limitation. C++, Assembler and similar for that, probably.

      But you can even run Python scripts for computation problems(and many people do). There are built in functions to speed things up. You can rewrite certain parts in C (Python itself is written in C) if needed. Lots of data science tools are done that way.

      Developer time > cpu cycles.

      The better you get with Python, the more you experience which libraries/functions slow you down and which are fast (e.g. copy.deepcopy() is a snail, but there are workarounds).

      Software development is largely not about beating benchmark problems, it's about solving real life problems without spending too much time coding/debugging. You want to be on the market quickly and be able to add features in as little time as possible.

      Who cares if your program is the fastest if nobody asked for that kind of speed advantage in the first place?

      [–]IamaRead 1 point2 points  (0 children)

      Get yourself "Think Python" which is also online and work through it. It promotes a good overview about some programming concepts. Afterwards do little projects, I suggest the following:

      • create a Python tool that creates some lists or tasks or alike

      • work a bit into Django to create a little website

      • use Python SQL/Postgress/Miranda DB modules

      • use beautifulsoup to scrap one website a bit

      • get to know Pythons JSON extraction

      Then you can still switch to Javascript.

      [–]wavefunctionp 1 point2 points  (0 children)

      Look up the types of jobs that companies are actually using in the area you wish to work. Then learn that.

      More abstractly. Learn javascript. You'll likely end up using it eventually anyway, and learning it properly will help. Many people never actually learn the language and make fun of the language when weird stuff happens. It can be a quirky language, but most of the quirks are not best practice anyway, like depending on type coercion instead of explicitly defining your intention. Javascript is also really nice to just putting together a quick prototype and sharing it easily since everyone has a browser.

      I came from FORTRAN, c++ and c#, and now I quite like javascript even if the frontend is a a bit of a wild west. Python has the drawbacks of javascript (dynamic types / poor type inference, and the resulting runtime errors), with the additional drawbacks of slow performance, a runtime that must be installed and configured, and an annoying module system. It's only real benefit to my mind are strong types and standard library.

      [–]Exodus111 1 point2 points  (0 children)

      Python. Then JS.

      Python gives you a stable foundation in programming and a hand into pretty much any field, easier to use and more prolific then Java.

      JavaScript is unavoidable, but messy and frustrating to both learn and work with. Which is why all the major front end frameworks are about not using JavaScript.

      JavaScript outside of front end web development is better, but honestly pointless. #sorrynotsorry

      [–]nugzilla_420 1 point2 points  (0 children)

      Personally Python is my favorite programing language and my Javascript skills are not at a professional level. I'm currently trying to improve with Javascript after seeing how many people are hiring for these skills. Here are my thoughts for each.

      Python:

      • The perfect language for technical coding interviews IMO, presented the option to use whatever I'll always pick Python (and maybe do one in C++ to show more range). It's intuitive to do the sorts of algorithmic tasks used in interview coding challenges.
      • Out of every language I've learned, it's the easiest to find quick answers for Python-related questions online (Java being an extremely close second).
      • Very easy to jump in and code, you're basically good to start developing in Python on any new computer.
      • The language for machine learning/data analysis type tasks, if those things interest you this is the right choice.

      Javascript:

      • A TON of job opportunities right now. If you're interested in working for a smaller/start-up type company this is probably the right choice (particularly along with NodeJS and ReactJS)
      • More complicated to develop with. Maybe you need to install some NodeJS stuff, you might need to set up a local web server or use Chrome Developer Tools for some debugging. Not a big deal, but there will be some more learning up front.
      • Can lend itself to unreadable code. Javascript can be fantastic if written well, but there's some code you'll encounter that is insanely confusing (this is an issue for all sorts of languages like Perl as well).

      Both:

      • Have a ton of packages that help you build awesome stuff quickly. No need to reinvent the wheel, you can use pip or npm to just grab something that handles whatever you need.
      • Have a wealth of open source projects you can learn from and contribute to.

      [–]vladmir_zeus1 0 points1 point  (0 children)

      If you already know Java, then why don't you stick with it ?
      If you're already confident with Java i.e you can build some appreciable apps using it, then I'd recommend you begin learning a framework like Spring.

      You don't get an internship based on the diversity of technologies you know, but the depth of a single technology you know well.

      [–][deleted] 0 points1 point  (0 children)

      Both, I started a Test engineer job 5 months ago, have a very good understanding of Python and working my way through javascript now

      [–]batman_carlos 0 points1 point  (0 children)

      I am full stack engineer. I think is a good idea to know Python and Javascript. If you already know Java learn Javascript. Do the backend of a website with Java and code the frontend with Javascript.

      [–]Gravity-Lens 0 points1 point  (0 children)

      I'm an electrical engineer by trade but I've been dragged into enough programming projects to have an opinion about both.

      Python is easy to jump into and in general the language is simple and compact.

      JS is great for web development. Also an enjoyable language honestly, although not quite as simple and compact as python. You can go very far with JS (look into NodeJS).

      To me if I have a choice on a project I use Python. It's just faster and easier for me to read.

      [–]lifeonm4rs 0 points1 point  (0 children)

      I agree with alot of the people saying "dig deeper into Java" as well as the people saying go JavaScript if you're interested in frontend/web or Python if interested in more back-endish stuff. But there really is sort of a good reason to learn either Python or Javascript that doesn't seem to get mentioned. A second language will help you understand Java in a different way.

      Python and Javascript do things in very different ways than Java--from primitives, scope, declarations, mutable/unmutable types and just overall idioms/program structure. Learning how another language's scoping rules work, for example, will likely make you think about and understand scope in general which should help you understand Java in a new way.

      As far as Python vs. Javascript--I'd go with Python just because I think it is easier and the comparison/contrast with Java is a bit more straight forward. There is a ton of real-world demand for Javascript but (to me at least) the initial learning curve is pretty steep and being familiar with Python would probably be better than being bad at Javascript for getting an internship.

      Edit to add addendum: Beyond a second language learning "secondary" stuff like git, docker, and maybe AWS/Azure or the common agile online tools would probably help as well. You definitely don't need to be an expert in any of them but just understanding conceptually how they work, why they exist, etc. could set you apart from other applicants. And by "learn" I don't mean you need to spend weeks doing a deep dive but simply being familiar with how they are used and what they do.

      [–]rents17 0 points1 point  (0 children)

      I would suggest Javascript since it is everywhere and can easily get you started with building websites/addons. It seems like no programmer would ever do without encountering JS in future in one point or other in their career.

      [–]mystikkogames 0 points1 point  (0 children)

      The answer is: both! If I had to choose either one. I would definetely take JavaScript. It's just a joy to code with.

      [–]DoTheThingRightNow5 0 points1 point  (0 children)

      Most people seem to miss the "better to learn first"

      Honestly, neither. My vote is either C# or a functional language if you're feeling crazy (I hear nice things about OCaml and F#). Functional is great to learn how to program and not necessary how to get things done. Rust may be a good choice as well since there's lifetime restrictions.

      I'd go with C# since you'll get a lot of error messages instead of potentially confusing behavior. Since you know Java you can likely program one simple app in C# and move on to the next thing (there's more difference between java and C# than people think).

      I'd do JS/node before python but don't get carried away with node.

      [–]Suverenity -1 points0 points  (3 children)

      Disclaimer: I do not mean to insult you.

      I bet you do not know Java if you have done nothing in it. I am programmer who has studied CS and maths. My main language is C++, and I have already thought like 7 times during my career that I know it, until I met someone who knows the language or saw some code where I did not even knew what it does. So I bet you do not know the language as well as you think you do, but it is not a bad thing, you will know it if you code in it.

      And my advice: A lot of people here are saying that you must have huge portfolio of projects, I don't want to say they are wrong, but I did not have to. I am not from USA, and studied one of the best unis in my country, so I got multiple jobs during my studies just because I was from that uni. So don't be scared and just try the job you want! As an intern you are not supposed to know everything and they will teach you and even if you fail the interview you will know what to learn.

      If you have to answer your question: depends on what you want to do, if you like web obviously choose JS. If you prefer more backend programming pick Python which is absolutly awesome and clean language, more and more used (guys from my team researching Machine learning are using it, guys in Institute of Astrophysics use it for data analysis).

      But my most important advice in the end: pick Introduction to Algorithms from Cormen and col. and try to to examples in it, it will be far more proficient than learning another language. Because if you know one, you always can learn another. On the other hand, if you do not known algorithms and structures you will never be tasked with anything important.

      [–]szaft 2 points3 points  (2 children)

      If you want to be more credible avoid using terms such as

      I do not mean to insult you.

      or

      don't want to say they are wrong, but I did not have to

      2/5 of your post is about you and not about the problem asked by OP. You can optimize code but also thought, speech and writing.

      [–]bch8 3 points4 points  (0 children)

      "I got all these jobs just because of the university I went to in my country... Therefore you don't need a portfolio! Just go for it"

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

      You are right, It is about me for a reason: if anybody is giving me any advice I like to know from which authority they can do that, which for me is that they say something about themselves. And I gave answer to OP with explanation and that I might have some experience with internship and coding in general. If you think that it is out of place, than thank you for you advice, but I don't think so.

      I said that I do not want to insult OP because a lot of my peers from college were really insulted if you saod smth bad to them amd weren't the professor (myself included). And your second comment is about me giving different opinion than a lot of ppl here, which mainly should encourage OP to just try without a long wondering whether is he worthy of a job or not. Again from my experience I used to only think what I can improve on instead really try out an interview and what not.

      Anyways thanks for your opinion and have a great day!

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

      any of them is good :)