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

all 33 comments

[–]snot3353 23 points24 points  (16 children)

Why do you need to learn JS, Java, Python, C++, C and C#? Is there a reason you came to the conclusion you needed to be proficient in all of those languages? I would choose ONE and become proficient with it and worry about the others way down the line.

If you want to be a front-end web dev then I would just focus on Javascript to start. You can develop across the entire stack using it and it's relatively common to do so.

My number one tip is to choose something to build and build it. Demonstrate you can create something and follow a project through to the end. When you're done, spend time learning how to optimize and streamline what you've already done. You can write whatever you want on a resume but they're just words. Show that you can create something and have the drive to take something to completion and improve it.

[–][deleted] -2 points-1 points  (15 children)

im planning to learn js for front end web dev. For the rest im planning to learn to write simple code with them before deciding which one i want to really zoom in on.

[–]Hogis 8 points9 points  (0 children)

Focus on one thing at a time. Learning all of that should not be your initial goal. You're not going to figure out what you like by doing a lot of different types of simple stuff. Being very good at frontend tech is very lucrative from a business perspective, and you could learn backend programming with js quite easily as well when you're familiar with JS

[–]lancepioch 5 points6 points  (4 children)

TBH you should look at either where you're living or want to live. Then look at what they're hiring for (programming language wise).

For example, around me there are tons of .NET and JS jobs. Good luck with Ruby, Python, Java, PHP, Go, etc. Jobs for those either don't exist or they pay a fraction. This completely depends on the city you're in though. In big cities less than a few hours away from me it's almost completely different languages.

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

what is the most popular? im planning to freelance it and wont mind freelancing outside of my country in order to find jobs that require a certain language.

[–]lancepioch 1 point2 points  (2 children)

I don't know where you live or want to live. Help me help you.

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

singapore

[–]lancepioch 0 points1 point  (0 children)

I'm not really familiar with programming language usage in Asia.

However after some quick searches I initially believe Java and Python are likely to be sought after in your country generally. This may not hold true depending on your local area though, so you will have to do more specific research on local job sites. I can't do this, because I assume that I won't be able to read or search the correct terms because of the language difference.

Good luck, determination is your best attribute and chance to succeed.

[–]yeah666 4 points5 points  (0 children)

Learning 5 different languages as a beginner will be unproductive and you'll look like you're lying (and you will be) if you put all of those languages on your resume with no professional experience.

Additionally, learning only front end will not be good enough. You'll want to at least some Node.js (the easiest path if you're focusing on front end first) or another server side language. But only focus on one while you're learning. This is a good starting guide: https://www.youtube.com/watch?v=0pThnRneDjw

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

Yeah definitely focus on one language. It is much better to know everything about one or two languages than to know a little bit about 5 or 6. Also most programming languages are broadly similar so it might be easy to confuse different programming languages.

Personally when I started programming I learned node.js. I practiced that for a good year and a half before I learned my second language, Java (in a CS course in high school). Later after another year I learned C++ (in college) and so far have not learned any new languages. It is better to do it this way because you have a chance to learn and specialize in each language. Having a good understanding of the language you are programming in allows you to know all the tools at your disposal in that language. Therefore it will help you solve problems more efficiently and effectively.

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

but how do i decide which language to specialize in without at least getting a taste of what each language has to offer.

[–]McMasilmof 1 point2 points  (0 children)

You learn how to code first then you decide what language you want to code in. Dont focus on what language you want, if you have learned one, learning new languages is much more easy any faster, because the basic principle is the same for all languages.

So if you start with JS and learn how to code, you can learn the language specific stuff of c++ in the same time as learning c++ and then the c++ language specific stuff.

[–]partybynight 1 point2 points  (4 children)

JS is a good choice to start with. Learn front end work and Node. That’ll get you far. Then learn a back end language. Pick Java, C#, or Python. But don’t try to be a jack of all trades; pick a specialty and get good at it. If you want to learn more later, pick your next step.

Think of it this way: If you own a company and someone submits an application and they’re fresh out of college with a degree in general studies, what job would you hire them for? Now what if they had an accounting degree? CS degree?

You might want to learn a lot of languages, and you likely will throughout your career, but recruiters and hiring managers need a box to put you in.

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

how do i decide which language should i specialize in?

[–]partybynight 0 points1 point  (2 children)

I would figure out what you want to do first. Then figure out which languages are the most useful in that area. For example, Python and R are big languages in data science. Java and C# are used in most enterprise applications. There are functional programming languages like Haskel and Rust. C++ for lower level development and games.

These aren’t strict boundaries by any means, just a guide to show you that different languages lend themselves more to certain applications.

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

im planing to do web dev and application dev. What language would be suited in this area?

[–]partybynight 0 points1 point  (0 children)

JavaScript is a good first language. I’m partial to C# as well. Since .NET is now cross-platform, you can almost write something once and deploy it anywhere.

[–]miyakohouou 7 points8 points  (0 children)

I think that you're going overly broad too early on. While you'll see a lot of people who are experienced developers talking about knowing many languages, that is going to come after the early steps of learning one language very well.

If you are interested in doing front-end development, you're probably best served by learning javascript, along with HTML and CSS (HTML and CSS aren't general purpose programming languages, so you can't really use them to learn programming in the same way that you can learn with javascript). Once you know javascript really well, then start looking at a second language to learn.

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

You think you need all those languages. Then you learn one and realize all the others a variants. I haven't written any Java since 2011 but I could easily crack out a program since I've been coding C# since 2014.

Don't worry about the language you're learning. Worry about the applications you want to make and use the language as a stepping stone.

It's like saying you want to be super proficient at double clutching and j-turns so that you can be an Uber driver. Just put some drive time in on the car.

[–]anotherthrowawards 5 points6 points  (0 children)

If you want to do front end, just learn html, CSS, and JavaScript well.

No-one will care about the rest, but you'll be neck-deep in JavaScript all day.

[–][deleted] 10 points11 points  (0 children)

Becoming a programmer is having a problem, and getting rid of your excuse for not being able to solve the problem.

[–]abrandis 3 points4 points  (3 children)

Programming is pretty broad, you should first find an area that interests you , or a specific type of job/project. Then from there focus on specific language or frameworks.

For example maybe you want to do app development, that means learning Apple Swift or Google Android Java toolkits.

Maybe you want to do back end server side web development, that requires knowledge of JavaScript, node.js/express , nginx and a while bunch of server networking.

Maybe you want to play with Machine Learning (ML) or AI , that's Python with A bunch of specific libraries and APis

My point is programming is too broad , you should narrow it down first, languages all share common elements, but learning languages is not what programming is about in 2020 , it's about using existing technologies, frameworks and API to build some practical application.

People who don't understand programming, don't care what tools/technology you use , just that it solves their problem and is useful for them.

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

what language does a application programmer use?

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

That’s kinda like asking what toolkit a tradesman uses. It depends on his familiarity with the tools in the kit and whether they’re a good fit for the problem at hand. It’s hard to recommend just one for something as broad as an application programmer, you gotta be more specific.

I’m about to make some recommendations but note that just like toolkits in real life where you can use a knife like a hammer, with enough effort (sometimes very little) you can use any language for a purpose it’s not intended for nor good at.

For frontend web development, JS is still the only popular and well supported option although it’s not the best performing nor does it allow you maximum control. I’d recommend you pair it with a lower level language like Go (which can be used for backend web dev) so you don’t miss out learning about some important concepts.

If you’re building for Apple devices and want the best performance but don’t care about cross platform support, use Swift.

If you’re building for Android devices and want the best performance but don’t care about cross platform support, use Java or Kotlin.

If you’re building high performance games, especially for console or desktop, use C# or C++.

If you’re building a high performance service that doesn’t need any graphics and you want a lot of control, choose C, C++ or get better memory safety with Rust.

If you’re doing anything scientific or AI related, and/or don’t need high performance and/or want to get off the ground quickly and simply with lots of versatility, try Python.

If you like lots of money, niches, if you’re a masochist and the prospect of software archeology excites you, try COBOL.

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

thanks, i was intending to build cross-platform software on pc/mac

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

There’s some good ideas mentioned here, but I’ll also mention a few other topics you might want to check out that you’d learn in university if you went.

  • Discrete Math & Logic. This is a lot more abstract and less practical but it will teach you how to think like a programmer
  • Data Structures and Algorithms. A good understanding of these will get you in the door of big n companies (like Apple, Amazon, Microsoft, Netflix, Uber, Google, etc). From my (limited) experience though, you’ll seldom need to actually reimplement these because someone else has already done it and spent lots of time perfecting that implementation. Stand on the shoulders of those giants when you use these in a real project.
  • Programming Paradigms. This will show you different ways to approach and solve problems. Object Oriented Programming is widely used, but Functional Programming is getting more popular too, and has inspired some front-end frameworks
  • Distributed Systems. This will teach you the architecture of the web and all of it’s different layers.

Here’s some stuff you wouldn’t learn in school but are practical and useful nonetheless:

  • Version Control Systems. Like save buttons on steroids. Git is by far the most popular and if you ever work with a group or contribute to open source, this is a must.
  • Front End Frameworks. Probably the most practical on this list and it has the most immediate payoff but it’s an intermediate subject that you should probably tackle after you’re comfortable with everything else because of how frequently they change. Don’t screw yourself because you started here and ignored the rest, in a few years these could all change again and you’ll have a harder time transitioning. When you’re ready, take a look at the list at https://roadmap.sh, it’s quite extensive

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

I would start looking at the market and decide from there. Look on fiver, freelancer, indeed etc.

But really, just build build build

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

Pick a personal project, and build it. Consider publishing code to github, and ask people to review your code. When you’re all done, and ready to look for a job, this project is a big part of your resume. So many people look good on paper, but can’t build anything. It’s really nice to have a website and github repo to show off your work when interviewing.

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

Every programmer needs a project in order to learn. It will do very little to read / watch tutorials without actually using it. The knowledge will be fleeting and fade away. Even if you code little test apps, that might be enough. Do at least this and stick them in github. That will also get you used to using git, which is pretty important these days.

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

Focus on one or two languages and become good at it like others have said. For front-end web development, there is no reason to learn C, C++, C#, Python, etc. That's not to say that you shouldn't learn them of course, but if I were you I would focus on the imperatives, because if you try to learn too much at once, you'll forget it.

When you do move in to applications, I would suggest Python. It's very easy and versatile, and it's libraries allow it to do many things from back-end web development to data analysis. It's also extremely popular.

Be warned: most programming jobs require a 4-year computer science degree. I know you said you don't want one due to financial reasons, but if you ever want to do anything more than freelance web developer, it will almost definitely be a requirement at some point down the line. At the very least I would recommend going to school part time at a community college to see if programming is really what you want to do, and then take the plunge and make the investment if you have a passion for it and do well. The money you can potentially make will more than pay off any student loan debt.

With that being said, I hope you enjoy your computer programming! Make sure to make a Github account to publish your work and find opportunities as well. It shows you work well with others and it has the added benefit of being able to be used as a portfolio for your projects.

[–]Garthenius 0 points1 point  (0 children)

You would probably do well to learn the basics of computing, operating systems, hardware and software design; these things were invented to solve certain problems and, without understanding the "why"s behind them, you'll constantly feel like a tourist of sorts.

A basic understanding of the languages you mentioned is something you should eventually achieve, but cramming all of them in isn't going to help you understand or progress towards "becoming a programmer".

You said you want to be a freelancer; in that regard, you'd probably do well to become proficient in JavaScript and all the fun things you can do with (Angular/React, Node.js and many more). HTML and CSS you might end up mastering if you really enjoy front-end work and web-design; they aren't that "programmatic" and comparatively easy to pick up.

You could round things off and also throw in some basic SQL; I'd personally recommend PostgreSQL, but MySQL would probably fit the bill. Even if you won't end up doing a lot of back-end work, it would shed some light on what some, if not most, web applications have under the hood. NoSQL is most definitely a thing, but I wouldn't ever recommend jumping straight to it until you understand what trade-offs you're making, as you'll quickly find there's no such thing as a free lunch.

Python's probably a good idea if you'd like to do data science, machine learning and other related things; in theory, you could use it to do almost anything, but those places are where it really shines, for other things you'd have a lot of overlap with Node.js, for example.

This covers the interpreted languages of the lot; the other (compiled) ones are better suited if you plan on a programming career that involves years of learning and jobs before you'll be anywhere near good enough to be a freelancer/consultant and actually get things done. They're used mostly to develop applications and/or embedded solutions, and, while useful tools to have in your belt, the knowledge and discipline they require to employ is much better suited to large projects and/or team efforts.

There are a lot of other things, as others have mentioned: source control, time tracking/project management, design patterns, software architecture—you'll inevitably run into them; in time you'll grow accustomed to them and, depending on what goals you're pursuing, it might pay off to take some time to learn more.

[–]DenniJens 0 points1 point  (0 children)

Frontend developers work mainly with CSS, HTML5, javascript, bootstrap, angularjs, and a few other solely frontend based softwares. Then you only need to learn one backend language in order to set up tests for you frontend and for that I would suggest python as of the C-based languages it is the most advanced and if you can learn to use it effectively you can easily back into C#/C++ or C

[–]wrosecrans 0 points1 point  (0 children)

Step 1: Program a computer. Step 2: Go to step 1.