Ask HN: what are the essential courses to became good programmer?
Finally, today i realize that I am a bad programmer. I do coding in ruby. Since Ruby is a high-level language, I never have to worry about things which are going inside. I don't understand memory management, garbage collection and all sort of computer theory oriented concepts, I don't even understand why does BigO or SmallO (or whatever) matters (atleast in RoR apps). But I see some people are crazy towards it. And, they are brilliant although they don't know Ruby language more than me.
I am solo founder and developed my SASS application. I learned ruby and RoR, it took me 2 months to understand and write a web application in rail's way. I followed Michael Hartl book, Codeschool, Railscast. Now, it's about 1 year and i decent debugging and development knowledge.Sometimes I answer StackOverflow question and I'm earning a good reputation. But inside my heart I know I am a bad programmer. I searched almost all things in google and copy its answer. Writing code is the last thing I do. I know that is not good thing, but I am okay because of code quality. Moreover reinventing wheel is not a good thing. Not to forget, deadlines and pressure.
Now, I am ashamed. I need your help, please. Please tell me some roadmap or course which will enlighten me to all those things which computer programmer should know, it may be like encryption or statistics or operating system or whatever. I want to entrepreneur and developer, just like Marco Arment.
Thanks a lot.
14 comments
[ 2.4 ms ] story [ 48.4 ms ] threadYou can't be a great coder without writing anything.
Like a3voices said... Build real world projects. Familiarize yourself with the concepts of business such as inventory, transaction and event management. So you will better understand how to help your clients.
In the end there are a lot of roads to Rome... but if you don't understand why your client needs to get to Rome you'll be of no use to anyone.
Being good at algorithms and data structures isn't about memorizing them.
What you say is true, but it's not either/or. Knowing how to implement something besides quicksort is important as well - the algorithms matter because they represent paths to efficiency. How can you judge what a good solution on SO even is unless you understand what you're looking at at more than a superficial level?
http://jenniferdewalt.com/
Building websites won't work, but implementing algorithms in a book like CLRS http://mitpress.mit.edu/books/introduction-algorithms will.
One of the biggest problems in learning something radically different is knowing what it is you don't know. A solid background will give you plenty of hints, and just looking at tables of contents can help you quickly get to the good stuff if you aren't looking for a solid background.
Programming Pearls by John Bently
Design Patterns by "the gang of 4" Erich Gamma, Richard Helm , Ralph Johnson and John Vlissides
Beautiful Code edited by Andy Oram and Greg Wilson
Good books to read about practical software engineering are sold here: https://pragprog.com/ I'd start with The Pragmatic Programmer.
By copy-pasting things, you've gotten yourself into a habit of just banging things until they work. Now, you should approach things from a scientific prospective: try to understand why they work, then write something to test that understanding. Build coherent and clear mental models.