As a note, this is a post that was migrated from the few entries on my WordPress blog.
The hardest part about blogging is always the first entry. I’ve decided to use my first post to help a friend and any other individuals that want to advance their programming skills. I’m going to try to break this subject up as best I can into three different levels as everybody has a different skill set. Although, there may be overlap from one level to another.
Beginner: How to Start or Where to go if Class is Moving too Slow
Although it can become one of the biggest distractions in your life, I’ve found reddit to be one of the best places to go to further my programming knowledge. Here are some subreddits you might want to subscribe to:
r/CSEducation - This subreddit is focused mainly on the educating of computer science. I’ve included it at the beginner level because I’ve seen many great websites mentioned and the curriculums covered go from elementary school up through graduate school.
r/codepros - Don’t let the pro in the name intimidate you. This is a newer subreddit I came across the other day. It’s focused on showcasing programming projects. This isn’t the place to post your homework questions, but if you’ve got something to showcase it seems like a great venue for feedback. Also, many of the projects seem to be hosted on GitHub, so you could fork a project and add to it. This would also be a good time to learn about versioning.
r/javahelp - I believe similarly named subreddits exist for other languages, but since java is usually the starting point for many, I thought I would explicitly call it out. This would be a great place to search/post if you’re getting stuck.
r/dailyprogrammer - This is one of the best resources to pick up a new skill set or keep your current skill set fresh. Easy problems are posted every Monday and they recommend posting your solution in the comments. This is a great way to get used to accepting feedback and participating in code reviews.
r/learnprogramming - The actual posts in this subreddit can get rather advanced, but the sidebar is full of great resources for beginners.
r/cscareerquestions - It’s never too early to start learning about the industry. I’ve seen a lot of good questions asked here.
r/resumes - On a related note, if you’re struggling with your résumé, this is a great resource to critique yours. Just make sure to remove any personal information. If you’re not sure what to censor, take a look at a couple that people have posted before you submit yours.
If you like learning via the traditional classroom setting, I would recommend using iTunes U if you’re a Mac/iOS person, otherwise coursera.org offers a similar product without the Apple ecosystem integration.
However, not everybody has time time to sit down and start in on something new. If you’re short on time, but still want to get the most out of your classes, you can challenge yourself by modifying what you’re given. If you finish an assigned programming project before it’s due and want to do more, there are a few things to consider:
- Translate the assignment into a new language you’re unfamiliar with
- Optimize the program to run more efficiently
- Rewrite the program to execute with fewer lines of code
- Go back and comment your code
- Determine edge cases and write tests accordingly
If you have any tools that have helped you succeed as a programmer, please tell me about them in the comments. I’m always looking for new ways to learn.