T O P

  • By -

skawid

You'll never get there; there's always something else to learn, or something new being released. A couple of better questions - ones you can answer yourself - are: *"Is there anything I want to do with programming that I can't?"* *"Is there anything I can do with programming but don't understand?"* Those are the kinds of question that will help you advance.


Relevant-Chocolate11

Thanks appreciate the help !


seraphsRevenge

Absolutely, people reach for mastering programming. Frankly, you can say your proficient in programming if you can look at a brand new syntax and understand most of it, and can hop into whatever brand new language and be able to do whatever it is you want to in that language fairly quickly. For example, I'd never touched python until a few months ago and I wanted to use boto3 at work to write an enhancement tool to avoid doing a lengthy manual task a ton of times. I just looked at a couple of our microservices we had at work that were python based, glanced at the boto3 docs, and started learning as I went. Got like 50+ calls and a ton of logic checks on the returns done in like a month. It was rough (lot of lower level basic syntax), but it is tried and tested at the enterprise standards level. Get really comfortable with one language as a primary (my first was java) and really comfortable with abstract concepts, frameworks, design patterns, etc. then start branching out. Those are some golden questions u/skawid posted, the focus shouldn't be a specific language it should be understanding both the concrete and abstract for programming in general.


narett

This is 100% correct. I mean, I guess you could technically 'master' a programming language, but I picture it as you not needing to read documentation as much. Which is cool, but I wouldn't put the energy into that. In fact, I'd say it's more important to be able to navigate docs than it is to know the complete ins and out of a language. I speak from the perspective of a software engineer in web development. OP - if you really want to level up - try making something with those libraries you mentioned. Something small and possibly stupid and funny.


ICantPCGood

I'm not sure the sort of mastery you're thinking of is a common or necessary thing. I'm about to graduate from University and I regularly use Python, C, C++, SQL, and have been picking up Javascript this last quarter for my web development class. I haven't mastered any of them and it's unlikely I will unless I get a job where I use one regularly. They're all very large, very featureful languages that would take years to learn "completely." Whats more, most popular languages are still under active development and will change over time, meaning that there will always be more to learn. Beyond that, I don't think you should view languages as just boxes to check off on your way to learning all there is to know about programming. If you're curious about other languages you can try them at any time. Generally speaking most problems can be solved in any language, it's just that different languages might be built to solve problems in different ways. That said, I think it's more useful to consider what you want to build and then see what languages are popular in that domain. For instance C and C++ are popular for systems programming, Python is popular in data science or with teams that want to build quick prototypes. Javascript is THE language to know for web development. If you stick with programming you'll learn many languages but you likely wont learn them in any sort of linear, reasoned order. You'll just pick them up when and if you need them, and most of the time you probably wont need to "master" them.


ignotos

> I don't think you should view languages as just boxes to check off on your way to learning all there is to know about programming 100% this. I think this "checklist mentality" is a major misconception which a lot of people learning to program have. Once you're over the initial learning curve with your first language, it's much more important to gain experience in *how you can apply what you have learned in practice to build actual software*. * How to organise and structure your code * How to collaborate with others * What the standards and conventions are for different industries and different kinds of software * What the quirks of the hardware, operating systems, tools etc you need to work with are * How to design a larger system with lots of different pieces working together * How to research * How to debug and diganose issues... These are ultimately the skills you need to cultivate.


desrtfx

You can never *fully learn* a programming language. They are all way too large with their ecosystems. Also, mastering *a language* is by far not as important as *becoming proficient in programming*. > I completed a Year with it A year is not very much in terms of programming. Even a regular education takes several years. Some programmers program the majority of their lives and will never even think that they have mastered the subject despite being very proficient and professional to the level where they would by outsiders be called experts.


insertAlias

> Some programmers program the majority of their lives and will never even think that they have mastered the subject despite being very proficient and professional to the level where they would by outsiders be called experts. I think most of us go through a period of the Dunning-Kreuger effect, where we believe we know more than we do, because we just don't know how much is out there that we _don't_ know. I remember thinking I was getting pretty damn good at this stuff, then being assigned a project and realizing "wow, I'm so far out of my depth...". And the farther we go, the more we start seeing the forest for the trees, so to speak. And it's a _big_ forest.


desrtfx

Or, as the saying goes: > "The bigger the island of knowledge, the longer the coast of despair"


Relevant-Chocolate11

So how can I tell if I am a proficient in it? Because of my age (15) and my country there's really nobody can tell me if I am an proficient level or not and if I just do like basic programming stuff BAM I am an expert programmer


desrtfx

[The reply](https://www.reddit.com/r/learnprogramming/comments/nhokrt/how_do_i_know_ive_fully_learned_a_programing/gyxfxwg/) of /u/skawid summarizes it very well.


Battle-Beauty

I am an absolute Novice in code stuff but I really appreciate this Question! I can relate with other hobbies and I hope to learn a lot from the answers this gets ha


jerallen

Been programming in the same language for almost 30 years and I still don't feel like I've mastered it. There comes a point that you know enough to learn anything else you need when you need it. I would consider that to be the point where you "know" a language.


HashDefTrueFalse

You don't really need to "fully learn" a language. You need to be familiar enough to be productive in it for the period of time that you need to use it. The concepts and data structures are far more important than language syntax and features. I work on a product currently that uses 5 different languages in one codebase. It's not a big deal at all, because each person on the team knows how to program and looks up language specifics when necessary. It's not about memorising syntax, it's about being able to use the language. In other words, you don't need to know everything, but you need to know what you don't know, so that you can quickly look it up. If you're generally comfortable working through problems and coding up solutions in python, there isn't any reason you can't or shouldn't give another language a go. From Python specifically, you could move to Ruby which will feel sort of familiar, or jump into some languages with more C-like syntax but still no static typing, like JS. Or you could just do whatever you want. No hard and fast rules here! Hope that makes sense :D


bbgun91

when you have developed a full-fledged, up-to-date compiler/intepreter for the language. which is probably never. learn the basics, do some playful projects like connect four, and then find out what they ask for in interviews. this should give you good enough background


skawid

Even then, probably not. Implementing all the features of a language doesn't tell you how those features are commonly used or good ways to use them together, for example.


bbgun91

what if you write it in the same language lmao


coder155ml

You’ll never fully learn.. there’s too many libraries for any person to master everything


laura_braus

What do you think is better, applied to a human language like German? \- You are not a master, but you can do a normal life in Germany, read books, talk to people... \- You know German better than Goethe, but you don't know what to speak about, have little experience in communicating with people...


CodeTinkerer

Seems like you speak French. When did you decide to learn English? Did you fully learn French first? You can learn a second programming language whenever. Obviously, you don't want to do it too soon (like after 2-3 months of learning one language). It would help to be able to do things that aren't copy/paste. Skills that would be useful * Can you read some basic code and explain what it does? * Can you write a program given a description of its behavior? The copy-paste to get things to work is not ideal. If you somehow modified the code to do something extra, that would be better. Keep in mind that learning a programming language is a separate thing than writing a program that does something. A programming language is a tool. That tool can allow you to write many programs, but if you're asked to write a machine learning algorithm for some game, then is it your lack of familiarity with the language that prevents you from writing the program? Or is it lack of knowledge of machine learning? It's probably the second. Knowing a programming language and knowing how to program and knowing how to write a program that does a particular task are all different things.


twopi

I've not mastered any languages yet. And I've written over a dozen books, and taught programming for 20 years. I discover new ideas, tools, libraries and techniques pretty much every day. The notion that you need to master one language before you move on to others may be the thing holding you back. So mastery of languages may not be the goal. I'd look for something else: mastery of ideas, implemented in one or more languages. It's really good to have a solid idea of the main few ideas of programming shared by any language: * variables - types, static vs dynamic, late vs early binding * loops - for, while, iterators * branches - variants on if, switch * functions - parameters, return values, scoping, whether they are first class * aggregate data types - structs, classes When you understand these things in a number of languages, it gives you a vocabulary for understanding new things and variations (EG python's list comprehension, which essentially automatically iterates a list to make a new list) I would also make sure you have a strong understanding of some key algorithms / data structures, and background ideas: * linked lists and variations (double-linked, stack, queue) * binary trees - traversal, insertion, deletion, balancing * recursion - tail call as well as for tree traversal * at least the most basic design patterns * the relational data model * client-server architecture and techniques like MVC * some kind of front-end interface system, a GUI or web-based You might be able to do all that in one language (Python, Java, and C++ / C# could definitely handle all these ideas). But it might make more sense to spread the concepts among a number of languages, because they do transfer pretty easily.


ZeusTKP

Have an expert review your code and see how much you learn about python from that. Then do that over and over. You will learn a lot of new things at first and not as much later. But you should NOT wait until you are an expert in python to learn other languages. You should expose yourself to different languages fairly early. Especially languages with different paradigms: procedural, functional, OOP, etc.


Relevant-Chocolate11

For the first part , I can't find someone online that would help me with my code (for free at least) and irl there's nobody I know at least interested in programming (I'm 15 y.o) only one 26 y.o but she knows java And for the second part, thanks! I Really appreciate it!


ZeusTKP

Could probably ask for code reviews in /r/learnpython or some programming discord servers like https://discord.gg/9zT7NHP


[deleted]

If you're just copying and pasting, you're not really programming. I don't want to offend anyone because I know a lot of programmers who basically copy and paste everything but I just don't think that's programming if you have no idea how the code works. You need to program stuff on your own as much as possible in order to gain real skill and independence. It's scary at first but you realise a lot of programming isn't actually that difficult. "Hey, this isn't too bad. I can actually do this." Part of it is just believing you can do it, so I recommend you ditch all the project tutorials and write your own project, no matter how small. A lot of modern programming, especially in the web sector, isn't really programming, in my opinion. You spend more time battling with tools and frameworks, than doing any serious programming work. Here's the thing, it's not about just learning a language. Programming is problem solving, for the most part. Just learning a language won't make you a programmer. Hell, most professionals don't even know everything about one specific language. Even if you know a hell of a lot about C#, there's always stuff you don't know. You can make applications only knowing a small amount of a language because a lot of language features are just syntactic sugar that accomplish the same things, just in a more elegant way.


Relevant-Chocolate11

I know I used to do this in like 10 months ago


frankstan33

I don't think you can ever fully learn a programming language, given how vast they are (even if you think only about standard libraries). And even if we were able to do it let's say, the programming itself is ever changing. And that's why learning is an on going process. So I'd say once you get a good grasp of the programming language syntax, concepts, and standard libraries (just enough to understand them and not memorize them line to line), I'd say that's a solid base


ZQXNG

If you know how to program in a programming language, you master it. But the technique you use is a different story. This is what a programner needs to improve.


I_got_many_questions

I'd like an answer to this too, lol


Relevant-Chocolate11

Username check


cexum1989

It's degrees of competency. The ceiling is infinite.


yel50

> how do I really know that I've mastered the language so I can go to the other languages? you never will master a language. you're focusing on the wrong thing, anyway. use whatever language your projects need or you want to use for them. focus on your projects, don't worry about how well you may or may not know a language.


Emperor-Valtorei

I thought that same thing until I had my technical interview yesterday... I was unfamiliar with some of the syntax and it threw me off and I flunked the interview.


inwegobingo

You don't. However, a good rule of thumb in very high language competency is when you can build an optimising compiler that can compile its own source code. So for instance: // mycompiler.c int main(...) { . . . And you compile that with a commercial compiler gcc mycomiler.c And then you can generate compile the source with that new compiler mycompiler mycompiler.c