A Sturdy Foundation
I have been programming in Python for roughly 4 years. I feel comfortable with it above any other language that I've used, despite being required to use Java in my college courses for almost 3 years. It's great to be able to create practically any application with ease and now just how to get started. I've made websites, APIs, command-line apps, and even programmed physical devices with Python. I feel as though there isn't a task I couldn't handle given a small amount of documentation to get started. But I believe that being a good developer doesn't have to come from significant experience in only one language. Lately, I've been trying to branch out my skills, so I have a variety of technologies to choose from to better suit my needs.
Languages and Frameworks in my Stack
Python has been great for me, but there are a few areas where it will fall short in my requirements. That is why I decided to learn a few other languages and frameworks to improve and complement the Python code that I might write.
Mobile apps have always been a point of difficulty when it comes to Python. I love having programs on the go, but I never had much of a drive to build a mobile application with kivy. Overall it's a great and useful framework, but I never got much enjoyment out of designing and building the look of applications for myself. This is where flutter has helped immensely for me. I've known about flutter for around a year but only just started diving into it over the last couple of months when I picked up a flutter course on Udemy. It makes building clean and well-styled mobile applications easy for me. And of course, if I ever need to do some heavy lifting that doesn't involve UI, I can run as much application logic as I need to in a Python API.
Rust is one low-level language that you may have heard me talk about a lot on my instagram page. I first looked at Rust around 2 years ago when I was turned to it by a coworker. I had already had a bit of experience with Java and C#, so statically typed languages were no stretch for me. But for some reason, I found it really difficult to understand Rust. I became confused and stopped trying to learn it after a few weeks. I again came back to the language twice, but it wasn't until a few months ago that I really started to understand after reading the rust book as slowly and carefully as I could. Now I see great potential for it in my personal projects. I love writing command-line apps, but I've noticed on some of my more cumbersome programs, they can run slower than I would like in Python. So for the time being, this is where my primary use case for Rust lies. I also love how dependencies work and how easy distributing my applications is.
Golang is another compiled language that I've been using to pick up speed where Python lags behind for me. The fact that apps compile down to a single binary makes distribution ridiculously easy, and I never have to ask my friends to download Python if I want to share my apps with them. Since it has recently been made available for ARM processors, I couldn't be more excited as I'm a massive fan of Raspberry Pi.
The Importance of Choice and Variety
The fact that my personal tech stack covers mobile, web, and command-line apps in statically and dynamically typed languages isn't its best quality. Stretching out and learning how to use these programs and frameworks has made me an overall better developer and computer scientist, and that is where I see most of the value in learning different technologies. Banging my head against Rust for several months has actually prepared me quite well to pick up C++ for my compiler and networking classes this semester. Golang, Flutter, and Rust have also taught me ways to organize my projects better. I never wanted to be the master of only one language. And I equally want to avoid being a jack of all trades, master of none. These two contention points have driven me to find a middle ground where I work with a select few languages that cover a lot of bases for me. It helps immensely that I can choose what language to use for my own projects, and that I'm not required to work in any particular programming language or framework by a large tech company.
If you have been programming for a while or are just getting started, I highly recommend picking a few core technologies in which you want to reach mastery. Juggling different concepts may be difficult at first, but I assure you, you will see the benefits in each of your projects