A bucket list is a list of things you ought to do before you kick the bucket and die. Here's a bucket list for every coder out there. Check it out and tackle them one at a time!
Compile your own Linux Kernel
The linux kernel is the heart of the Linux operating system and is open source. Compile your own linux kernel to get a deeper understanding of how linux, open source software and the kernel itself work.
Set up a Build and Deployment Pipeline
Set up your own pipeline to build and deploy your code. The pipeline should compile your code, create an artifact like a docker container and deploy it on a remote machine. You can build the pipeline in Jenkins, Gitlab CI, Travis CI or using Github Actions.
Mentor a Junior Dev
Mentor a junior developer will teach both you and your mentee a lot. You can share your knowledge and give your mentee a great start in the job. You'll see that also you will benefit by looking at things from a different angle and explaining things you've been using and doing for quite some time.
Install and run stuff on FreeBSD
Install a unix distribution like FreeBSD on a machine and run some stuff on it. Real unixes are quite different from linux as you will notice. Yet unixes are great and very stable server operating systems.
Give a Talk
Share experiences or knowledge with others by giving a talk. This talk can be for your team only, within your company of even at a conference. Think carefully about what you want to tell and how. Learning and practicing
to give a talk will greatly improve your communication skills.
Contribute to Open Source
Contributing to an Open Source project that you like. You can contribute not only code but also documentation, translations or tests. Some projects have issues that are specially suited for newbies. E.g. in Spring these issues are tagged ideal-for-contribution.
Give a Training
Give a training in our outside your company. Prepare the training yourself with background information and hands on practical excercises and tasks. If you can give the training more than once - even better. You'll experience
that every training is different and all participants will experience the training differently.
Write a Compiler
Compilers is where program languages start. Write you own little compiler and you will gain lots of insights into the inner workings of programming languages.
Learn a Functional Programming Language
Learning to program in a pure functional programming lanuage like Haskell or Elm will change the way you think about programming. So check it out even it won't become your primary language.
Bring a Website to Production
Code a website using plain HTML and CSS and bring it to production. Register a domain name and make your website available under that domain. Even better use web server like Apache, nginx or Caddy to serve the website.
Develop a mobile app (and release it)
Develop your own mobile application for Android or iOS and release it in the app store. Make your app communicate with backend services and use device functionalities like geolocation via GPS.
Learn to use vim and emacs
The classic text editors are vim and emacs. So take the time to learn basic text editing in both vim and emacs. Once mastered it's a skill you can use for the next 30 years.
Mess up Production real bad
When you develop production code it's only a matter of time. One day you will write code that messes up production. But don't you worry we've all been there and we all make mistakes. So fix it, learn from and grow from it.
Fix Production on Pager Duty
You are on pager duty and shit happens. Maybe some hardware breaks down, a 3rd party service is not available any more or the configuration is messed up. There will be a day when you dig into the issue and find the root cause. Hang into it and fix production. Enjoy the feeling when everything is running smoothly again.
Write a JavaScript Single Page Application
Single Page JavaScript Applications (SPAs) are one very important way to develop a web frontend. Write a JavaScript SPA application to get to know how SPAs are built and distributed. You can use a JavaScript framework like Vue.js, Angular or React to get you started.
Write a Server Rendered App
Building a web frontend as a server rendered app is a classic but still very valid approach to develop a web frontend. So write a server rendered web frontend in the language of your choice. For PHP you might use Laravel, for Java Spring Boot & MVC or Buffalo for Go.
Learn Shell Scripting
Shell scripting is quick way to script and automate tasks on any Linux and Unix machine. Learn to write a script for the Bash shell. Make use of classic tools for shell scripting like awk
, sed
or cut
. If you want to top it off write your script in vim or emacs (see above).
Hack in a Capture the Flag Contest
Improve your security skills and learn how to hack in a capture the flag contest. Read all about it here:
Top comments (5)
Vim AND Emacs? is not redundant? I wold say, do you ssh of work on different machines often? go for vim (neovim for me); if not then chose between Vim and Emacs, it'll take a while to get used and configure them exactly to your needs, usually your .vimrc (the vim config file) will follow you for a lifetime. To me Vim is like a nice iron cast pan, a Zippo lighter of a good fountain pen. I've tried Emacs but is not my style, but I've heard the same about it. You never stop polish them.
Fun list - did you mean to include "Set up a Build and Deployment Pipeline" twice (it might be important after all)?
I would add a couple more that I have enjoyed:
"Work with different scales of hardware (ie: single core microcontrollers to massively distributed clusters, but probably not at the same time) - see how the constraints change."
"Write hello world in raw ASM, without libc to help you - discover your operating system's ABI :)"
For the brave:
"Write a bootloader - discover how your machine starts up"
I fixed the duplicate deployment pipeline entry. Thanks a lot.
And I really like your ideas for the bucket list!
Check. Done. Done again. Aaaaaaand.... again....
interesting, well, even Emacs users said jokingly that "Emacs is a nice OS, only lacks a good text editor". So, even VS Code has a Vim plugin?, that's nice :)