There should be a time in every developer’s life where they begin to give back to the same community that helped them become proficient software developers themselves. This blog post is my desire to share some of the resources that have helped me on my journey to eventually become a senior developer.
The first resource I would recommend is CodeCademy. As my skills continue to improve I realize that some information is left out of the curriculum for different courses, but the website is meant for beginners. The more advanced information will come from practice and other resources. CodeCademy is a great starting point for learning some basic developer languages and frameworks. It allows you to determine whether or not software development is the right choice for you. After going through almost all of the courses on CodeCademy, I moved on to developer courses at Udemy.
Udemy is an incredible resource for learning, not just for software development, but really for any topic that you so choose. That being said, the software development courses are particularly good as long as the instructor is highly skilled and capable of teaching effectively. Udemy does have free courses, but the beneficial courses are usually paid. However, Udemy has very regular sales/discounts that usually have the more expensive courses that were originally $90-$400 now available to purchase for $10 or less. In addition these courses are good for life. There is no subscription or future payment that will occur. I would encourage you to try a few, but be sure to examine the reviews and feedback for the different instructors before paying money for a course. Personally I completed the Ruby on Rails course by CoderManual, and the Web Developer Bootcamp by Colt Steele. I highly recommend both of them.
I cannot truly explain FreeCodeCamp in word format that does it justice. It is something that needs to be experienced. FreeCodeCamp is a free online community that teaches software development for front-end and back-end languages and frameworks. The best part is that once a developer is skilled enough they are able to work on real-world projects for non-profits. It is a great way to learn and improve technical skills while also doing a great service for other people. I can only say positive things about FreeCodeCamp. Another great resource that is similar to FreeCodeCamp is the Odin Project.It allows developers to learn and then practice their skills with real projects.
For challenges that allow you to continue to improve your skills, I recommend HackerRank, TopCoder, CodeWars, and any other place where you can practice code kata’s. If you would like to know what a code kata is please read this information.
For public version control and contributing to open source projects I recommend Github. Github is especially important for putting your code into a public repository so that other people can view how you write your code to solve a particular problem. For private project repositories I recommend Bitbucket.
For using an Integrated Development Environment (IDE), I recommend Cloud 9. Cloud 9 is one of the best IDE’s that I have ever used. Navigate to their website to learn more about them. For a text editor I regularly use Atom. Atom is really awesome, and you can even integrate Github into the editor because the creators of Github were also the creators of Atom.
Another important aspect to learning software development is knowing how to ask questions and search for answers. For that I would recommend Google, Quora, StackOverflow, Yahoo Answers, and of course reading other posts on Medium!
I highly encourage you to create a blog and begin documenting your learning process for software development. My favorite platforms for blogging are Medium, Hubpages, Blogspot, and SquareSpace. Read other developer’s blogs as well. Ask other developers for advice too. Join a local software development meetup on Meetup and collaborate with other people to do things that you have never done before. The only limitation to learning and improving your software development skills is yourself.
And finally…practice, practice, practice! However, make sure that it is intentional practice, not just repetition of what you already know or learned. It needs to be a constant process of having a problem and figuring out a solution to that problem. The next step is how to solve the problem more efficiently. You should always be challenging yourself to learn and do more than you have before. With that being said, keep up the good work and you will eventually see the progress. Be sure to reach out and collaborate with other people. By working together, I know that all of us can help make the world a better place.