For us coming from the .NET world into the cloud space we are often questioning what’s next? We have to learn core concepts. Take deep dives on platform and what they offer. Then take that back and see how we can bring that in to the solutions we are writing. Can I do this in AWS? I know Java has a framework to help make this easier but does .NET? These are some of the questions I get quite frequently.
But if we look at another great tool to add to one’s tool box it’s Python. Now this is not an argument on how Python is better than .NET or even Java. I am not going to stoke those flames of hate. We just got over the whole what is better Java vs .NET. Getting back to Python, first this is a language it will take hours to learn and a lifetime to master. In the cloud it has a huge presence. Even bigger one in data science.
Python has a rich history. Started back in the 1980’s by Guido van Rossum. Since then the adoption of Python like any language has gone up and down. Now it’s seems higher than ever. My son’s school is now teaching Python as part of their curriculum. And when I jumped in to learning it Python had me look on how I was writing .NET code. A hard look in to the process and reasons I was writing code a particular way.
Why I chose Python
Well, the suggestion came rather from an unlikely source. I was new to the role and another Practice Lead almost yelled at me for not knowing Python. Nathan was shocked that I have never touched Python. Sent me on a little internet journey on what to learn. And he kept me on track on what not to get hung up on. Realizing from my research that Python was bigger on the cloud than I thought. Nathan chose Python for me and I am glad he did.
Where I started
My journey started with Pluralsight. Learning to Program in Python by the late Scott Allen. I cranked through his courses and would reference them when I was stuck on trying to do something. I was once helping someone on a bit of Python and said out loud, “how did Ode do it?”. I wasn’t building anything crazy with the first few projects I did in Python. Stuff to run small tasks. Snippets of code that I knew how to write in .NET but I wanted to see if I could do it in Python. When I needed to write something, I would try to do it in Python first rather than .NET. With Pluralsight they break Python in to full on courses you can take one after another. I went back and did this and some of this seemed to be a refresher on stuff I knew already.
Where to start
Just like anything else I write about I try to keep things on the cheap. But never at the cost of solid time saving convenience. So, when I see free video on YouTube and what not I am cautious. Not to say they are bad. But they can be hit or miss. I found success with Scott Allen’s courses on Pluralsight. He is known and respected in the community. I keep an account with Pluralsight for personal development and my wife is known to take a course or two. I know Udemy has a few solid courses as well.
These courses all have a set up section. Follow it, but you might have to modify it. When it comes to an IDE, there are a few options. I have done development with Visual Studio Code. It was a good experience. Like anything else with Code, you will have to find the right plugins. I found that JetBrains has a community edition for PyCharm. This is what I used to learn. There are some limitations on this IDE. If you are need of something like “Scientific tools” then look at the professional version. But for the courses I did with Pluralsight this worked well.
What to remember
Python isn’t .NET and it isn’t Java. As you are learning learn how to write good Python code. Not Python code that looks like .NET or Java for that matter. When I had questions for Nathan, he would constantly tell me “that isn’t pythonic”. This term “pythonic” started to drive me crazy. And he was right I was able to write code in Python. My code looked like .NET written in Python. So what does “pythonic” mean? Well, I found the best answer to this on Stack Overflow “Exploiting the features of the Python language to produce code that is clear, concise and maintainable”.
Python is not always the best tool for the job. Sure it is amazing on what it can do. It is backed by a huge community to support it. With frameworks, snippets you name it. But it has some limitations so know this. If your app needs to be super fast, Python is not your best choice. But if you need to get a prototype of something out fast? I would take Python in a heart beat. I have seen teams do this. We need to a batch job to process these request, quick let’s do this in Python.
If you are looking for something new, different from the Java or .NET you write daily. Then Python is a great language to learn. From my experience taking on and learning Python made me think when I went back to .NET. Is this the best way to write this? Is my .NET code “clear, concise and maintainable”? If you are working in the cloud space, Python is everywhere. Don’t be afraid of it take the time to learn it. And as I said earlier, “it will take hours to learn and a lifetime to master”.