Amateur Hour Code Challenge
This is a video challenge for programmers designed for entertainment value. The idea is to film yourself trying some code challenges in a programming language you have no experience with. #AmateurHourCodeChallenge
- You have one hour to go through as many of the challenges as you can.
- You can use any documentation, phone a friend (IRC and such), but you can’t lookup the exact answer (like looking up FIZZBUZZ code for a FIZZBUZZ challenge).
- After an hour is over you must stop.
- If you want to record additional episodes of the Amateur Hour Code Challenge you must first do two distinct different languages following these same rules before you do a follow up episode of the same language.
- Follow up episodes must be done from an entirely different set of challenges, as in another website.
- You cannot make more than 3 episodes of one specific language and still call it Amateur Hour. A 4th episode is recommended to be a “Retrospective” review episode. If you want to continue in the language beyond a trilogy of episodes by all means please do so but understand that it is no longer within the guidelines of the #AmateurHourCodeChallenge and I would appreciate it if you came up with an appropriate alternative name.
You may do what you need to do to install the programming language and prove the language works on your computer system. This means going as far as proving you can write out to the command line with a form of printing command. Beyond that you are not to use the language until you start your video for the challenge.
There are many positive reasons why one would do this.
- New experiences
- Revealing a languages newbie friendliness
- Opportunity to connect with the community of developers who use that language
- Learning new concepts that the language(s) adhere to
- Help senior developers better understand where people who are inexperienced in their language have troubles
The motivation behind rule #4 is all about context switching. Having a greater chance to not remember things quite well before a continuing episode of the same programming language ensures the nature of “Amateur” is more closely adhered to.
Recommended Code Challenges
These site provide challenges that take a bit of work and are not to simple. They also allow you to do the work on your own system and submit an answer. Any sites that adhere to this design may be a good fit. Not too simple, not too complex, and you can work out the answers on your own system.
It would be nice to switch up the challenges to also get into other areas of a language such as opening a file from the filesystem, processing it, editing in place, and handling IO streams. Since answer submission sites will likely not have this kind of thing in a challenge. I think it’s fully acceptable to “do your own challenge” if it’s with File processing and IO streams as long as you specify beforehand what you want the end goal to be. Related I think concurrency, multithreading, async challenges would be an adequate challenge in a new language.
You may at your own discretion find an area of the language that may have similar challenges as discussed here in the paragraph above to create your own custom challenge for your video… just be sure to specify clearly what the challenge is before you start in the video.
Knowing how to solve the problem(s) in a language you are already familiar with is advisable, but not required. That helps with difficulties being more related to the language you are trying to learn rather than the individual challenges themselves.
If your video fails to record your first hour properly then you may try again but you should say at the beginning of the video which take it is (eg: Take Two) and you should move further on to code challenges you have not tried yet. This means you will be less of an amateur since you already spent some time in the language but because you are being transparent by specifying what take it is it is acceptable.
Please do share your videos of your challenges publicly on Youtube, Twitch, and spread the word via Twitter #AmateurHourCodeChallenge. This should be a fun and transparent way to connect with others. If you have any fears about others judging you then you should learn to overcome those fears and accept that every software developer is an amateur when it comes to many languages and concepts they haven’t stepped in to. You are part of the community and have more opportunity to take part in it when you share.
Feel free to follow AllYourDev on Twitter for many episodes to come with this challenge.