I am talking about self taught people. And by really good I imply good knowledge of CS fundamentals so that when they write code it looks and runs elegantly. Performance is thought about and also readability. We know CS is about computational problem solving not just about programming.<p>Most guides out there say do this course or learn this language or may be do some web development and you are a programmer. I know it works to a certain extent but doesn't achieve anything beyond a certain threshold.<p>Is it possible for someone to self study CS from available materials like good books, public course contents? To such an extent that they have solid grounding in CS fundamentals, learns programming as a tool and become good at it gradually and when needed can venture into a sub-domain and learn about it using the skills already obtained previously to solve problems computationally.<p>Has anyone here done that? Can you share your journey? Or are there any documented blogs or something?<p>No offence to "web developers", but I am not looking for advice like learn this framework, this is hot. I want transferrable skills.
I learned FORTRAN (at a very beginning level) in a high school class. Then I learned BASIC from the TRS80 BASIC manual. Then I learned Pascal from a book. Then I learned C from K&R. Then I got a break - I got a job as a C programmer. I got some mentoring from some more experienced programmers. Eventually I learned C++ from Stroustrup. I learned Java from a book, though I don't remember which one. I learned Perl from the Camel book.<p>What I know of the CS fundamentals I've just kind of picked up on the way. Big O? I learned what I needed from a paper. (I don't analyze algorithms for Google or anything. If I did, I'd need a lot more.)<p>In real life, very few jobs need you to know "CS fundamentals". They need you to know software engineering - writing code that works, good taste in design, discipline in handling errors, testing, communicating technical matters well. It's worthwhile to know what the CS fundamentals are, but it's OK to learn the details when you need them.
I'm not sure why it wouldn't be. All textbooks and most valuable courses are available online (a lot of them free). Read the materials, do the exercises and you're on par with people who went to university. Not sure what the point of this question is.
Yes. It requires lots of deliberate practice, like most difficult skills. Expect to put in years of practice and study. There’s no shortcut. I think people struggle and get stalled because they look for the shortcuts when they need to put in the time. I taught myself programming, with lots of help from more advanced programmers, back when I was a teenager and young adult. It took five years to get to employment as a junior, and at least five more to get to senior.<p>Programming has little to do with computer science. Knowing how compilers work, basic algorithms, etc. comes in handy.<p>I have worked professionally as a programmer and analyst, with lots of system admin, for 40 years.
I started programming in BASIC on the Commodore 64 mid 80s, and went from there to C/C++, Turbo Pascal, Delphi, Perl, C#, Java etc. I've never studied CS, I actually started working right after primary school, and have worked ever since.<p>I'll leave it to others to decide if I'm a good programmer, but at least I've never been unemployed, so I guess that means something, maybe that employers are desperate. :)