In the technology industry, coding is a significant skill to have. Simply because technology runs on code and if you understand what is happening at the most basic level, you can more fully utilize your tools. And if you really think about it, every piece of software, really everything on your computer is a piece of code. In the security world, learning to code is of the utmost importance in my mind because attackers leverage coding errors for attacks and we must monitor behaviors a low level to successfully detect the adversary. All these can better be understood with solid programming skills.
So coding is a good skill to have, but where do you start? Now a days there are many options for coding school types out there online and in person. You could do a bootcamp style in person, free online schools, paid schools, university made courses, and even meetups locally. Many of the options are not free however many are. One in particular called Codecademy who offers both free and paid versions of their course material. To tell you the truth I would definitely recommend starting off there. They have some great intro classes that are absolutely free. And they have a wide array, no pun intended, of languages that they teach. Their method of instruction is a mix of videos, quizzes, practical application, and projects. Now they do have a paid service if you want to go that route, where someone reviews your code and acts as a guide on your journey. To be honest, I don't even know if it's worth it because I've never done it but just throwing it out there as an option. The free code academy is amazing though and I use it every time as my first step with a new language.
Another online school is Kahn Academy. I think this is a completely free website, but not sure. The target audience is younger grade level students which is great for those new to the subject. There is actually a great background story to the academy if you have time to look it up. Anyways, coding is hard to wrap your mind around and may be unlike any other skill you have tried to grasp before. Sometimes having the information explained a different way can expedite the learning time frame. For me, I struggled when I was first introduced to coding in college and it didn't click until years later when it just made sense. Kahn Academy may do this for you. I know I used them for some advanced math courses and I couldn't be more grateful. So give them a shot if you are having a tough time.
Another option once you get your feet under you with a new language, is doing katas. Check out the site Codewars for this. The term came from martial arts where you learn a form, which is a repeated actions for a particular situation so that every time you encounter the situation you respond the same way. With coding kata's the idea is the same. You face a common challenge. Learn how to solve it. And now you have a method for conquering that issue every time. The website does new ones every day and has a large bank of kata's to try at anytime. But it's a great way to practice your coding technique consistently. Not to mention you can look at the ways others have coded the same problem, hopefully helping you perfect your solution and understanding.
So katas are great to continue to practice your programming skills but I definitely recommend you working on a project of some sort. As you become more proficient in a language, and more proficient solving problems, it's time to think about what problems in your life you can solve by creating a program. One of the first larger programs I wrote was to help me with an exam I was taking, the OSCP. I needed a way to do some recon while I was doing another portion of the exam because the exam was a short 24 hours long to solve 5 difficult problems. I needed a way to optimize my time. The goal of the program was to check and run a series of tasks that I would have to complete later but instead of waiting on them to finish I could be doing something else. So I found someone else's program that accomplished a similar task and added to it for my own purposes. In all this code saved me about an hour of test time to use elsewhere, helping me practice coding, and made me think more diligently about the problem I was trying to solve.
Another tool and one last school is Team TreeHouse. Now I know I'm throwing out different things but everyone learns differently. This one has a major drawback and that is it is a paid program. At one time, I was totally against paying for this type of information but you can't beat the quality of material from businesses like these; well if done right. I am now a happy convert because I use it, almost daily to brush up on my skills. They, like Codecademy, have an array of languages to choose from and paths into specific subjects like full stack programming. This is actually the track I am on and it is 33 hours of content. Insane. Most of their tracks are similar in length with topics such as Java Web Development, Full Stack Foundations, Beginning Python, and Rails Development to name a few. Some of my favorite things about Treehouse is the quality of videos, the structure of content and the in depth areas they cover. I mean once you understand the gist of programming, you start to brush up on areas like functional programming, object oriented programming, and design patterns. You really can't beat the content. Now I am not an affiliate of theirs or anything but I do have a referral link if you fall in love with them like I did. You can click the link here to help me pay for my studies :). Anyways I think you will really like the school.
Tons of tools here today to check out both free and paid. One of the most important steps in learning a language is to be consistent and persistent. Keep at it a little everyday and you will get better. I guarantee it. If you get frustrated, comment below and let us help motivate you. That's all I have this week. I think I will try to get more conversational and talk about tools, websites, and subjects I am learning. I want to give you more insight into what I do in my life and I realized recently that I have knowledge that could be useful to others. If you have any questions about anything in the blog today or a suggestion for a third blog you'd like me to write about let me know. I will keep this party going and I hope I can inspire others to find something new that brings them joy. Until next week...