Robert Heaton


I will give you feedback on your code

08 Nov 2019

Since the summer of 2018 I’ve been offering office hours in which I talk with “advanced beginner” programmers about how to get better at programming. Almost everyone I’ve spoken to has said that one of the biggest challenges they face is that they don’t have anyone to give them feedback on their code.

To solve this problem I’m offering to review and give feedback on your code, for free.

This is partly because I’m a nice person whose PlayStation is broken, but mostly because I’m about to start writing a book. This book is going to be about learning programming, and will be based on my smash hit blog post series, “Programming Projects for Advanced Beginners”. To ensure that the book is the best damn thing ever written about learning programming, I’m going to read as much code that was written by my target audience (i.e. you) as I can. I’m also going to start a weekly programming newsletter called “Programming Feedback for Advanced Beginners”, showcasing the most interesting teachable moments from my real reviews of real code written by real, salt-of-the-earth people such as yourself.

Some people might call this “building a community”, others might call it “content marketing”. I think that they’re both correct and that we’re all going to be winners here.

What feedback will you get?

I’ll suggest specific changes to your code and offer general feedback about what you may want to work on and how. This feedback might be:

I’ll add your program to my GitHub repo, along with an edited version showing the changes that I would make to it and a big ol’ document describing why. Read the inaugural edition of PFAB for an example of what to expect. I’m happy to either credit you with writing the original code, or to leave out your name entirely so that there is nothing whatsoever that connects your identity to it.

You don’t need to know anything about git or repos in order to send me your code (see below).

What code should you send?

Send me anything, in any language. It could be one of my Programming Projects for Advanced Beginners, or something else entirely. If for some reason I don’t think I can work with the code you send then I’ll fire back a polite and apologetic email, and ask if you have anything else I can take a look at.

If you’re trying to choose between a couple of candidate projects, tend to prefer those that are:

How to send me your code:

  1. At the top of each file of your project, add a comment saying // This code is made available under the Creative Commons Zero 1.0 License (https://creativecommons.org/publicdomain/zero/1.0) (see the FAQ below for why). You can also add a single LICENSE file to the root directory of your project with the same text if that’s easier.
  2. Put your code somewhere where you can share it with me. In order of preference:
    1. Put your code on GitHub. If you haven’t used GitHub before then this will be a valuable educational experience in itself (start here). Either put your project in a “public repo” (preferred), or put it in a “private repo” and then invite me to it (my GitHub username is @robert).
    2. Put your code on PasteBin or another text-sharing site
    3. Copy and paste your code into an email and send it to me directly
  3. Fill out this Google Form.
    1. If you don’t want to fill out the form then you can email me the same information instead

Then I’ll reply quickly to say hello and when you can expect a proper reply by.

Don’t delay - apply now. I’m going to reply to submissions in roughly the order I receive them, and it’s only a matter of time before I get a new PlayStation. I’m looking forward to hearing from you.

Furthermore:

FAQ

Who am I?

I’m a software engineer at Stripe, a Silicon Valley financial technology company. I work on the security team, building tools and systems to detect and respond to cyberattacks.

I blog a lot about programming, security, and a few other topics. I’m particularly interested in helping “advanced beginners” get through the yawning valley of despair that opens up when you realize that you understand the basics of programming but don’t know how to keep getting better or what to do next. My most popular work is my “Programming Projects for Advanced Beginners” series, a collection of semi-guided projects.

Can I guarantee that I will look at your code?

No, since I have no idea what demand for this offer will be. I will try very hard though.

What is the Creative Commons Zero License and why do I ask that you add it?

The Creative Commons Zero (CC0) license is a legal statement of how other people are allowed to use your code. Much open source code is distributed under it. The license says something like “this code is public domain and anyone can do anything they want with it. However, they can’t imply that I endorse their actions, and if the code does something terrible then that’s not my problem.”

I’m asking you to add the license to your code as a simple way to make sure that I’m legally allowed to use it in my writing. You might not want to add it if there is anything in your code that you do want to retain copyright over, but for practice projects I don’t believe this should be a concern. If you’re not comfortable doing this then please do let me know why - I’m not a lawyer and could have missed something.

Follow me on Twitter or Subscribe via email

More on Programming Projects for Advanced Beginners


Subscribe to my new work on programming, security, and a few other topics. Published a few times a month.