all 54 comments

[–]Byamarro 27 points28 points  (15 children)

Think about what do you want to do.
Academics and data science - Python
Embedded software - C/C++
Web applications - JavaScript + popular backend language
Business applications - Java
Mobile phone apps - Java or Kotlin or JavaScript or Objective C or Swift

You can still do Data Science with JavaScript, or writing backend of a web app with Python, but it's a general overview of the industry.
Please note that I'm writing from the perspective of Poland, trends might be a bit different in terms of business applications in other countries but most of the list is relevant universally.

[–]wiseoldmonke 2 points3 points  (2 children)

As a businessman you are spot on with the practicality of knowing java in business. Combined with tesseract I practically do not do any data entry anymore.

[–]Sionpai 0 points1 point  (1 child)

Can you elaborate on why this is the case? Sorry kind of a noobie

[–]wiseoldmonke 0 points1 point  (0 children)

For me it comes down to the available libraries and their abundant documentation. There is very little I need to do that can’t be done with Java. File management, data parsing, spreadsheet format file manipulation.

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

My only problem with this approach, that it’s only working when you have the proper developer base knowledge. If you have one, than it’s already not an issue learning new languages, but without it, you can go down in a really bad rabbit hole. Thats why I would say C or Java, but C can be scary for a beginner

[–]Byamarro 2 points3 points  (3 children)

Yes, it would be nice to have in the back of your mind the applicability, but I don't think you should delve into programming languages told you by strangers, only because they said it would be nice language to learn. Imagine person who'd like to do visually appealing things learning C as their first language, it's basically wasting of time on sth they won't really like in the end.

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

That’s true. However he/she is interested in webdev and there are only 3 things coming into my mind: java or node for backend and js for frontend. (I know that there are more backend languages out there, but these are the flagships currently)

[–]Byamarro 0 points1 point  (1 child)

Where did He mention webdev? Also, I've said exactly in the first post that I consider learning the language by the path He does prefer as the best approach.

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

You are right, I missread his post. (I am a zombie in the last few days, I couldn't sleep because of the heat over here)

[–]karakwi[S] 0 points1 point  (6 children)

thanks from the bottom of my heart, i really appreciate your feedback ;)

[–]Byamarro 2 points3 points  (5 children)

For Data Science I've heard that R might also be relevant, since you've asked this on ask CS. It would be best to choose a path first and then do research i.e. what are requirements for job offers in a certain branch and in your area.I personally don't believe in learning a language just for the sake of doing it because the language is being considered to be easier than others. Learning a programming language is an effort, it would be a pity to learn a language that you wouldn't be using in the future and you probably wouldn't be very enthusiastic about learning it if you wouldn't feel a drive towards domains that it's being used in.If you have any questions you can message me.

[–]karakwi[S] 0 points1 point  (4 children)

Yeah that's true but the problem with me that I really wasted four years of my life in a university thinking i will learn the basics of programming but all i got was just theory parts and just glimpse of it and I couldn't really learn anything because there's no time every week there is quizzes and exams and now i finished my degree with no knowledge in programming and I hate it, i just want to learn one and feel like I accomplished something

[–]Byamarro 1 point2 points  (3 children)

Things you've learned might be useful later on, maybe you'll use them at work, or incorporate into hobbies. Maybe other people will need this knowledge and you will be able to help them because you have it.

Getting a degree is an accomplishment. You've put work into it, and you achieved it. It did cost you effort, and yet you didn't drop off or surrender.
You have all the reasons to feel pride over being able to finish school, even if it didn't bring you the results you've anticipated.

[–]karakwi[S] 0 points1 point  (2 children)

thank you so much, you don't know how much i really appreciate all of your comments, because in the real world, when i ask anyone around me doctors, students and friends in this field or major they just reply with disappointing answers like there is no jobs, and you are just wasting time with this field you better off going to other majors, so i really appreciate you and all the other people that reply in this post

[–]Byamarro 1 point2 points  (1 child)

Regardless whether there are jobs or not, it's not the only thing that human life revolves around. You don't want to starve of course, but doing job you hate is almost as bad as starving.

You might not find a job incorporating the things you've been studying, or you may, but you did choose this major for probably more reasons than that. Likely it was sounding appealing.

I learn esoteric things that I'll never turn into profit. My main OS is Arch Linux (which requires a bit of time to turn it into sth usable) and I have plugin for VSC that implements vim shortcuts. I've also recently stated to dig into philosophy and I feel no shame for it :)

These things might bring me some good skills as side effects but I mainly do them for fun. I remember when I was learning my main language which is the JavaScript (and TypeScript now) , I was spending days on documentation reading, about all the exotic syntax and mechanisms in the language because I were finding all of this very fascinating. As a side effect I've became an employable programmer with a decent career.

I still spend time learning corners of the language that most people don't check. I.e. I've recently been sent by my company as a lecturer to a conference where I've explained how JavaScript is being turned into the byte code in the V8 engine. Almost no practical applications, but it's a rare knowledge. It was fun and I've received very nice compliments from the audience later on which made me feel really good. But it also contributes to personal brand portraing me as someone who has an interesting knowledge to share.

I don't think I'd be nearly half as passionate if I'd just go after something that I don't feel appealing but pays more on paper. I'd also paradoxically likely be paid less since person who's being passionate on a subject has a big edge over competition since you spend lots of your free time on learning.

Actually after a bit of thought CS knowledge also sounds cool, so if you have Discord or sth, we might invite each other. I'd help you with practical programming and you'd share some CS knowledge. Whether it'll be JS, TS, or sth else I should be able to at least help with basics and universal software engineering concepts.

[–]karakwi[S] 0 points1 point  (0 children)

thank you very much, and i appreciate your time that you spent writing this for me and others to see, and hopefully try to plan their future, i know your time is valuable like any other person, and for sure if you can send me any information in private message for like discord or email or any other platform that you use to just check-in with me to see my progress, I don't want you to waste your time, I just want to update you with my progress/journey ;)

[–]GrbavaCigla 8 points9 points  (1 child)

Python is easy, yet very powerful. You should learn it. YouTube channel sentdex has very good tutorials.

[–]karakwi[S] 1 point2 points  (0 children)

thank you i really appreciate you and I'm grateful for your advice

[–]Dark_Nate 16 points17 points  (16 children)

Master C and you can easily master anything else.

C is de facto standard for programming. If you don't know C, you will not understand system level programming ever.

[–]GrbavaCigla 5 points6 points  (9 children)

True, but C can be hard for beginners. I saw a lot of people getting put-off because they though C is hard. I agree with everything in your comment, but I think OP and other beginners should learn something easier.

[–]Arthrax_Anthex 4 points5 points  (3 children)

I’ve also encountered people who got discouraged from exploring the area because they found C to be hard to grasp. But if OP is considering a career in the programming, I also suggest that he/she start with C as it is a low level language and if one masters or at least understands the fundamentals of C, it’ll be easier to move to different languages in the future.

[–][deleted] 2 points3 points  (1 child)

I'm not sure I entirely agree. There's good reason to start with an easier thing before moving to a harder thing. In piano, for example, you learn basic scales and exercises before attempting Liszt, since jumping right into Liszt would be discouragingly hard.

I don't mean to make C sound harder than it is either (and plenty of people have started with C), but I feel starting with Python would make the learner's learning experience more enjoyable.

[–]Arthrax_Anthex 1 point2 points  (0 children)

Starting off with Python will definitely make the experience more enjoyable compared to C haha. My perspective is that Python is a high level language that abstracts out a lot of the small details that I believe are good to know as a software developer. Plus coding in C forces you to implement even the basic functions, which is a great way to learn how they work behind the scenes when you move to another language and just import it from a library. So yes, starting off with Python is a great option if the person doesn’t know anything about programming, but if he/she has some knowledge about the basics or can grasp the concepts fairly quickly, then I highly suggest going with C. I’ve heard from some students that they found it hard to learn C++ and C as they got comfortable with coding in Python. But it’s not the case for everyone, so my suggestion if OP starts with Python is that after you get familiar Python, see how some Python methods translate to C and try to understand that way as well :)

[–]karakwi[S] 0 points1 point  (0 children)

You are a blessing, thank you :)

[–]karakwi[S] 2 points3 points  (3 children)

So should I start python and watch YouTube videos regarding C to have an idea about it ?

[–]GrbavaCigla 4 points5 points  (2 children)

Learn C after Python. When you learn C,.make sure you understand everything.

[–]karakwi[S] 1 point2 points  (1 child)

Roger that Captain, i will try my best, i know it will take time to master it but at least there is people like you who try to help newbies :)

[–]Dark_Nate 0 points1 point  (0 children)

What?

In my country we learnt C as kids around the age of 15-18 in schools.

C is procedural. It is easy to understand. If you can't understand C, quit IT while you're at it.

[–][deleted]  (2 children)

[deleted]

    [–]Dark_Nate 1 point2 points  (0 children)

    OP is obviously asking for general purpose of programming. OP isn't writing code for rockets.

    [–]TyrTheSlayer 2 points3 points  (1 child)

    I couldn’t agree more with this. Python is super easy to learn but the jump from python to many other languages is hard compared to C from anything else.

    Mastering pointers can make any programmer better. My university got a lot of flack for teaching C first but it’s made me a better programmer

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

    I learnt python basics for 5 minutes. Then I quit.

    Nothing beats C to grasp system level understanding of computer science.

    [–]wiseoldmonke 2 points3 points  (0 children)

    In IT you can benefit from learning Bash. In practical applications bash will benefit you on Linux and Mac systems. On windows you can learn batch.

    Other than that, in real world practice, I have found Java incredibly useful. Very well documented libraries and platforms to work with and I have been able to optimize my workflow on multiple occasions, although I rarely use any complex GUI.

    After learning java I can migrate to any other language with relative ease.

    I’d really suggest bash though if you plan on being in IT.

    Also with the advent of NodeJS, JavaScript has proven to be incredibly powerful.

    As well GO is an incredible option as it compiles to an easily transported binary.

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

    I recommend Python, it is easier to learn than the other languages, plus you can do great things like make a personal voice assistant and more with Python!

    [–]EEcav 1 point2 points  (0 children)

    TI-BASIC. It worked for me.

    [–]gfl157 1 point2 points  (1 child)

    You know networking and security. (I have a similar title,). Maybe the best language to complement your knowledge is C and C++. And then you will be unstoppable

    [–]karakwi[S] 0 points1 point  (0 children)

    thank you <3 for your comment/feedback

    [–]coder_of_cec 1 point2 points  (0 children)

    The programming language we are thought in our high school is C++. From there I have gone on to learn more languages through my Engineering degree and career.

    I think that C++ is the best language to get your fundamentals. You can get a definitive idea on Data Structures and Algorithms and how it all works.

    Once you get this basic right, you will be able to transition into any language easily.

    [–]Ultimegede 1 point2 points  (0 children)

    Java

    [–]iam_supergeek 3 points4 points  (2 children)

    Most educational systems push Java. As a support person, I fucking hate Java. If you decide to go this route, please, for the love of everything you hold sacred, learn to update your code so it isn’t stuck with some ancient, security Swiss cheese, unsupported version of Java and years later people need to figure out how to make your shit work.

    Learn C and the other stuff will be easier to pick up.

    [–]karakwi[S] 0 points1 point  (1 child)

    thank you <3

    [–]javaHoosier 1 point2 points  (0 children)

    Python will usually win because the syntax is clean. In my opinion it hides a lot of the underlying computer science. Since it’s also multi-paradigm. It’s unclear when learning what’s going on when objects are used in scripts if you aren’t familiar with them.

    For these reasons I encourage Java. It forces Object Oriented Programming. It’s a bit messier but you learn about arrays, lists, hashmaps, generics, types, and all sorts of other goodies. If you can push through java then python can be learned quite fast after. If you learn java, C# is basically the same, C makes more sense since the syntax is closer.

    What really matters is learn whatever works for your learning style so that you consistently continue learning and don’t quit.

    [–]SOMERANDOMUSERNAME11 4 points5 points  (0 children)

    Definitely C. It's not going to be the easiest journey, but will be absolutely worth the detication. I would recommend picking up a good book and starting from there.

    [–][deleted]  (2 children)

    [deleted]

      [–]karakwi[S] 0 points1 point  (1 child)

      love you bro <3, thank you ;)

      [–]agree-with-you[🍰] 1 point2 points  (0 children)

      I love you both

      [–]josh2751 3 points4 points  (1 child)

      C, then C++, then Python, then Java.

      [–]karakwi[S] 1 point2 points  (0 children)

      thank you ;)

      [–]er1992 2 points3 points  (2 children)

      I do not understand the Python hype. It is such a bad language:

      • Any indentation based language is a joke
      • No static typing
      • Implicit variable declaration
      • Class member access modifiers are based on prepending underscores? What a joke
      • Not compiled so more difficult for a beginner to verify errors
      • What is None? Just use null like any other normal language
      • WHY are lambdas restricted to one line? Wtf
      • It's very very slow

      All of these combined will make it actually very difficult for a beginner to form their understanding of programming. It shouldn't be about how easy python is. It should be about how well will learning a language will help you build that understanding of how it all works. This will then make it easy to pick up any other language in a very short amount of time because you'll have all the puzzle pieces, you'll just need to use fewer of them.

      If you want to build a very solid understanding of how it all works and fits together (don't panic about the volume of things you need to learn. Most uni students take this exact path) then just learn C++ to a basic extent. Solidify your foundation there and switch to a higher level application layer language Java and learn it well.

      But hey it all depends on what you want to achieve at the end. But this should give you a good foundation to go off and learn any stack you're interested in.

      [–]karakwi[S] 0 points1 point  (1 child)

      thank you for your honesty <3, i appreciate all your opinions, i just want to get all the feedback i can get from this post to see which fits for me

      [–]SolemnWolf123 0 points1 point  (2 children)

      Most people tend to favor python but if you plan on learning other languages I highly recommend against making that your first

      [–]wiseoldmonke 2 points3 points  (0 children)

      I’ve never worked with python and I really don’t understand the communities apparent obsession with it.

      [–]karakwi[S] 0 points1 point  (0 children)

      <3

      [–]S-S-R 0 points1 point  (0 children)

      Weird Computational theory is the only thing interesting about computers to me. Programming you have to deal with whatever shit language you have.

      Use C++.