As I mentioned in my previous post, I’ve been learning Python.
As a result, I haven’t posted for a long while, so I thought I’d crawl out of my Python den and discuss my journey so far. It has been an interesting slither with some sunshine, as well as a few dark days.
I’ve been an auditor for many years, and before that I managed a data/computer security department (see my ABOUT post for other details). I don’t consider myself a programmer by any means, but have automated several processes with a variety of tools, including ACL, command line, Visual Studio, SQL Server Integration Services (SSIS), Power BI, and other tools.
I also did break/fix for a huge financial company that all my readers would recognize–even my foreign readers. Later, when multi-function printers first appeared, I discovered someone had connected one to our network, so I poked at it. It was poorly designed and had many security issues, which I reported to the printer company. After they sent an engineer out to discuss my findings, they totally rewrote their scanning engine that ran the device.
Today, I work with ACL, Power BI, SQL Server, Mainframe/JCL, and a host of other technologies, including Python. Most of my work today (80%) is audit analytics.
I provide this background because it obviously colors my opinions on Python that follow, and to demonstrate that I am not your typical auditor or IT auditor (at least in my own mind).
First, why Python?
Well, I took an Intro to R class and found it a bit hard. The syntax was more challenging–the syntax for Python seems easier and more intuitive (and that’s a stretch).
Please chime in and comment on your experiences, especially if you disagree, and especially if your first name isn’t Grant (more on that later :)). I’m going to get to Grant’s comments on my previous post eventually…
Also, R seems to be mainly an analytics language, while Python is a language that you can do many things with, including analytics and machine learning. My goal was to automate many things non-analytical as well as doing ‘modern’ analytics and eventually machine learning. Python seemed the best choice for that.
Second, where did I start?
A lot of Python tutorial exist, and many of them are free. I started with Datacamp’s Intro to Python course, a free 4-hour introduction with videos, exercises, and a way to run and write Python code in your browser (no need to install Python). The 4 minute video at that link explains the course and how it all works.
The course has interactive exercises, hints when you get stuck, and the ultimate solution, all at your fingertips. It was a lot of fun.
I am not associated with any tutorials or websites I recommend, and I don’t receive anything when you click the link.
Third, how is it going?
Recently, I’ve been taking some Python Programming, Data Mining, and Machine Learning courses at night and on weekends through a local college, so I’ve been busy. Other than not having much free time, it’s going pretty well.
Python has been hard, because 1) while learning it isn’t hard, getting good at it is hard, and 2) usually, when I learn something new, I’m all in, and totally focused on it. Right now, I don’t have that kind of time.
Python isn’t like the passing the CISSP, which had a finish line. I don’t see a Python finish line, plus I only have an hour or two a week I can spend at work learning. At home, I have lots of honey-do projects, but manage to devote some time to learning.
My last Python class had a required project which lasted several weeks, and I learned a ton while doing that project, which really tied a lot of concepts together, and required many hours of coding. So as a result, I found a project at work that I can use Python for, so that should move me along some more (although most of my ‘work’ time for that will be done on my own time also; another long story that I might blog about; another long rant, no doubt).
Fourth, what have I learned? Takeaways
A lot of the takeaways are common sense, but it’s often only common once you’ve experienced it, and said, “Aha!” Then you realize it’s obvious.
- You get what you put in. Everyone knows this, but we still often expect to gain more than we invest. Ain’t gonna happen. Especially with a programming language.
- You learn best by doing, not learning. Again, this seems intuitive, but with Python, because it is more difficult than ACL, I thought more tutorials would make the doing easier. I was wrong. I still remember my first ACL automation project–automating a set of scripts run manually. So the sooner you do some projects in the language you’re trying to learn, the faster you’ll learn. But it can be frustrating. So do a tutorial, and then do a project–don’t start another tutorial until you finish the project. Repeat.
- Find a mentor if you can. I was able to find a data scientist at work to mentor me and help me think straight (I found her by emailing the VP of Data Science, and the VP suggested her). She now meets with me weekly for 1 hour. If you can find something the mentor will achieve by mentoring you, all the better. My mentor needed experience managing and mentoring people, so it is a win for both of us. My questions are keeping her sharp.
- Find or create a group of learners so you can learn from each other. Via the company message boards, I found a couple of others who were learning Python too, and suggested we form a group to meet weekly for 1 hour and help each other with our issues. This group has been almost more helpful than my mentor, because each of us has a mentor, so we share what we learn from our individual mentors with each other, a huge bonus.
- Schedule time to practice coding. Daily is best, even if only 30 minutes. I can only manage a couple times a week.
- Tell people that you are learning Python. Tell your friends and your boss. That puts pressure on you to keep going, as some people will ask you occasionally how it’s going. And when you run into that person you want to get away from, Python is a great conversation killer (unless that person is a nerd).
- Get started today. While I knew that ACL was on life support, I put off learning Python too long. I was scared. I didn’t have much time, and I had all kinds of excuses. Finally, I pulled on my big boy boots and hit the trail. So if you’re contemplating Python or something else, go for it.
In my next post, I’ll tackle Grant’s comments….
9 responses to “My Python Journey, Part 1”
Thank you for sharing your experiences with us! I am going down a similar path as you, getting versed and up to speed in new tools as I too am concerned if there ACL/AN Analytics in the near future. I have an IDEA license, an Arbutus Analyzer license, Alteryx, and like you, I am in the process of trying to learn Python.
Any tips and advice you can share in regards to using Python will be most appreciated!
And also to add to what Grant Brodie has said about Arbutus Analyzer, it is a very viable option to replace ACL and it is definitely much more snappier, quicker and responsive. I never have projects inadvertently shutting down like what seems to happen a lot with ACL.
LikeLiked by 1 person
I’ve looked at Arbutus, but don’t think my management will go for it. They like Alteryx more, but we have a lot more ACL users and nothing running in Alteryx to date vs. a ton of stuff running in ACL.
My hope is that ACL announces the sunsetting of ACL soon and we will have to port all our current projects to Arbutus as we won’t have a choice. :)
I’ve played with Alteryx, but to me it’s click, click, click. I like see all the code at once rather than click an icon, open this box, then that box, etc. to see what is happening at each step.
Thanks for this blog its is great. I’m taking a similar yet slightly different approach. I currently have no urgency to use Python at work. So I’m using it at home but for art/math experiment in Blender 3D.
I have not published the Blender Python version but it looks identical, plus its in 3D so you can actually look at it from an sides now. :)
I figured that making it fun increase my chance of using Python and ease the transition for the day I absolutely need it for work :)
Glad you like the blog! I need to post more.
I had to look blender up.
Per http://www.blenderbasecamp.com, “Blender 3D is a free, open-source computer graphics program that specializes in creating three-dimensional assets and scenes for video games, animations, and renders. Over time it has expanded its array of tools and is now used for a wide variety of tasks across multiple industries.
Yes that’s it. Blender has a good learning curve but its really fun. Big corporation have been pouring in Blender as a free approach to do 3D work so we have a very high quality tool even if it is “free” for us. Here is an example below of a Mandlebrot fractal that I programmed in Blender and posted to Facebook.
The best part? You can make pictures but also any animations you want by moving the camera in 3D space (I did a “flyby” video hovering close to the shape for example). Official site –> https://blender.org
Pingback: Battle of the AI Bots | ITauditSecurity
Pingback: My Python Journey, Part 2 | ITauditSecurity
Pingback: My Python Journey, Part 3 | ITauditSecurity
Pingback: My Python Journey, Part 4 | ITauditSecurity