There is a programming challenge called 'advent of code' where 2 programming tasks are released every day. I participated this year and here is what I learned.
Some programmers around the world are waiting for the release of the task to solve it as fast as possible. After I saw some of the streamers solving the problems of last year's challenge on twitch, I decided this year to take part and do some of these tasks, too. Not in my home language C# but in python, as I got in contact with it within the last year and really appreciate the light, pseudo code like syntax. Of course, I didn't even get close to the time of the high speed coders but sometimes I inspected the solutions they created. I even stopped at december, 19th as problems started to take more than 2h (for me) to solve it.
Long story short, here is the list of things I learned:
- Sometimes I think too complicated
- There is often a mathematical solution
- You can reach your tagets even without a Math degree
- You can reach your tagets even without a CS degree
- The problems in advent of code are rarely appearing in every day life
- I got to know the powers of python
- I got to know the weaknesses of losely typed languages
- I needed to implement 2 problems in C# before I was able to solve it in Python
- copy by reference is a tricky thing
- Visualizing problems in a sketch helps me figuring out stuff
- Making problems transparent to people who don't even wanna hear about it, helps as well (thanks, gf)
- optimisation does require a solid understanding of complexity, a little touch of math and a deep dive into your programming language
- unit tests are neccessary. Fucking do them!
- When you lose track of your thoughts: break the problem down in happy little functions. Oh.. and Test them. Fucking test them.
- When you're struggling around in a new language: Try to solve aventofcode with it. I feel so close to python like never before ( #nohomo )