Skip to content

Instantly share code, notes, and snippets.

@david-allan-jones
Last active September 9, 2023 05:48
Show Gist options
  • Save david-allan-jones/a3438e505aec4bbe28756aec97a2b40f to your computer and use it in GitHub Desktop.
Save david-allan-jones/a3438e505aec4bbe28756aec97a2b40f to your computer and use it in GitHub Desktop.
A guide to becoming (somewhat) proficient in a new programming language

How to Learn a New Programming Language

Introduction


It's always a good idea to keep yourself open to new programming langauges. Not only does it keep your skills fresh, but it also opens your mind to new ways of structuring a program. We all know about the different imperatives like functional or object-oriented programming, but often times the more interesting lessons are found in the more niche language features.

Steps


So here a series of steps I recommend for learning a new programming langauge.

  1. Compile and/or run a program. Any program.
  2. Implement a linked list or tree.
  3. Implement a basic queue.
  4. Implement a basic stack.
  5. Implement quick sort.
  6. Write some unit tests.
  7. Implement some error handling (error as values? try/catch?)
  8. Package your code. Any package (one that does something interesting hopefully).
  9. Consume that package in some other code base.
  10. Publish that package wherever makes the most sense for that language (npm, Github, etc).
  11. Implement an async task queue (i.e. createQueue(tasks, maxNumberOfWorkers)).
  12. Implement a CLI tool.
  13. Implement a small project that deals with async code (like a server).
  14. Try to deploy a project to the cloud. It can be the server from the previous step.

After doing the above steps, you will have gotten your feet wet in your language of choice. At this point you can explore the language even further and learn more about the ecosystem surrounding it. What are the big packages everyone uses? What is this language even good for? These are questions you should be able to as you continue going forward.

What Next?


If you decide you want to take the language further, continue working on more projects! Contribute to something open source if there is an opprotunity. Or create that opportunity yourself! At this point you should have a solid opinion on what you like and dislike about the language. And don't feel bad if you decide you don't like it and drop it here. But the steps outlined above are what I consider a bare MINIMUM for giving the langauge a fair shake.

Contact


If you would like to contact me, please do so through my website here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment