Programming for me started way back in 1996. I learned a little bit about C, carried the torch for it because of my interest in Linux, and let it go around 1997 until I decided I wanted to write games back in 2013. Apparantly I didn’t want to write them bad enough, because my interest in programming went into cryogrenic slumber midway through 2013 until the beginning of this year.
Now, as someone who is going into cybersecurity, my focus is not on development or programming, but I have come to enjoy the time I spend doing it. I mean honestly enjoy it to the point that were I already not so invested in cybersecurity, I would aim for software development. I don’t care how awful software development may be as a career at times, I’ve gotten quite addicted to the feeling of progressing in a language and actually understanding what’s going on. That’s what this entry is about.
I think that I might have been looking for an excuse to get back into programming, because I was doing a lot of searching for articles or videos about “Programming in Cybersecurity” about halfway through earning my cybersecurity degree. After you search along those lines for a while, you’ll understand that there’s a consensus that “cybersecurity involves scripting”, and “python is great for scripting”, therefore “you should learn python for cybersecurity”.
While I did pick up a little bit of Python back in 2013, I still had to run the gamut of introductory lessons in order to understand the syntax and the structure, so it took me a little while to get back up to speed. However, the bad habits I had developed were still with me, and it wasn’t until I had been programming for six months that a real shift in my approach occurred: I started programming instead of just thinking about it.
Now, I had been “writing code” up until that point, but there was something very different about how I was doing it now versus how I was doing it then. Learning to program for me, in the beginning, involved reading through a book, taking a lot of notes, and writing a few lines of code, or doing a few exercises. It wasn’t an interactive, thoughtful process where I would go out on my own and actually experiment with the language. My ability to write code was limited to what was in the book. I would write little snippets, every so often, that were a little bit original. Yet doing so was a real chore, and I found no joy in it whatsoever. That was part of the problem.
I think the real shift occurred when I just stopped being lazy. Above all, I stopped being afraid that learning to program was going to take a really long time. Every time I would sit down for an hour of learning Python, it would be a chore itself. I would read through a section in “Python Crash Course”, note the important stuff, and repeat things I had learned to myself. I would complete the exercises, and they would give me a little boost in confidence, but I always knew that what lay ahead was more plodding through the material until I reached another exercise that gave me a chance to apply what I learned.
One day, I just told myself that it may take 100 years to learn Python, it doesn’t matter. What matters is that I understand what I’m doing before progressing.
That was where it happened. Programming prior to that, was a shaky, uncomfortable slog through lots of text, an occasional nod that I “got it”, and moving on to the next section. After all, if I didn’t move on to the next section soon, I’d never learn Python. I think that’s another piece of the puzzle there — I was afraid that I wouldn’t learn the language in sufficient time.
As an aside, I think it’s interesting to note that developers who have been programming for more than 10 years will often make the statement that they still haven’t learned the language. I think this has something to do with that.
After that, I started to enjoy what I was reading, and I started to enjoy programming. The joy was not getting things done, or completing projects. It did start to come from completing things, but it had more to do with little things that contributed to something overall.
Back in July, I attempted to program the game of Battleship in Python using the TkInter library. I never finished it, but I don’t regret that in any way. I learned so much about debugging code, organizing my code base, and all sorts of other related things, that it doesn’t matter that the big project didn’t get completed. The joy came in taking the time to understand what I was doing in the midst of the project, and really take the time to work out the kinks before moving forward.
I could go on and on like this, but I think I’ve made my point. The biggest thing I learned about programming in the last 9 months is that no matter how long it takes to understand something, take the time to understand it before moving on. You’ll never completely learn Python, or Rust (another language I’m taking up at the moment), but it’s not about that.