Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
Andrew Shook
31,709 PointsHow can I become a better programmer?
I feel like I have hit a plateau in my professional development recently and I'm wondering what to do now. I feel like I'm competent in PHP, HTML, CSS, JavaScript, Ruby, Python, and jQuery. Sure I don't know the in's and out's of all of those languages ( I still need to reference Google every once in a while), but if my boss asks me to develop something in one of those languages I'm not concerned that I won't be able to accomplish the task. What I do feel is that I could do them better in terms of speed of execution, memory, and efficiency. However, I have no idea where to go or how to go about learning those skills. So my fellow treehouse dwellers, I would appreciate any advice you could give me.
Edit: What I'm looking for is resource to help improve the speed, memory usage, expandability and over efficiency of my programs.
3 Answers
Kenneth Love
Treehouse Guest TeacherMemory is built up with practice. The more you do something, the faster and better you'll be able to recall it.
Execution comes from practice, too. You start to find better practices and libraries the more you work with something.
And, to round it out, efficiency comes with practice, too. Much like execution, you'll stop making mistakes or taking the long road if you practice more.
All that said, to become really expert at something usually requires narrowing your field. You mention a ton of knowledge areas, which implies you have a shallow-and-wide understanding. Experts typically have deep-and-narrow understanding, knowing a lot about a very small area. There's absolutely nothing wrong with being a jack-of-all-trades, but it doesn't often result in "experts". (this said as having been a jack-of-all-trades for years before I decided to focus on Python above most others)
Andrew Shook
31,709 PointsKenneth, thanks for taking the time to respond to my question. I wasn't talking about being a better programmer in terms of practices (although I'm always on the look out for improving work flow), what I actually want to focus on now is writing better programs. I want to learn how to make my programs more efficient, faster, and minimize wasted memory.
Kenneth Love
Treehouse Guest TeacherAh. In that case, learn about big-O notation, read some books on algorithm design, and...practice :) It's such a cliche, but it really is true.
The more analytics can you grab on your software, the better. Find out where you're wasting cycles and eliminate those spots. Optimize queries using query explanations.
Andrew Shook
31,709 PointsKenneth, can you make any recommendations on good books for algorithms and SQL optimization?
Kenneth Love
Treehouse Guest TeacherI can't recommend anything on SQL, and it's not a book, but Justin Abrahms' talk from PyCon over Big O notation was pretty awesome. It's not tied to Python at all, even though it was presented at PyCon.
Andrew Shook
31,709 PointsKenneth, thanks that was a great video and exactly the kind of thing that I am looking for. If you can think of anything else for self taught programmers that would be great.
Jason Anello
Courses Plus Student 94,610 PointsFor Algorithm books -
Two that I see come up a lot are C. L. R. S. and The Algorithm Design Manual
They are both pricey though. You might be able to pick up cheap older copies at a used bookstore depending on availability in your area.
Jason Anello
Courses Plus Student 94,610 PointsJason Anello
Courses Plus Student 94,610 PointsHi Andrew,
Are you asking this within the context of web development? Or software development in general?