ASK HN: How to be a better programmer?
Any help would be greatly appreciated.
Any help would be greatly appreciated.
#1 Try cutting down on blogs. There is really no need to read them daily.
#2 Try to include open-source patching into your actual fulltime job (of course, management has to agree with this, etc). If you already work 12-16 hours per day, don't burn yourself by trying to do open-source on the side.
#3 Follow the good programmers nearby. This means move the the team that has the best coders and best practices. Externally, go to user meetings and occasionally have your company pay for big conventions.
- Practive! The more you program, the better you become. The harder the thing you program, the better you become. This is the single most important thing you could do. All the great programmers I know program outside of work, in their own time. That is, they take an interest in programming and practice even when they don't _have_ to.
- Read code wrtten by people better than you. This will inspire you and give you ideas on how to improve your own code.
- Go to local user groups or meetups. Meeting other programmers outside of work will give plenty of opportunities to improve, by talking about ideas, showing each other projects or code or by working on projects together. If the group also does talks/presentations/tutorials, then you have even more opportunity to learn new things and improve.
- Learn new programming langauges is a good way of improving your programming skill, as long as the programming languages you learn are all different. For example, if you know Java, you won't get a lot out of learning Java and if you know Ruby, you won't get much out of learning Python etc (unless you want to use a specific library for those languages). However, learning something completely different, like Haskell or prolog or Common Lisp would help make you a better programmer. Basically, learn a language that is of a different paradigm than the ones you already know. The language itself might not be useful to you, but the concepts, techniques and ideas of those lnaguages will improve your programming skill.
- As far as books go, people have different tastes. Most people will recommend the classics (Structure and Interpretation of Computer Programs; The Art of Programming, Code Complete, The Pragmatic Programmer and so on). They're good books, but may or may not be what you want.
- You can contribute as much or as little to open source projects as you want or have time for. Even just fixing a bug here and there is beneficial to the project, so find yourself a project that interests you and contibute what you can - but don't worry too much it if you find you don't have enough time. Understanding other peoples code and fixing their bugs is a great way to improve your own skill.
- Blogs.. I don't know. Its definitely a matter of taste. Keep reading articles linked by Gacker News and other such sites and bookmark blogs whos articles you like. Or go on stackoverflow.com and find people who post great answers - they may have blogs that would interest you. Bascially, try and find intelligent people who post about things that interest you.
Anyway, good luck!
Sound advice.
That said, I have enjoyed reading swaths of dictionaries :P
(I've read dictionaries too. And reference manuals for various libraries and languages. The Intel instruction set reference probably being my most read reference manuals)
From my experience, reading books is one thing but if you didn't make your hands dirty, it's nothing. My advice would be, if you are really new to programming go learn the basics and get your hands dirty ASAP.
Lot's of good stuff in there.
- Find a mentor. You'll improve slowly just from practice, but finding a mentor will force you to get up to their level at a much quicker pace.
- Read things. Books, blogs, whatever. If you have an active interest in it, read it.
- Use new technologies. Never heard of Node.js before? Stop and figure out what it is. Try it. Even if you hate it, you will have been better for learning about it. (Node.js is just an example I pulled out of thin air. This applies to ANY new programming thing you read about and is new.)
- Get a job. Even if it's a crappy programming job, nothing makes you learn faster than having a boss telling you to do things faster and better.
Who has not learned something more about themselves by watching the activities of others? To learn the sword study the guitar. To learn the fist study commerce. To just study the sword will make you narrow-minded and will not permit you to grow outward.
-- Miyamoto Musashi, "A Book of Five Rings"
* Introduction to Algorithms (SMA 5503) http://ocw.mit.edu/courses/electrical-engineering-and-comput...
* Structure and Interpretation of Computer Programs (aka SICP) http://www.youtube.com/watch?v=2Op3QLzMgSY
1) Head First Design Pattern
2) Effective Java (Joshua Bloch). The principles in this book can be applied to almost any programming language not just Java
it really is about that simple.