I have been teaching myself Python for more than a few years. To be clear, that means that I think about python for about a week, do a lot of reading, stay up late trying some real basic code, get distracted by other shiny things, allow weeks or months to go by, and forget almost everything I learned. It’s an awesome cycle if you like to repeat the same things over and over with no real long-term benefit. I’d be embarrassed to admit how many times I’ve been through the first twenty chapters of “Learn Python the Hard Way”. It’s a good intro to syntax but I always found, going through the chapters, no moment of “Aha!” where I bridged the gap on how this was going to translate into doing something useful and meaningful.
While I can hold my own in a lot of different topics of discussion in the networking and network security world I find that my programming skill is woefully inadequate and I berate myself on a regular basis for not being better at writing code. Most of that justified self-taunting comes from the knowledge that being able to write your own code is a really important part of network security these days. Many moons ago you could get away with not having some code writing mojo but those days are increasingly distant.
Oddly, one of the things that I thought eluded me for a long time (I write ‘oddly’ because it really is a dumb reason) was a ‘why’. Why should I need to learn to write my own code? The truth is that I don’t have a shortage of things I would want to do with some mad coding skills; I even keep a list of programs to write in Wunderlist. What I have always struggled with was the knowledge gap between ‘want to do’ and ‘how to do’.
Fortunately, I have begun to put that behind me. I am fully immersed in python these days and, having now broken through the barrier (albeit still only slightly) I can make the connection between ‘want’ and ‘how’. I still don’t know how to do a lot of things with python but I’m figuring out more and more stuff each day.
Starting today I’m beginning a new series of brief posts called “Wrapped In Python” in which I will share my progress. In the beginning you should expect pretty simple stuff. I only plan on posting stuff that is potentially useful. I fully expect a lot of what I originally create to get obsoleted later by more efficient code. At this point I know that code needs to be optimized for speed and efficiency but I’m still in the early learning stages of knowing which way is best to accomplish certain tasks. Experienced coders who happen upon my posts may roll their eyes at the convoluted and/or inefficient way I have accomplished certain tasks. I’m cool with that. Hopefully I’ll look back at these posts in a few years and laugh at how elementary I was.
There is joy in figuring out how to do things with code. The code is a tool not unlike the hammers and saws used by a carpenter. From the raw material magic can be made. And that’s exciting. Learning python takes you from the mindset of asking, “I wonder if there is a program out there that does this.” to a mindset of asking, “How could I do this using python? Let’s find out…
Cheers,
Colin Weaver
Next Post: Wrapped in Python – Edition 2 – Python Prime Number Generator
If you liked this post, please consider sharing it. Thanks!