There are many ways to gain introductory skills in programming. You can take our workshops. You can attend the NICO 101 Introduction to Programming for Big Data bootcamp, or use one of the resources recommended by our team. But once you’ve learned the basics, what should you do next? What can you do to build on the knowledge you’ve recently gained? Here are a few tips to keep the coding momentum going:
- Find a task to complete, or make one up. The most successful beginning coders start on a project immediately after learning the basics. Classes and tutorials use uncomplicated, straightforward examples to teach the syntax of a programming language, but real-life coding requires you to apply the functions and loops you learned to new situations. It introduces you to new error messages to look up, gaining experience with the invaluable skills of parsing StackOverflow forums and deciphering official documentation.
While there are lots of suggestions out there for fun projects for beginning coders, your current work or research should be the first place you look. Start by committing to complete one task with code, even if you know other ways to do it. You can calculate the weights of student grades or summarize the results of a survey in a script instead of Excel for example. If you are a member of a research team, ask your PI or other lab members if they have a simple job you can code to help out the team. If you regularly use Stata, Excel, or another statistical software program, try replicating the results of an analysis in R or Python.
- Think logically before you write code. In practice, when you sit down to code, you won’t start out by asking yourself, “What is the syntax for looping through a list and counting the occurrences of each element in a string?” Instead, you’ll ask a question you actually want the answer to, like “How many times do the names Toni Morrison and Margaret Atwood appear in these 100 text files?” I often tell workshop participants that coding is 50% syntax and 50% logic, so get out your paper and pencil and sketch out how you would tackle the problem before you start to code.
When you do start to write the code, don’t worry about how your code looks or spend hours hunting around for the perfect library for your problem. Practice the skills you have, and you’ll discover creative and effective solutions to your tasks.
- Immerse yourself in programming talk. Being in the middle of a conversation between more advanced coders can be annoying. You’ll hear lots of jargon and acronyms that you don’t understand, not to mention the egos and inside jokes. But being around people discussing programming keeps you thinking about it, even in the back of your mind. Hearing a new term gives you at least a little context for the next time you encounter that term.
These conversations can be humbling. If someone asks your opinion about something you’ve never heard of, you can say “I’m a beginner, but I’m learning a lot just by listening.” If you hear a term that seems interesting or important, make a note to look it up later. If you have a question, ask. As you may have noticed, many advanced coders enjoy explaining things. Some opportunities at Northwestern for gaining exposure to programming talk are the Data Science Nights, the annual Biomedical Data Science Day, the Evanston R User Group, and the Chicago R User Group.
- Teach others. It’s no secret that teaching is a great way to improve your own skills. You may be thinking that you aren’t qualified to teach programming skills to anyone, but you’re wrong! Coding is becoming a more common skill at universities, but there are still more people on campus with no coding skills at all than people with even a little training. Take notice of other people in your circle who may be just starting out. Encourage a friend or fellow lab member to take an introductory course or tutorial and offer yourself as a mentor.
- Look up everything. The brain is an efficient system, constantly moving facts from immediate access to long term storage. The internet (or books or cheat sheets) is not only often faster than the brain, but also has more storage. Personally, I’ve never written a single script or completed a single consultation without looking something up online. The reality of programing today is that we all rely on the communal knowledge of the entire coding community. Don’t be ashamed to look up something that you already know but can’t quite recall, and set aside time to look up things that you’ve heard about but don’t understand.
- Continue your education, but don’t rush it. In addition to our Fundamentals series, Research Computing Services offers Intermediate and Advanced workshops in a variety of topics. One mistake some beginning coders take is to sign up for every workshop available in one summer or over the course of a year. They will take Python Fundamentals, Python Next Steps, Scikit-learn, Text Analysis, Web Scraping, Advanced Statistical Modeling, Machine Learning with TensorFlow… all in a row. This could leave you feeling frustrated and discouraged because you need time and practice to absorb each new skill.
For beginners, I recommend getting in a good amount of practice between workshops. If you are using the language for several hours every day, this could be as little as 2 or 3 weeks between workshops. For most beginners, however, it will take several months of practice until you are comfortable enough with the fundamentals to start learning new packages and syntax. One exception is if your second workshop is in an entirely different skill. For example, it would probably be okay to take Python or R Fundamentals along with Intro to Git and GitHub or Command Line 1. Likewise, if you are learning your second or third programming language, it is likely you will pick things up at a quicker pace.