Learn Python
Python has exploded in popularity recently. There are great reasons for this. It's famously one of the easiest programming languages to learn and it has a bunch of great libraries for things like data analysis and visualization, making websites, doing math, sending emails, talking to Excel, and many other things.
If you want to start learning Python, you need to install the tools
- Install Python! MacOS and Linux should already have
python3
built in. If you want a newer version on MacOS, I recommend usingHomeBrew
. Typepython
into a Windows command prompt to install it here. Also consider Anaconda Python. This is Python plus a whole bunch of useful libraries bundled together. It's also really easy to uninstall if you decide you don't like it. - Install Visual Studio Code. This text editor is open-source (you don't have to pay a license fee to use it and you can read and modify the editor source code if you want) that has a really nice balance of easy to use and powerful features. Go through the python docs for it to install the right plugins. See my personal settings.json for how I've configured it.
- Start learning! There's a lot of Python resources out there, and you should play with any and all that interest you! I really like this article about figuring out what you want to do with Python.
- Ask questions! I have so much to say about this that I'm going to make it a separate section below.
- Read more. Browse reddit, read the official documentation, and read a lot of other people's code (the python docs for a module usually have a "Source code" link at the top). Reading their code will give you a feeling for how to write yours. All great writers started out as great readers, and this is true for software engineers too.
Asking Questions
If you spend longer than 30m on what you thought was an easy problem, and you're completely stuck, it's time to ask a question! Before you ask anyone, it's important to pare down your problem to the very basics so whoever you ask only has to understand the problem, not the rest of your application. For example, if you come up to me and say "My app isn't working" and then email me 200 lines of Python, you've technically shown me your problem but you haven't made it easy for me to understand at all! Instead if you say something like, "I still can't connect to the MySQL database and I've tried these three things" and you give me 20 lines of source code, I'll probably be able to help you a lot faster! As a bonus, this effort to make your problem as small and easily understood as possible will often lead to you solving your problem before you get to asking me. Creating a great question can take a lot of time and effort, but, like most things, it gets easier with time.
Because we live in the future, you can often google your problem and get a solution in less than a minute.
Learning to efficiently solve problems is one of the most important things you can do in your life. If you try programming and hate it, but learn to solve problems, you've still made the rest of your life significantly easier.
Some links :
- Rubber Duck Debugging
- How to Solve a Problem
- The scientific method - Khan Academy, LiveScience
- How to Debug Small Programs
Where to ask questions
- StackOverflow is a really great place to ask questions. They can be very impatient to vague questions, so make sure you read How do I ask a good question. As you get better, you should start answering other people's questions. Interestingly enough, when I was hired at my current job (engineer at LinkedIn), they told me one of the things that made me appealing was my answering people's questions on StackOverflow. So it can also help you get a job.
- Me. If StackOverflow scares you, or you have a general question, or you just want an opinion, feel free to message me on LinkedIn and I'll try to answer it or point you in a good direction if I have time.