I have been a professional programmer for over 30 years. Programming is a lifelong journey of learning, practice, and improvement. During my career, I have found different ways to improve my programming skills. I often share tips on Twitter.
Here are 50 ways to improve as a programmer:
- Write lots of programs. Every program you write, no matter how big or small, gives you experience. Practice enhances your understanding of programming concepts.Malcolm Gladwell, author Outliers, wrote that it takes 10,000 hours to become an expert. So keep practicing.
- Make programming your hobby. Developing programs for your own personal projects creates enthusiasm and passion. If you like what you do, learning is easy.
- Search for answers on Stack Overflow. If you have a programming question, you will likely find the answer on Stack Overflow. Be critical of the answers and use them as learning opportunities. When you are ready, answer some questions too.
- Get a good book and work through the examples. Good programming books have plenty of content that is organized for learning. The Deitel books are very thorough, with lots of examples and explanations. If you are a beginner, take a look at my book: The Super Simple Programming Book.
Learn one way, ignore the rest. Programming languages often provide more than one way to accomplish the same task. For example, there are several ways to increase an integer variable by
1. Learn one way for now, so you can continue learning other programming concepts.
- Focus on the basic programming concepts. When you are learning programming, the fundamentals are most important. Learn about data types, input/output, selection, repetition, etc. Focus on the basic programming concepts. These concepts will help you learn any programming language.
- Find a mentor. Connect with a colleague, social media contact, or anyone who has programming experience. You will learn more from a mentor than you will from any book or website.
Participate in coding challenges and events. Coding challenges and events are fun ways to practice programming. Twitter has
#100DaysOfCode. Code.org has Hour of Code. The Advent of Code is a really fun programming challenge that happens during the first 25 days of December. There are many more online.
- Take a free programming course. Coursera has excellent computer science courses from top universities. There are similar courses on Udemy. MIT OpenCourseWare publishes course materials for some of its computer science courses.
- Take advantage of static code analysis. SonarQube performs static code analysis on programs. It helps you write clean, correct, and secure code.
- Participate in code reviews. Participate as both an author and a reviewer. Do not fear code reviews; embrace them. We all make mistakes. And mistakes are excellent learning opportunities.
- Watch YouTube videos. There are lots of YouTube tutorials, explanations, and lessons on almost any programming topic. These videos are easy ways to learn programming simply by watching. For example, here are some YouTube videos on Node.js.
- Solve Project Euler problems. Project Euler has lots of mathematical and computer science problems to solve with code. The website lists how many people have solved each problem.
- Participate in Google coding competitions. Google coding competitions are great for practice, and you don’t have to compete officially. Code jam is an annual, worldwide coding competition. It lists past and present problems. Also see the Google kick start and hash code competitions.
- Use an IDE. An integrated development environment (IDE) is a programming tool that helps you create, edit, execute, and debug programs. IDEs find and highlight errors while you type in your programs. They suggest corrections. An IDE puts an interactive programming reference at your fingertips. Plugins add additional tools like linters and viewers. One of the most popular IDEs today is Visual Studio Code.
- Go back to school. If you have the means, take a computer science course at your local college or university. Pursue a bachelor's degree or certification in computer science. Obtaining a master's degree will qualify you to teach at the university level.
- Consider a coding bootcamp. Coding bootcamps offer specialized training in specific programming skills. The skills are often in high demand. Just be careful when selecting a bootcamp. They are not all the same, and most are expensive.
- Create a programming blog. To learn something, it helps to read it, hear it, and write it. Writing about your daily programming experiences in a blog will enhance your learning. It will also motivate you to learn more. Two popular blogging platforms are Dev Community and Hashnode. These free blogging platforms make it easy to start blogging right away.
- Work through online tutorials. There are many excellent online programming tutorials. Some are for reading. Others are interactive. The W3Schools online tutorials are simple, interactive, and quick. Codecademy has excellent interactive tutorials on different programming languages.
- Participate in programming forums. Read and respond to posts. These interactions are excellent learning opportunities. For example, JavaRanch and Java Programming Forums are popular online communities for Java programmers.
- Teach programming. Teaching others how to code is a very effective way to enhance your programming knowledge. Tutor university or local students. To teach programming, you must prepare lectures, create examples, and answer questions. This forces you to really understand programming. Even volunteering to teach programming has benefits.
- Create your own website. If web development is your passion, learn how to develop your own website. This includes activities like domain registration, hosting, and maintenance. Personal projects like this one give plenty of motivation to learn and code.
- Participate in coding interviews. Many companies require live coding sessions or take-home assignments as part of the interview process. These activities provide excellent learning opportunities and real-world practice. You must prepare and learn ahead of time. Coding interviews are valuable, even if you do not get the job.
- Learn from open source software projects. Open source software projects on sites like GitHub and GitLab offer excellent examples to learn from. Many of these software projects are popular in the industry. Contributing to these open source projects offers more programming practice.
- Follow coding standards, best practices, and style guides. Coding standards and best practices improve code. They make code more readable, maintainable, and correct. Google publishes coding standards and style guides for a variety of programming languages. PEP8 Online checks Python code and suggests best practices and guidelines.
- Become a freelance programmer. Offer your programming expertise as a service. You can find many freelance programming assignments online. This is a great way to practice, while earning some extra money.
- Join a programming community. Find programming communities in your area. There are many online programming groups at LinkedIn, Facebook, Meetup, and other websites. You can interact with people who share your passion for programming.
- Get a job. Get a programming job, any programming job. Nothing beats industry experience and learning.
- Volunteer your programming skills. Every industry has a need for programming skills. Many cannot afford to hire programmers. There are plenty of volunteer opportunities for programming. A local school, club, or organization may have programming tasks that you can assist with. Code.org can match you with volunteer coding opportunities in your area.
jQuery. Try using the plain array construct instead of the Java
ArrayListclass. Coding with built-in programming features will force you to think more and write resourceful solutions. It will also make you appreciate the many useful external libraries out there.
- Do not reinvent the wheel. For important programs, do not reinvent the wheel. For specific programming tasks and logic, search for an existing solution. These solutions are often tried and tested. For example, npm is an online repository of Node.js libraries. PyPI hosts external Python libraries. Be critical when selecting external libraries for your programs. Some are better than others.
- Attend a programming conference. Programming conferences bring developers of all levels together for presentations, demonstrations, and other learning opportunities. The Grace Hopper Celebration is a popular conference that celebrates women in computing. Google I/O is another popular developer conference. There are many other programming conferences. Some offer virtual attendance. If not, be sure that they offer proper social distancing if you attend.
- Join a professional organization. Professional organizations like the Institute of Electrical and Electronics Engineers (IEEE) and the Association for Computing Machinery (ACM) offer collaboration opportunities, journals, conferences, groups, and other learning opportunities. These organizations charge a membership fee, but they offer student discounts.
- Write a book. There are endless topics for programming books. No matter what your programming level is, there is a book topic for you. Self-publishing sites like Amazon Kindle Direct Publishing make it easy to publish and sell your book. Writing a book will force you to really learn the material, create examples, and test your programs.
- Program a robot. What is more fun than seeing your programs come to life? Beginners and experts can program robots to complete tasks. The Sphero BOLT is a programmable plastic orb that features sensors, movement, and an LED display. LEGO MINDSTORMS is another programmable robot kit that has advanced capabilities. Some software robots are available in Minecraft Education edition, Java Robocode, and Python turtle graphics. Programming robots makes programming really fun, because they visualize your program output.
- Visit Code.org. Code.org deserves its own spot on this list. The website is dedicated to learning, teaching, and promoting computer science. There are online coding activities for beginners, coding statistics, inspirational videos, and more.
- Try Alice. Alice is a 3D teaching tool for computer science. It makes learning computer science visual and fun. The late Randy Pausch oversaw development of Alice at Carnegie Mellon University.
- Learn Git version control. Although this does not specifically relate to programming, you will undoubtedly use Git to maintain versions of your programs. Online Git repositories such as GitHub, Bitbucket, and GitLab are powerful tools for collaborating in software development. However, they are excellent for individual use too. For example, many developers use GitHub to host online coding portfolios. See the Git website for more information on Git version control.
- Embrace real-time communication. This is another tip that is not directly related to programming. Real-time communication tools provide immediate feedback and answers when working with others on programming tasks. Slack is a very popular real-time communication tool that offers persistent text, voice, and video chat. The tool allows you to create public and private channels for different topics. It lets you thread conversations for more organization.
- Code on the go. Your mobile phone is also a computer. Why not code on the go? QPython is a Python interpreter for Android phones. Python2IDE is on iOS phones. With apps like these, you can practice coding right from your mobile phone.
- Code without help. Take a programming task and write a program for it without searching online or using help from an IDE. See if you can code from memory. This type of coding practice will force you to commit important concepts to memory. It is also good practice for live coding interviews.
- Refactor your programs. Learn how to refactor your programs. Even if a program produces the correct outputs for all the possible inputs, it may still have room for improvement. For example, make your programs more maintainable, more readable, and less complicated.
- Learn other programming languages. Once you have a good foundation of the basic programming concepts and a strong understanding of a given programming language, it may be time to branch out. Learning another language can increase your understanding of programming languages in general. It is helpful to see how different languages implement the same programming concepts or offer new features. For example, the Java programming language improved on C++ by addressing memory leaks.
- Program for art. Programs are not just for business. Programs can create art. With random behavior, graphics, and processing, programs can create beautiful outputs. This takes the passion for programming to a whole new level. Python turtle graphics and HTML Canvas graphics are two ways to create simple and complex art with programs.
- Have the right attitude. Be humble. You cannot know everything about programming. If you think you do, I promise you that there is someone who knows more. Programming is an endless learning loop. Accept that you do not know, and you will soon know.
- Leverage public APIs. There are many public application programming interfaces (APIs) that you can connect your programs to. Twitter, YouTube, and Google Maps are just some APIs that you can develop against. You can create impressive software applications by leveraging these powerful APIs in your programs.
- Assess your programming skills with Soloway's Rainfall problem. Soloway's Rainfall problem is a problem that tests programming skills for introductory computer science students. If you can complete this programming task, you have a good understanding of programming fundamentals. If not, keep learning.
Learn from console input and output. There are fancy websites and graphical user interfaces. However, do not ignore what simple programs can teach. Programs that accept input from
stdinand write output to
stdoutcan be powerful, complicated, and full of functionality. These programs have a lot to teach.
- Learn assembly language and computer architecture. When a program executes, it uses computer resources. Understanding how computer memory, the central processing unit (CPU), and other computer hardware components work will help you understand how programs work. Assembly language is a low-level programming language. Its instructions correspond to machine code instructions. A single IF-ELSE statement in C may require multiple statements in assembly language. Understanding low-level assembly language and computer architecture will explain how a program interacts with the computer, teach you to write more efficient code, and make you a better programmer overall.
Whatever you do, keep practicing programming! Most of all, be safe, practice social distancing, and be well!
Thanks for reading!
Follow me on Twitter
@realEdwinTorres for more programming tips. 😀