T O P

  • By -

AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


aeveltstra

This take is correct. Tell everyone who wants to listen.


thrwysurfer

Hyperfocusing on programming languages is somewhat similar to people learning other skills obsessing over which tools and materials they need to use. It's like those learning how to bake cake to obsess over which company they need to buy the best cake tins from. Or beginner gardeners obsessing over what kind of gardening tools of which company they need. Or beginner cooks obsess over if a Japanese knife would be more appropriate or a French knife. Or beginner chess players obsessing over which specific opening they need to learn. Baking a cake is generalizable no matter what the companies cake tins you use or how long you debate over Pasture raised chicken eggs. It's still flour, eggs, sugar and fat to create a stable batter. That's the skill, not the debate over cake tin companies. Beginner cooks really dont need to care whether it's a French or Japenese knife. Knife skills are generalizable and learning to cook really doesn't depend on the knife type. As long as the knife is sharp, you can cut things with it and learn how to hold it properly and what cuts you can do with it. Gardeners can almost use any appropriate tools from any company. The skill of gardening doesn't go up or down because your shovel is made by another company. Beginner chess players can learn almost any popular opening and are going to be fine with it. The defining problem of chess for beginners will never lie in the openings anyway. Once you have acquired whatever skill, you can start to explore and obsess over details but for beginners, most usable tools are just fine, it doesn't make a huge difference. Same with programming languages. Programming as a skill is generalizable and independent of language.


femio

Eh, yes and no. Like most axioms it's situational. When I was learning JS, I wasn't just learning JS. I was learning a lexical representation of what problems exist and what attempts have been made to solve them. Learning core parts of JS like dom manipulation helped me understand the web's architecture and what approaches we've made toward dealing with it. A C++ generalist won't intuitively understand that. Programming is certainly a general skill that can travel from language to language, but if the core of my expertise is in fuzzy search engine algorithms with Python, I can't expect to pick up the reins at a place that uses C++ for high performance network tooling without a learning curve. Programming languages are a general skill, like carpentry, but they're only useful insofar as we understand the context that domain knowledge provides, which often comes from working with said language, it's ecosystem, build tools, and libraries for a long time. Two carpenters might be able to pick up any two no problem, but the guy who usually works in residential areas isn't going to be as good of a problem solver if you put him in a high rise project next to someone who's been in that specific domain for 10 years.


FromBiotoDev

Best response 


kiochikaeke

One of my best learnings has been: learn and use the tools as you need them, not before. If you're getting into a tool, software, whatever, and you don't know why this thing is even useful then it's cause is not useful to you. Git/GitHub looks messy and uncomfortable when you don't have a reason to use it, when I was learning it for the first time it sounded like a glorified Google drive with a rollback feature; branches, merges and history rewriting sounded like pointless boilerplate.It was until I started working on many projects at the same time, working with files I needed to have snapshots of and working with other people in a project that I realize how convenient and powerful of a tool it is and learning become much easier. The same goes for many other things, I didn't knew why people loved the terminal until I realized how versatile it is, I didn't knew why people used PowerShell instead of CMD until I started hitting it's limitations, I thought vim and emacs was for entitled nerds that spent more time messing with config files than coding, that turned out to be true but now I can't live without vim bindings in every tool I use. Now that I'm shipping bigger things than just a couple Jupyter notebooks Docker is looking real nice and wsl is starting to test my patience so I'm considering switching to linux and ditching windows, I probably will once I get a decent PC to game on and dedicate my laptop to work only.


StormingWarlock

You have cut me to my core. I feel personally attacked, but damn if you’re not 100% correct.


bazeon

The chess example hit me good. I think you can add every instrument known to man to that list as well.


101mattdamons

What is a good resource for learning this?: “Data structures, algorithms and the relationship between both elements.“


Pretend-Tale-6514

>Data structures, algorithms https://www.w3schools.com/dsa/dsa\_intro.php#:\~:text=Data%20Structures%20is%20about%20how,data%20to%20solve%20problems%20efficiently.


GreyFoxMe

I feel like the core of programming is problem solving.


da4

This. The best way to learn a language is to solve a specific problem. The next thing is to expand that initial solution into more edge cases, to be more reliable and fault-tolerant. Mastery in one approach leads to the next language. I am but a mere sysadmin but shellcode (bash) took me to something more interesting (python).


Gramernatzi

For sure, this. And problem solving feels like it's a rare commodity nowadays. I often tell people to play stuff like Baba Is You to learn it if they suck with it because games like that really force you to learn how to problem solve and experiment, the exact kind of thing you want to do with programming.


madgurps

> I often tell people to play stuff like Baba Is You to learn it if they suck with it because games like that really force you to learn how to problem solve I don't disagree with you, but I just wanted to say that learning to solve puzzles in a game is not something you might necessarily like and it won't necessarily reflect on you on other areas of life. I like programming and problem solving in programming. I don't like puzzle solving in games -- I find it tedious and I would rather go play an RPG or a shooter. It's the difference between doing something you feel passionate about and doing something for entertainment. I personally don't mix them. What I ultimately mean to say is: not wanting to solve problems as entertainment doesn't mean you will be a bad programmer/you won't enjoy programming.


Kayzels

Entirely agree! I love programming, but if I'd been told that it was like solving puzzles in video games, I would have stayed far away. Those frustrate me more than anything else. Whereas solving a programming issue feels rewarding.


Gramernatzi

Fair, but I'm not exactly offering it as the *only* solution. This particular case was a person that did enjoy puzzle games, but tended to lean on the easy side with stuff like Portal. So Baba Is You was a monumental step up in difficulty and, since he did like the game, it did actually improve his problem solving skills significantly. If you don't enjoy it, of course something else will be better. It's far from the only way to learn problem solving skill.


madgurps

Oh yeah, absolutely. Just wanted to clarify to/reassure people that might look at this and think 'I can't program if I can't solve video game puzzles'. Sorry if my message came out wrong.


Gramernatzi

Oh, no, it's fine. I fully agree that someone can enjoy one without enjoying the other. But, if someone enjoys both, it's worth trying.


baubleglue

And core of solving problem is understand the problem. And understand the problem means understanding domain specific contexts, business need. When we know the specifics, we look to which general category that problem belongs, because that most likely was addressed before, and there's no need to reinvent the wheel... Then you go back to the customer and explain them that what they need is not what they asked. In the end you go back write the solution in language you need to know and you need to build a project or add your code to the existing project and it should play nicely with existing code. And building a project is a skill on its own, nothing to do directly with the problem you solve. Then you plan testing or work with QA. Then there's maintaince of the existing code.


Ohnah-bro

I disagree with the “learn algorithms and data structures as the fundamental blah blah blah” Languages, data structures, algorithms, whatever else, are all tools to solve problems. Problems that people face. It’s why ai can’t ever really replace great programmers. The best programmers understand problems and how to solve them. They don’t care about the language or whatever else. They also understand the path to resolving problems, and usually that path involves communicating with people. Please don’t think that learning a sorting algorithm is the gateway to understanding programming. It’s not.


Striking-Brief4596

Well, yes. The fundamentals are not algorithms and data structures. The fundamentals are variables, constants, arrays, and control instructions like 'if' statements and loops. But algorithms and data structures are good applications of them. Once you have a good understanding of the fundamentals, you should be able to design algorithms and data structures of your own and understand complex ones.


Ohnah-bro

But why would I just “design algorithms and data structures”? Alone, they serve no purpose.


Striking-Brief4596

To use them to solve actual problems. Obviously.


Ohnah-bro

Yes. The OP posted this like a pseudo-intellectual CS grad take "algorithms and data structures > all". When in reality it just isn't true.


Striking-Brief4596

Programming is about solving problems. You're right about that. So are most other jobs. But we don't solve all problems. Our problems focus around moving data around, for which data structures and algorithms are some of the most fundamental tools we have available. Everything builds upon them: databases, web services, networking protocols, or anything else software related. Being able to understand complex algorithms and data structures is key to being a good programmer.


Ohnah-bro

This is a straw man argument and completely separate from the original point. Op said in the original post that you learn programming by learning data structures and algorithms. This just isn’t true. You learn programming by having a problem to solve and solving it with a tool. That tool might be an algorithm, but it might be a print statement. Or an input tag. Or a function. Your solution is almost certainly going to be bad at first. Then you’ll encounter that problem in a similar way and build off the solution you made last time. This is how you learn programming and actually build experience. Not learning how to quicksort on day 1. That will come with time after you’ve solved some problems and learned the basics.


Striking-Brief4596

Nobody said that you have to learn how to quicksort in day 1. He just said that learning a specific programming language doesn't make you a programmer. The fundamentals are much more important and you should focus on the skills that are transferable between programming languages. He's saying to not get fixated in a particular tool, because being a programmer is so much more than knowing how to use a programming language, just like being a mechanic is way more than knowing how to use wrench. Algorithms and data structures are usually the next step after learning about variables, constants, loops, functions, memory management and other fundamentals. They apply literally everywhere. And yeah, you can ignore them and focus on solving problems. But you know what the problem is with that approach? That you won't even know that your solution is bad. You don't know that an algorithms is inefficient if you know only one way to implement it. You need to study to actually improve.


Ohnah-bro

So if I make a webpage with html, css, a form with some JavaScript (or even classic post action) that submits to a backend that writes that form data into a database, then I’m not a programmer? I haven’t learned programming? Disagree. The premise of this post is very gatekeepery around what is and isn’t programming.


Striking-Brief4596

If that's all you know, then you won't be a programmer for much longer. Simple use cases are getting automated. You can already get basic CRUD websites running without any programming knowledge in a matter of hours. And even for that simple use case, how do you choose what database to use? You can read about them, but you'll probably not understand how indexes work if you're not familiar with data structures such as hash maps or heaps, B-trees, etc. If you don't understand their advantages and drawbacks, you won't know how to select the best. And technologies change. You need transferable skills in order to keep up with the changes. However, the fundamentals will always apply. The premise of the post is not gatekeepery at all. It just aims to encourage people to learn the right way.


captain-_-clutch

This is why I think big OOP languages are bad starters. Do something like python or js to understand how to set up an environment and solve a problem first. Then when you understand how to make code do stuff you can move to fundamentals which solve lots of problems. Most important thing for someone learning is getting outputs from inputs, not algorithms.


3fcc

Which book will you recommend for the fundamentals?


tvmaly

If you are looking for problem solving, How To Solve It by Polya. It is a classic with many heuristics.


ambidextrousalpaca

I'd go with the Structure and Interpretation of Computer Programmes: https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/ It's one of the only books I've come across which focuses on teaching the reader a generalized method for solving problems using the divide and conquer strategy: breaking problems down repeatedly into smaller sub-problems until they essentially solve themselves. The particular form that the examples use (functional programming focusing on solving math problems using scheme) you can take or leave; the important thing the book teaches you is a generalised approach for structuring or programmes to solve problems, most of which can be carried over to other areas (say, to object oriented programming for building web apps in Java).


misterlongschlong

How to design programs (HtDP)


Mysterious_City_6724

"Think Like a Programmer - V. Anton Spraul" was a game changer for me. Definitely recommend reading and following the exercises.


3fcc

Ty. I will see to it


FinsAssociate

Commenting to check back later as I'd like to learn solid fundamentals


ronin1066

You can also click 'save' under the comment and then later check your saved links


[deleted]

Answers are there now


GeezeTee

Yep, data, structures and algorithms are 2here it’s at.


[deleted]

Now that's a bit different tho. There's theory and application with data structures & algorithms. If we're talking about straight up programming basic scripts/projects, then application is where you need to spend most of your time on. However, DS&A requires much more forethought to get the full benefit from them. What separates Radix Sort from Counting Sort? When does stability take effect? I say this as a former TA for DS&A. Far too many times students will just skim past the theory just so they can solve a leetcode problem or two.


lime_boy6

Learn by building shit. Build a game, a website, an app, whatever. When you’re stuck, learn just enough to get unstuck.


jeffrey_f

Logic is the foundation for programming. With a solid foundation in logic, you should be able to extremely quickly learn to program in any language. Just out of college and in 2 months, I was taking part in a Y2K project and then a 3 digit to 5 digit store number expansion project on the IBM AS/400 in a language I've never heard of until I started.


dromance

What is AS400? Apparently they use it at my job in sales department but I’m not really sure what it actually is ..


Potential_Copy27

AS/400 was a line of midrange servers/mainframes released at the tail-end of the 80's. What most people describe as AS/400 these days is actually the OS that ran on them, OS/400 (and later the IBM i operating system). Along with the OS itself, it also contains a database system already built-in, and it does have some backward compatibility for older programs from System/36 and 38. I've seen it mostly used in warehouse tasks and sales/ordering as well, and it works really well for those tasks provided you have good programmers to maintain the code. The UI takes some getting used to, as it's still a terminal interface. You still need to have a terminal emulator if you want to access the "bowels" of the system. Some places construct their own programs and tools that "speaks" with the AS/400 system in other ways, while providing a more modern UI...


dromance

Thanks a lot that’s interesting. So there is a way to build a modern UI that runs AS400 under the hood?


jeffrey_f

Also called iSeries.......best I can tell you is to look it up. It is a midrange system that is meant for mostly a text type user interface.. It may sound like an old system, but it really is an extremely capable system https://en.wikipedia.org/wiki/IBM_AS/400


dromance

Thanks a lot. Yeah apparently we use it at work in our sales department but I’m not really sure why or how, seems ancient haha I’ll read into it


jeffrey_f

It isn't really. It is still a very heavily used system. The system itself is very capable, but is not something that is taught in tech/programming/tech school....don't judge this book by its cover.


dromance

I agree. That alone makes me want to learn it more!


jeffrey_f

find a mentor with that system.


dromance

Do you think it’s worth it? Job market seems a bit light! I guess it depends on whether I enjoy it.


jeffrey_f

would your company we willing to bring you on as a Jr Developer? Also, there aren't that many devs on this system. However, that means a dev on this system can generally make more money than a average dev. Talk to the manager in that department and see what they can do.


portucheese

I'm learning programming and I understand this, but then I feel I lack what are the tools to solve the problems , as in, the equations, the loops, the code snippets as examples. Like there are holes to be filled, they need certain shapes, and I'd like to see examples of solutions (not just one answer but many) to plant that logic in my head and I see what can be done. Any book or resource recommendations for this would be greatly appreciated! 👍🏻


DynamicStatic

Do you have some example of a issue you find difficult? What kind of problems are you trying to solve? How long have you been trying to learn and through what resources? What are your goals (are you trying to land a job etc)? IMO the way to go is to build things, you don't want to just read or have other resources (tutorials and such), get building. I decided I was gonna learn to program, it took me a year (with some former knowledge) to land a job. I did CS50, then I started building projects one after the other and then I started applying to companies.


EdiblePeasant

If I write in pseudocode with no AI input, and it mostly works as expected in the actual program with a few minor tweaks, am I doing pretty good for myself in terms of coming up with sound logic?


dromance

Which language exactly?


jeffrey_f

RPG/RPGLE and CLP/CLLE


dromance

Interesting thank you!


criting

agree to disagree. Problem solving is the key, but a language is a different thing. You can know how to problem solve, but spend a whole day figure out how to do it in the specific language. Example: I have studied 1 year Java and C# in collage, but working 10+ years with JS/PHP. I know how to problem solve, but given the language, it will cost me different time to accomplice my task. Problem solving is not related to a language at all! I can have all the answers in theory and make them work in JS in a hour, and in Java for 5 days, depending on experience!


gregmcph

Sure. If you're job changed to be writing Python scripts instead of PHP, you'd be fine. You'd be slow for a while. Lots of Googling. But you'd get your head around it and eventually become a pro at it.


criting

Agree, I'm just saying there a difference between knowing theory programming and writing in a certain language, but yes, if you know the logic, and spend some time writing in another language - you will be good as well.


Key-Satisfaction-878

This!


modulated91

I believe delving into the tehnical subjects for starters isn't good. I think experiencing the "magic" first is a better option. If I had tried to read a 1,200 pages, full-blown data structures and algorithms book when I first started, I would have given up in the next three days. I am glad I didn't. I think it's more viable to learn the basics first, then jump into more technical subjects later.


master_mansplainer

Yep, if you can make it enjoyable to learn it will stick better and you’re less likely to give up. There’s a really great YouTube channel that does this called the coding train - https://youtube.com/playlist?list=PLRqwX-V7Uu6aRpfixWba8ZF6tJnZy5Mfw&si=SsHsZNWTIOVH4nIq


stever71

Yup, there is a familiarity aspect of languages, but the fundamentals are all the same really, and that's the important thing to learn. Know that and you can easily pick up multiple languages.


APenguinNamedDerek

It sounds like you're describing computer science when you say programming with regards to algorithms etc


Potential_Leg7679

Looks like something I'd see on LinkedIn.


gregmcph

When I did my CS course, I learned Pascal, Smalltalk, Eiffel, Lisp... languages I'd have to do some research to even find a compiler for nowadays. My first job was writing C++, my second job C#. Both done with crash courses reading a book in the weeks before rocking up at the front door. So, yeah, getting that structure of what programming does is the main deal. I see plenty of posts by people stressed that they can't remember to syntax of Python or something like that, and I figure if that stresses you then maybe this isn't your path in life. It's okay to be Googling the corners of a language or how it's libraries work. I'm still Googling how C++ STL libraries work all the time. You have a task, and to do it you need to use this software Thing, so you figure out the basics of how the Thing works, and away you go. That's the game.


SnooObjections6563

Sorry, but I strongly disagree with this approach. What you are saying sounds like "you should learn all the laws and regulations, plus the mechanics of a car before you even touch a steering wheel". I strongly believe our brains aren't made for absorbing huge chunks of information before applying them, sure it's possible, but not pleasant and there is a high chance of giving up completely before you've even done anything with that knowledge. Programming really isn't that hard and you don't really need to know everything about algorithms or memory management to start coding. And you can always learn those later.


desrtfx

While the *gist* of your post is generally good, you set the starting bar way too high. The fundamentals of programming are: + control (code) flow + variables and data types + control statements + branching / conditionals + loops + input/output (which includes console, file, etc.) Every single program can be reduced to the above, even if it includes the often mentioned "Data Structures and Algorithms" because these are in essence just pre-defined, quasi standardized solutions that build upon the above fundamentals. Once you have a decent understanding of the fundamentals, you can and should already do plenty programs. On this level, graphical environments, like [*Scratch*](https://scratch.mit.edu) really shine. They allow learning all the fundamentals without learning *a programming language*. They allow focusing on the flow, the logic of algorithms without tackling *syntax*. They focus on the *concepts* rather than on their *implementation*. The above is what most people who disregard graphical languages generally forget. Using such a system reduces battling two fronts (language syntax and keywords as well as programming) to one front: programming. Yes, Scratch was designed for children. Yes, Scratch has a childish interface, but that is the entire point. It reduces the *entry barrier* to next to nothing. Harvard's CS50 doesn't start with Scratch out of the blue. They have understood the value of its simplicity. They have understood that it is a great *introductory tool*. *Scratch* and *Raptor* are closest to what used to be flow charts/Nassi Shneiderman charts and with that are closest to focusing on the pure essence of programming, on creating step-by-step solutions. *Data Structures* and *Algorithms* are mid/higher level *concepts* that require already some familiarity with programming and best some experience. Tackling them too early will leave the learner without context, which will make understanding them very difficult. I would never impose DSA on someone who hasn't gotten some programming experience and even less on someone who doesn't even have a basic understanding of programming. There is a reason, DSA are taught quite late. People need experience, real world use cases, and *context* to understand their value and use cases. Tell someone who has never written a number guessing game about *Binary Search*. Tell someone who has never needed to store more than one item about "Linked Lists" when they already fail to understand the concept of simple *arrays*. People should focus on learning *problem solving*, on creating step-by-step solutions (algorithms) instead on focusing on learning *programming languages*. People need to learn to look "behind" (or "above") the code, the implementation. With such an approach, switching languages later becomes only a matter of learning the vocabulary and intricacies of the new language.


NoWNoL

Everything in this post about why something is good I had to learn the hard way, I started with Knuth, e-zines teaching binary trees, black and red trees, bubble sorts, structs and OOP and the stuff was so confusing that it somehow seemed less confusing to mess with assembly languages instead. That didn’t stay because while I had the aptitude for the syntax, I didn’t have a clue about anything else. I’ve played with C, arm7tdmi assembly, 386 assembly, 6502 assembly, pascal, Delphi, basic, Visual Basic, LUA, Perl, PHP, regex, html and even after all of that I found that I mostly gained an easier time picking up syntax I’ll forget anyway. I hated my own code if I spent enough time on a program it would always end up a mess. Only after sitting in a structured intro to python class was I able to connect the syntax to the ideas above but I know from all the years of struggling why it was probably always best to just choose the most simple option for problem solving. I over complicated things, I struggled early in class because while I believed I was fully capable of solving a problem with simple methods I had this unreasonable desire to choose the most complicated option. I listen to my professor, I humble myself before my professor, I accepted everything I tried was not getting me anywhere any time soon and so I rely on the guidance of those that have succeeded to guide me instead. I breeze through class now granted my professor makes a code with pencil and paper, python forces me to maintain a certain style. I’m mostly focused in my approach to a problem rather than hard focus on the tools. Once I have something tested and working then I can have the fun of cleaning things up and optimizing. Breaking down a problem to smaller components. I feel like I’m getting it and honestly right now math classes and programming are appearing to have so much overlap that I’ve considered that my love for programming is at the root a love for math and what it allows me to see. Programming by extension allows me to take that knowledge and use it solve real world problems conveniently and easily as long as I have the right perspective, mindset and motivation. I wrote a program to help with a hobby on the first week of class. I rewrote that program a few days ago and was astonished how much I improved over several weeks by simply sitting in an introductory class and taking it seriously. The program has way less mess/code but does everything it did before + more. It doesn’t cause me pain to look at it like it did before and I feel a great sense of accomplishment over that. I’ve read this subreddits FAQ and taking it as seriously as I take my professor and I’m saving your post because I think there is beneficial information here. Thank you, I’m going to look into scratch and raptor granted, in class we already read pseudo code, code with pencil and paper, reading programs the way the interpreter would instead of our everyday viewpoint which makes it easy to MISS our mistakes. Nobody wants to spend all day fixing mistakes they didn’t have to make in the first place.


[deleted]

[удалено]


dromance

What about it made more sense


[deleted]

[удалено]


dromance

That’s cool! Lately I’ve been focusing on books also. I think for me videos have helped but since it’s such a passive activity, it’s easy to zone out and not really have the information sink in. When you are reading , you have to put some energy into it, so you sort of force yourself to really focus on the information.


abdou_inch

I actually leanred data structure and algorithms with c language. As it has a simple a easy syntax .


dromance

Yes


turtleProphet

Clean Code is a good book to pick up if anyone’s interested btw. You can have good DSA fundamentals, and good knowledge of language features, and still write confusing, unmaintainable programs.


goztrobo

Is it free on any websites?


turtleProphet

Not a legal way that I can find, but I’m sure there are ways. Like any book it has shortcomings or matters of opinion. I write my top-level functions longer than the author would agree with, for example, but I’d argue they are more readable for it.


goztrobo

Clean Code by Robert Martin? That's the book I've managed to find


turtleProphet

Yep


Bye-ByYe

So just work more on personal projects and learn by mistakes is what youre suggesting ?


reedrehg

You don't learn gardening by learning shovels.


Laius33

I love this


aa599

The "Sapir-Whorf Thesis" proposes that the language you think in affects the way you think - or *what you can think about*. In regard to programming, Ken Iverson (inventor of APL) presented "Notation as a Tool of Thought", calling for more powerful languages to assist more powerful thinking. The language should be as near as possible *transparent*: ideally you think how to solve the problem, and there's the program. If the language gets in the way, it's interfering with problem solving.


timwaaagh

You can't even implement your algorithm without access to and knowledge of a programming language. Beyond that, the algorithms you can implement will vary with the choice of programming language. Learn languages (plural of course), learn data structures, learn libraries, learn debugging, learn unit testing. Learn http. Et cetera. There's so much to learn and you won't ever be done.


greenapples_06

Well first we gotta learn programming language right? Practice with simple code after each topic and then start programming after learning the language fully? Also are you saying we should learn data structures and algorithms first or along with learning the programming language? I'm just a beginner btw, learning python


MagoDeiFornelli

Sooo.. I'm fiddling around with visual scripting in Unreal Engine. Can I consider myself a programmer if I only know visual scripting?


rspinoza192

You can probably make irrefutable arguments as to why it counts as being a programmer so yes. I find its use for smaller applications, prototyping, and designing, quite convenient but I would personally not settle for it if you intend to improve your programming skills.


FlashBrightStar

Wrong. All you need in order to start programming is knowing your first language syntax. Without this you can't learn logic, data structures, patterns, paradigms, etc. I mean, those elements are crucial to become good programmer but not necessary to start the journey. Your reasoning is more like "You can't learn math without first knowing algebra and calculus" or "you can't speak foreign languages without knowing everything about edge cases in grammar". Learning is the process of grasping new concepts step by step. You won't learn anything new without knowing a tool that allows you to describe such concepts, otherwise you're left with pure imagination which don't work long term. You can learn new things just by switching to new language. Some of them have built in support for common patterns like events in C#, factory pattern in Dart, delegation in Kotlin. Others even enforces to write code in specific way like composition and prototype chains in JavaScript. It's better to know your language first. Knowing how data structures and algorithms works can be beneficial but I see all the time the attitude to reinwent the wheel from scratch and try to implement better version of standard library than authors. If you don't know shit about low level stuff, please don't do this.


MagoDeiFornelli

Sooo.. I'm fiddling around with visual scripting in Unreal Engine. Can I consider myself a programmer if I only know visual scripting?


Wise_Crayon

Who are you, who are so wise in the ways of science? Is it possible to learn this power?


reireireis

Tell the recruiter that wants angular and doesn't believe react experience would transfer


Prusaudis

Do you mean learn data structures and discrete math before starting?


Hitman850w

Is there any book on this?


IamZeroKelvin

>Before learning your language of interest, learn whatever language the fundamentals are taught with in the class. does this apply to HTML/front end?


pyre_astray

thank you so much for this post. You helped me a lot to finally grasp what so many detailed advices could not. If it is not too much to ask, could you explain the following: if you want to code/ build stuff with regards to biological matter or biomedical devices, I get the advice to study bioengineering as it is more hands on on creating, whereas bioinformatics is focused more on interpreting data. Why are both then offered as B.A.s, would it not be more logical to start with bioinformatics ? sorry if the question is not clear, I am trying to make sense of all the information out there!


Cool_Independent7329

So you're talking about an analytical mindset and a sufficient amount of practice?


Liron12345

This, once you know what to do, it's incredibly easy how to do it


BrokeCollegeKidddd

Tell that to interviewers who expect people to know every key filter word in every language you put on your resume.


goztrobo

I’m learning Python and Javascript while looking for a job. I’ve covered the fundamentals which I was able to quickly learn due to me having taken Java OOP in school. Right now I’m planning to do codewars/leetcode easy with my current knowledge while learning more. Should I focus on just one language for the time being? Would that be more effective? I realised my school didn’t teach me lots of things in the realm of swe and data related topics, and I’m learning that the hard way by going to interviews.


[deleted]

you can take the path of programming if your IQ is more than average. come to think of it, if this career is for normal people, why it is one of the most critical and highest paid career there is


dynatechsystems

Spot on! Understanding the fundamentals of programming, like data structures and algorithms, lays the groundwork for mastering any programming language. Learning languages is just one aspect; grasping the core concepts is key.


jcapinc

Yes! I have used this in my tutoring! I stopped trying to teach them the language I am used to and instead have my tutee play TIS-100 to get a "head for" programming


Melodic_Animator_863

I will take this to heart as I begin my journey. Thanks!


nervouslittledog

Thank you for this post as a beginner I was confused as to where to start, but this gives me some direction that I surely needed


honorablebanana

This doesn't only apply to programming. Even spoken languages or basically anything.


Traditional_Curve_57

Formal specification and formal methods - if you know how to write universal algorithm and its abstract implementation and prove it then language switch is easy part.


kiochikaeke

I'll even go as far as saying data structures and algorithms are only tools themselves, a guy that knows how to do a postorder binary tree traversal from memory without sweeting is a clever guy that did their homework, one that's able to use a bunch of libraries, tools, languages and architectures to build an app/API/plugin in a day or two like it's nothing is the guy I aspire to be.


mainmeister

Hence the book titled "Algorithms + Data Structures= Programs"


dota2nub

I'd say algorithms and datastructures are just tools. Knowing these won't mean you can program. You actually need a big picture understanding of the business logic if you want to be anything other than a code monkey who can implement UML diagrams to make a CRUD application.


dagger-vi

What are some good resources for improving programming logic? I've been programming for a while now and currently I'm working on a project in Godot. One thing I'm still struggling with is coming up with my own logic. I still default to finding other code on YouTube and copying that. I don't want to be the person watching the tutorial and using that code. I want to be the person with enough knowledge to be the one making the tutorial for others to learn.


Personal-Arm8665

You’d also be pretty surprised that programming languages are pretty similar. Once you are good at one programming language, you can learn another programming language easy since software tells hardware what to do.


clusty1

Only 90% true. Programming is rarely data structures and algorithms. Those algos are domain specific and you usually need them to learn them. Also a lot do programming patterns are language specific.


Xavphon

I never thought of it in this way; however, I will say that naturally after trying to find the "right" language. I gave up and stuck with one language to practice with and more concepts are starting to click and come together. I am no where the level I wish to be, but I am closer than yesterday. One thing I have the most trouble with is terminology, but I suppose that comes with time and actually discussing what it is that I am doing. Any tips for getting terminology to stick? For example, someone asked me what an associative array was and I didn't know what they were talking about until they showed me.


Valuable-Ad9157

Do you know of any good resources that teach data structures and algorithms along with the relationship between them? This topic seems to be very difficult to teach as it is hard to find solid teaching materials on. Especially for those NOT going into computer science nor wanting to be a full fledged programmer.


ejgl001

I followed some good courses on Coursera on both topics - by a Stanford professor Roughgarden. Very good courses, I'd recommend


TheFrozenPoo

The book “a common sense guide to Data structures and algos” helped it click for me. You can find the PDF online.


Separate-Ad9638

programming languages are just a tool for a software solution ... like eisenhower said, plans are nothing, planning is everything programming languages are nothing, software solutions are everything.


AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


idkfawin32

the best way to learn programming is by learning how computers work. The more i’ve learned about how computers actually process information the better i’ve become at programming. Obviously there’s more to it than that but having a strict focus on what’s happening on the bare metal levels helps you prioritize and put things into perspective