So I have realised that I'm quite a shoddy programmer.
This is what happens when you learn from "Instant" online courses : You skip over the fundamentals.
So to remedy that I"m on a journey.
I am currently following a course of udemy:
Computer Science 101: Learn Computer Science to become a better Programmer and Software Engineer.
The course basically teaches you what the Big(0) is and also teaches the various memory models like Arrays and Linked Lists (It's more of a close to the metal approach)
This course is helping me understand memory, after @design_RG exposed me to drum memory. I got fascinated with the way the register works and everything and now i want to first understand CompSci fundamentals before jumping into languages.
But the problem is that I feel Memory is only part of the equation.
The reason I decided to get into CompSci at 29 was because I was interested in Logic.
I wonder if anyone knows a good cheap online resource to understand the fundamentals of Algorithms.
As I've always known that these courses that teach the rocks of this craft always have the word Data Structures and Algorithms in them,
I have a course that covers Data Structures in a language agnostic way.
Anyone know of a similar cheap course that covers Algorithms too?? Does this even exist or is it a product of my imagination?
To be fair the **vast** majority of programmers are shit. The sad part is that a large portion of them don't realize it. Those are the ones who are really doomed.
the very fact that you think you are a shoddy programmer, whether true or not, is already very promising.
Yes, I think Jeff said it well - the fist step in the road to improvement is to recognize there's a lot more to learn.
So don't despair, and be happy you have the curiosity to seek this knowledge. You will have a better understanding, do better work as a result of the learning you acquire.
The course you described above sounds excellent. I had programming courses ages ago, as part of my first year Engineering curriculum, but don't feel qualified to point the way into a scientific approach to education deeper into computer science.
I agree fully with your insight that the concepts should come before learning a specific language; or be taught along with the language, as a way to practice and produce test code.
Glad to see you engaging in this fascinating journey, Karl. Go for it!
Depends on what mastery we're talking about. Mastering computer science or informatics, that's probably a PhD level pursuit; programming is just a set of tools for informatics, and different languages are like variations of medical tools or chemicals. You can master a specific tool fairly easily given enough time, but you'll be limited by how every problem looks like a nail unless you learn how different tools can be used together. That pursuit is never ending.
I don’t think it’s bleak. I’ve been doing this type of work for about 30 years and I still have plenty to learn. I’m OK enough to have worked on some amazing software. If you’re interested in programming computers just keep working at it. Ask questions. 30 years ago I was lost. Now I could manage a team through a project and deliver a great piece of software.
This issue is that 90% of people who get into programming never love it. Its a job they pick because they need to pick a job and they think it will make money. Thats all. So they are doomed to fail from the get go.
That makes sense, and it's a pity. It can be a satisfying occupation, especially if the person is motivated by the problem solving, new challenges and constant learning.
But it isn't for everyone. I have seen some of the programming challenges posted here by one user, and imagine that an average student in high school would not react well to anything needing that much focus, and understanding of abstract data structures. (in case we proposed simpler, but similar challenges to them)
I learned the basics of programming when all we had was pencil and paper, maybe a blackboard, to jot ideas and develop it. When you had enough laid out to start creating the program, you would write it, line by line, and parse thru to see if it made sense.
Processing it came later, not instantly by pressing a key to try to run/compile it.
Teaching programming in high school, students had a hard time tackling a similar challenge - writing a small routine on paper only, and verifying that it would likely work. Was surprising to me, but most of them felt it was hard.
I don't think that you need to love a job to do it well. You might not be exceptional, but you should be able to do good. I think the problem software industry has is that, with proprietary software being the norm, there is no public eye on the mess that people make, which result in lack of standards and discipline, even in the free software islands.
@Full_marx No idea. My only experience with those sciences is suddenly realizing I need them, looking up the specific topic, finding random old videos of some university courses or articles, barely understanding anything and giving up.
Do you want to be a software engineer? Or a computer scientist? Studying "algorithms" is one thing, and reading code is another. Probably both is best. For code-reading, there's a book Beautiful Code for some ideas. And there are two, three or even four free-as-in-beer books about The Architecture of Open Source Applications.
There are great courses on Coursera. They are a bit costly considering the INR value but the investment is worth it.
One by Princeton and another by University of London is good.
Also for book, you can try Introduction to Algorithms by Thomas H. Corman.
I'm a terribly shoddy programmer in many respects too :) maybe try https://www.codewars.com/ which I haven't used yet, but I was looking for something else 'like' this that used to exist years ago, unfortunately I don't recall and it was probably swallowed by the internet.
doing kata is always a good method of polishing your skills.
I'm late to the conversation, thanks for the patience!
I agree most of the people who work with programming and/or system development are not academically trained and from this group even a smaller fraction has extensive compsci education. But look it from the other way around, these people are still working in the field - meaning this education isn't necessary for most.
By all means go after it if it interests you, but take some time to look around. There are so many specializations and subfields one can study, I find it difficult to recommend it in generic terms. An analogy would be to compare "I want to study medicine" to "I want to study oncology".
I like to study theory of computation, but it isn't for everyone. Find your niche :)
And good luck with your studies!
QOTO: Question Others to Teach Ourselves. A STEM-oriented instance.
An inclusive free speech instance.
All cultures and opinions welcome.
Explicit hate speech and harassment strictly forbidden.
We federate with all servers: we don't block any servers.