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.
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).
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:
// 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
LICENSEfile to the root directory of your project with the same text if that’s easier.
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.
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.
No, since I have no idea what demand for this offer will be. I will try very hard though.
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.