The ability to code is one of the most in demand skills of the 21st century. Prominent figures like former president Obama have been huge advocates for children learning computer science and programming, stressing its importance to the economy. While I personally believe that coding isn’t for everyone, those looking for jobs in tech and specifically cybersecurity can definitely benefit from having a good understanding of at least 1 programming language. Information Security programming is used for the automation of many security tasks to increase speed, reduce errors and in the development of security tools that perform specific tasks. Here I’ll discuss some of the prominent programming languages used in InfoSec and some good resources for learning them:
Python is probably the most commonly used programming language in InfoSec. Fortunately it’s also one of the easier languages to learn for someone with no programming experience. The syntax is very clear and simple and it has a vast amount of libraries, which allows you to do many different types of tasks. Stack overflow has made the case that python may be the fastest growing major programming language. If you’re brand new I would recommend this as the first language to begin with.
C and C++
C and C++ are another very popular language among security professionals. They are what are called low level programming languages, meaning that they interact more closely with the hardware of a computer. The advantages of this are they provide the programmer with more control over their programs, are more efficient and faster in executing. However, they can be more difficult to learn, especially for a beginner programmer.
Now that I’ve introduced some popular languages, here are some options if you’re debating the best way to learn:
IT Automation with Python by Google (Coursera)
I’m currently doing this course and I’m pretty impressed with it so far. The course has 5 sub courses which start off with a crash course that teaches you all the basics of python and then moves onto IT specific libraries and concepts. One unique feature is that during the lecture videos they have practice questions that often require you to complete python scripts which keeps you engaged and gives you some practical experience with language. Each section has practice tests that further require you to write code to complete the problems and they have “cheat sheets” that contain a summary of all the content you learned for each section if you ever need a quick review. Price is $50 per month and it states that the average person takes between 4-6 months (which I think is longer than you will need). It also comes with a 14 day free trial so you can test it out and see if you like it.
Automate the Boring Stuff with Python
This book, which can be found for free here, is a great book for learning how to use python on the job. Even for non IT people, I highly recommend this book. It teaches you many of the techniques that python offers for automating different activities. Each chapter comes with practice questions and projects that you can do to apply the learning and add to your coding portfolio. If you’re more of a visual learner there is a video course on udemy that covers almost all of the content of the book.
Once you have a basic understanding of programming codewars is a great way to apply your knowledge with an almost unlimited bank of challenges. The way it works is you make an account, select the languages you want to learn and then you are given problems to solve by writing code in that given language. Everytime you solve a problem you are awarded points and when you get enough points you rank up. If you’re a competitive person or just want projects to practice with this is a great way to do it. There’s also a community element where you can see other people’s work once you clear a challenge and learn from how other people solved the problem.
All of these are really good resources for learning programming, but the most important aspect to getting good will be consistent practice. Constantly doing new projects and getting a practical understanding of programming concepts will go a long way in helping the lessons stick and demonstrating to others that you are a capable programmer.