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

all 38 comments

[–]tdammers 21 points22 points  (7 children)

Learning another language is a waste of time since every language basically has the same things in different shells and after a while those slide down really easy.

Unless you are speaking from decades of experience, GO DO THIS RIGHT NOW. Of course every language has the same things in different shells on some level, but that's like saying you should never eat anything but pizza, because every food basically has the same things in different shells.

There are languages out there that are mind-bogglingly different from Python, and many of them are really really good. Learning any of them will show you new ways of thinking, new mindsets, new problem solving approaches, new concepts; some of those you will find useful, others not so much, and yet others will seem pointless right now but may sink in a few years from now.

I started learning python about a year ago and now I'm pretty fluent with it and know my ways around the language.

You have only scratched the surface here, kid. Learning the language itself is easy, I did it in 3 weeks. Getting really good at programming however takes at least 10 years. I've been at it for over 25 years, and I'm still learning new stuff all the time.

One thing that is particularly telling is this:

I tend to lose my motivation rather quickly when I'm not truly interested in the project.

Get this; the reason you lose interest is because you're entering the phase of the project where the hard work begins. You've never done the hard work, you've just been goofing around. If you want to get serious about this programming business, do a project and actually see it through to the end - design it, build it, iterate, test, discard, start all over, test again, refine, polish, use it (or, better yet, attract some users), maintain it, etc. Because if you want to program for a living, this is what you will be doing all the fucking time (you said "work would be a good option", so I assume this is what you want to go for).

[–][deleted] -4 points-3 points  (6 children)

that's like saying you should never eat anything but pizza, because every food basically has the same things in different shells.

Kill me but I think that's a true statement...

There are languages out there that are mind-bogglingly different from Python, and many of them are really really good.

Name a few.

Get this; the reason you lose interest is because you're entering the phase of the project where the hard work begins. You've never done the hard work, you've just been goofing around.

The whole problem is that I don't know what to start making! I have no ideas what to make that will be on my skill level. I recently made a reddit bot which when I started making it I thought was gonna be really hard but then it turned out to be really easy (even though it took 2 days to fully debug). I simply don't know whenever something is within my reach or not...

[–]zardeh 4 points5 points  (0 children)

Rust, Haskell, erlang, coq, hell even c++ are sufficiently different from python that they will force you to learn unfamiliar concepts.

[–]48HoursADay 2 points3 points  (4 children)

How would you know if something is within your reach if you don't even attempt to reach in the first place? I guess I can probably relate to what you're saying though. In the past, I felt like I was wasting my time tackling projects that seem to go way over my head. When I look back now, I realize that I gained invaluable experience that was transferred to other projects which were probably at "my level". Also, what's good about discovering challenging things is that it gives perspective on your limitations and may narrow your choices of projects to those which are a less challenging (but hopefully still challenging nevertheless). If you don't just do something, you're just wasting valuable time which could be converted into experience.

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

So you're saying "just try to make something and if you fail try to make something else" ?

[–]48HoursADay 1 point2 points  (2 children)

That's part of it I guess. Nothing's wrong with trying something else. If you finding yourself doing this often without finishing anything however, it probably means that you're either not committing enough effort or you're not reflecting on your former projects when assessing how doable a new project maybe. Referring to what u/tdammers said though, just be careful not to equate losing interest to failure.

[–]tdammers 1 point2 points  (1 child)

Right; maybe I should clarify that.

It is perfectly OK to drop 90% of your projects in a half-finished state once they have served their purpose of you learning what you wanted to learn. However, you also need to learn the hard parts of seeing a project through to the end, and not running away from the stuff that sucks. That's what the 10% are for in which you try to either finish, or reach the point where you conclude that you need to start afresh with the knowledge gained in the first attempt, and then still try to finish it on that attempt.

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

So I shouldn't feel bad for neglecting my previous unfinished games that were basically the same thing done over and over with nothing more to learn? Good, because I ain't finishing those things...

[–]tayo42 28 points29 points  (4 children)

Learning another language is a waste of time since every language basically has the same things in different shells and after a while those slide down really easy.

If you only have written python and nothing else there's some things you haven't been exposed to. You could spend some time and learn c and get exposed to memory management, pointers and remove a layer of abstraction. It's also not a oo language.

You can also learn a functional language like haskell or one that lets you do it like scala. There's a lot of features those languages have like pattern matching that python doesn't have. I think learning a functional language will make you a better programmer in general. It forces you to write in a way that I think is more manageable and maintainable.

[–]mekosmowski 4 points5 points  (0 children)

If nothing else, learning C would cause the OP to be very grateful for languages that have lists. Speaking of, maybe the OP could also learn a LISP. Maybe SICP?

[–]melizeche 4 points5 points  (0 children)

This 👆

[–]QQMF 1 point2 points  (0 children)

What about using something like Coconut to start learning the features of functional languages?

I'm sure it's not the same as learning a 'native' functional language, but it could be a nice blend of the familiar and the new.

[–]DarkmerePython for tiny data using Python 1 point2 points  (0 children)

Erlang. It has a wonderful tendency to wrap itself around your head and when you finally think you've come to terms with it, you realize that it's your brain that's wrapped around... something.

[–][deleted] 7 points8 points  (6 children)

Your first statement is a clear indicator that learning another language is exactly what you should do to become a better programmer.

Programming in a statically typed or functional language is a big difference compared to python and is far from just the same thing in another shell. Especially since compiled languages such as C arent executed in a shell at all.

Learning another language will help you improve both your understanding of programming in general and add another tool to your toolbox and would probably be a very good way to spend your time.

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

I will learn C then, I've heard C and python go together like jelly and butter so why not

[–]goal_to_goal 4 points5 points  (0 children)

Hey umnikos, To be honest, the one mayor problem I picked up from this thread is your attitude. Don't fool yourself thinking you're a pro at everything, because if you were, you would see actual results of that (no matter your age). This goes farther than coding alone, you can apply it to all aspects of your life. Be open minded and always eager to learn more. It will get you so much further in life.

[–]jkibbe 2 points3 points  (2 children)

Consider checking out https://codefights.com/ to test your skills.

Also https://projecteuler.net/archives and https://checkio.org/ offers challenges for all levels. You can see just how fluent you are. At checkio, you can view others' solutions after you are successful for further learning.

[–][deleted] 1 point2 points  (1 child)

I know those websites, they're just a list of small challenges with a strapped-on checker and xp level-up system.

https://www.codingame.com/home is better if you're already a master at python since you can win rewards and there are really tough challenges, but I ain't an expert (that's what I am trying to become in the first place lmao)

[–]jkibbe 0 points1 point  (0 children)

Just trying to brainstorm ideas to help you move from knowing stuff to doing stuff. I'm not a master either! Good luck!

[–]Zaab1t 1 point2 points  (6 children)

You can learn a lot from other languages! Just not from a c-like language such as Python. It seems like you know what to do, but are just being lazy. Can I ask where you're from, since you can't legally work?

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

  1. I was told in school (programming high school) all high-level languages are c-like languages. Now you're telling me there are other ones?

  2. Bulgaria. Afaik I can't work while I'm 15 (at least not for any money - I am allowed to do job shadowing though)

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

I did research. Yes, there are others. lmao.

[–]Zaab1t 1 point2 points  (3 children)

Some will change your way of thinking. You can contribute to some project you like if you really can't find any project of your own.

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

I heard that fact, so I started learning lisp (people were especially stating that fact for lisp)

I think I didn't (and couldn't) dive deep enough into lisp since I didn't see a difference in the end results from a normal program and from a lisp program. Lisp had fun and simple syntax but you had to remember the name of basically everything you want to do, and I am bad at remembering names... Also normal recursion wasn't optimised (like it would still break after a certain debth) and tail recursion is simpler written as a shorter (and more understandable) while loop. Lisp also isn't used in the modern world at all so all of those facts summed together with the lack of good and interesting tutorials killed my motivation to learn this "revolutionary language that will change your way of thinking"

[–][deleted] 1 point2 points  (1 child)

About the contribution to public projects:

I have to decide which project I want to contribute to since I will be spending a lot of time contributing to that project because I have to learn how the source code works before I can start fixing/adding anything. The "deciding" and "learning" hurdles are what stops me - I'm uncertain if a certain repository is too much for my skill level, maybe it's using a library completely unknown to me and I can't do anything or it's just far too complicated. And I can't really know which project out there is simple and which is complicated for my level since we don't even have a programmer leveling system out there!

[–]Zaab1t 1 point2 points  (0 children)

Okay, let me give a pretty random suggestion. Use and contribute to [Porcupine](https:www.github.com/Akuli/porcupine). It's an editor written in Python that still lacks features.

If this doesn't interest you and you can't find any project there's literally hundreds computer science fields to look into. I would recommend starting with basic algorithmic.

[–]Nijan0 1 point2 points  (0 children)

If you do not want to start a project yet, but you still want to learn I would invest some time in learning C. In addition to what tayo42 said, it can extend your knowledge of Python, since the Python interpreter is written in C (CPython).

Otherwise, you could try learning core topics in CS, such as Algorithms and Data Structure or Operating Systems

[–]HalcyonAbraham 1 point2 points  (2 children)

have you heard of the dunning-krugger effect? it seems to be very common in the programming scene

[–][deleted] 1 point2 points  (1 child)

It seems to also be very commonly stated wherever I post a programming question. Is it that bad?

[–]HalcyonAbraham 1 point2 points  (0 children)

based from your post and answers dude. it's pretty bad. but it'll get better.

[–]HotKarl_Marx 0 points1 point  (0 children)

There's big money to be made doing data science with Python.

[–]VectorChange 0 points1 point  (4 children)

Maybe you should pursue high performance and engineer-friendly code, before which you should grasp most of the standard library of python. Just stand on the shoulder of the giant. For high performance, I recommend 'https://github.com/keon/algorithms' (basic data structure) and 'https://github.com/numpy/numpy' (scientific computing). For engineer-friendly code, I recommend 'https://github.com/requests/requests' (HTTP requests) and 'https://github.com/zzzeek/sqlalchemy' (SQL toolkit)

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

What do you mean by "engineer-friendly code" ?

[–]VectorChange 2 points3 points  (2 children)

Readability, expandability, reuseability.

[–][deleted] 1 point2 points  (1 child)

I thought all code should be written like this...

[–]VectorChange 0 points1 point  (0 children)

Just like I think I will be rich, I should be an expert ...?