Holy moly. Didn't expect to see this at the top of HN. Went to grab some dinner, and the ol' inbox is already starting to fill up. Thanks for the warm response.
To illuminate the rationale a bit more ... A lot of folks have asked for quick "gut checks", "sanity checks", and similar overviews of their codebases in the past, and this seems like a way to:
1) Help folks out in a way that doesn't entail a massive commitment or expense. Much of the time, when people are struggling with a thorny technical problem, an outside perspective and a bit of friendly advice is invaluable in getting it solved.
2) Get a lot of valuable exposure to different approaches in production apps, to learn as much as I teach.
3) A style of work that I can be productive with, even without a reliable internet connection, or offline entirely (a large problem these days).
So, it seemed like a fine idea to try. I'll keep y'all posted on how it goes. And although Code Reads will be entirely confidential, if any of the companies are interested in sharing theirs (perhaps to attract recruits) -- maybe I'll be able to post one or two up publicly.
"And although Code Reads will be entirely confidential, if any of the companies are interested in sharing theirs (perhaps to attract recruits) -- maybe I'll be able to post one or two up publicly."
Can you take a high-profile public project (like coffeescript or underscore/lodash or angularjs) and do a code read? (yes I'm aware that you are the man behind coffeescript and underscorejs but I'm sure you can find something in a code read)
I was one of those people, lol. To be honest, these things can only help. Rails advanced a lot with the Merb merger. (I'm not suggesting Backbone and Ember could or should merge, naturally ;-))
It would, I think, be instructive to see rough pricing guidelines. I am assuming that whilst you get a feel for the market these things are in a state of flux, but nice to see ballpark figures when thinking about whether your service could be relevant.
He probably has no idea what the demand is. If 60% of the Fortune 500 has code they want Jeremy Ashkenas to review, the pricing will be very different than if three ramen-profitable startups want it.
I'm sure Jeremy can only do so much code reviews a day (unless he's a ninja robot), so why isn't there a crowd-sourced version of this? Sometimes I write code that I would like other coders to help/critique with. Github is great for collaborating and some code reviews happen (pull requests) but sometimes you're just working on a project and have no idea whether you're writing the right things or not. There have been times where I'm writing Python code and kept wondering whether I was being pythonic.
Think of it as a StackOverflow for code review. Reviewing someone's code gives you karma/points/kudos/<whatever>, and dupes are OK because we're trying to encourage everyone to help (score points). Note: I haven't really given this a lot of thought, just an idea.
Sounds like an awesome project. I think there's room both for open-source-y versions of this, where you review shorter bits of code for the karma -- as well as a more professional version, where you spend a lot of time reviewing private code, in conjunction with testing a prototype of the application.
That said, if anyone is really excited about this sort of thing, and think they'd be good at it -- do drop me a line. I imagine there might be ways to team up.
How will this work with SE's infamous hatred of discussion threads? I'd imagine posts about code style would generate multiple "right" answers with lots of discussion to be had?
Generally speaking when it comes to SE, I've noticed the smaller the site the bigger the tolerance towards discussions, and codereview it's not quite a big community yet.
This may sound cliche but I also thought of a similar concept when reading the post, with the added aspect of reviewing someone's review for 'karma' points. Self-policing, so to speak.
Reddit comes close. I don't know that there can really be a 'canonical' discussion site, any more than there can be a canonical Q&A site (Stack Overflow is not that, given the existence of Quora, Yahoo Answers, etc. serving other large niches of Q&A).
Slate.co looks like it could evolve into a viable contender in this space. I have a few qualms about the way questions are structured, but the site is pretty and nice enough.
Well, we all know that the best people at writing code happen to be ninjas (have you read any job descriptions or got any recruiter emails lately?), so I think this may perhaps be the reason.
Still open to explanations of why ninjas have an enhanced coding ability though.
I also heard that they can see in the dark thus you can cut the light when you leave them in the office.
On the other hand, I've seen it in the movies that they can disappear... I assume that's what they do before someone can actually try to run their code.
Probably a silly question, but what's the deal with this?
<button ...
onclick="location.href='mailto:jashkenas@gmail.com?Subject=Code%20Read%20%5BSmall%5D'">
Small
</button>
Not a huge deal but I think it's good to show where a link goes on mouseover, especially a mailto: link (some mail clients take a while to start) ... it'd seem you want <a> here.
Just started with a bit of CSS that worked better for a button is all. You're right that a real link would be better. I'll change it.
The idea is to perhaps eventually sell these directly on the page, via Stripe, in a more explicit fashion. But for starters at least, I think we'll work together on setting the scope of the "read", and keep things bespoke.
If someone has coded up a "self respecting bot" then I think we've lost all hope against the spam harvesters (unless, of course, that bot's notion of self respect includes the recognition that spam is annoying to innocent people :)
I'd like to offer the same service free to anyone would like a Code Read but Jeremy's rate is too high/he doesn't have time.
I'd get a lot out of it as I'm building a Javascript static analysis tool - exposure to lots of production code would identify how useful its features would be.
I'm no Jeremy Ashkenas, but:
- I've been writing JS apps since 2009, after I stopped doing AS3 apps with Flex
- Teach Backbone.js, JS and d3 at General Assembly, have given various talks/workshops
- Lead dev on two 10k+ LOC JS apps (for Picklive and Skimlinks) using Backbone.js
- Built 3 game clients for Picklive with JS, on mobile and web
- Built a visual scraper recorder/runner plugin for Chrome for Arachnys
- Contribute to JS open source - shims, Sinon.js, lots of little pull requests
Traveling for the year, and doing a little bit of freelance work for the Times (and hopefully DocumentCloud as well) as I go.
... now you see the hidden motivation for the recent flurry of Docco releases. I want to make these sort of working code/prose documents easier to produce ;)
Fantastic, really enjoying the blog so far. Beautiful pictures and layout (though some of the galleries have a bunch of blank slides, even after waiting for loads)
I wish there were a real example (to get a sense for the types of things he looks at), involving an open source project (how about coffeescript itself?)
Is it enough to say that his credentials are everything that he's ever written made available for public perusal? There's a lot to chose from. If I had a JavaScript/CoffeeScript/Backbone codebase that needed some love then I probably wouldn't hesitate to contact him based on the example set in his public code (and that he's the primary creator... but maybe that goes without saying).
How I hoped this to be an announcement for a public code reading. Like a author reading a chapter of his book, Jeremy reading and discussing a part of the coffeescript source.
In my previous life as an enterprise code monkey I've came across good and bad Architects. Just knowing and being able to tell me how something could be done better is valuable. But I found my frustration often was 'just f*ing do it!'.
If an Architect came with great refactoring suggestions that would take minutes or even seconds to implement, what's the value in dumping me with a document?
The best Architects would just do it if it was straightforward, review it with me (so I'd see why/if it was better and teach me) then commit.
I'd like to see a similar thing here. Hands-on code reviews with commits. There's little I hate more than documents that never get actioned.
I love the spirit of this service but add in commits to make it dynamite.
I hear you, but I'm concerned about trampling on other folks' code without being involved in a long term relationship. Code bombs dropped by consultants often have this sort of problem -- where some of the more invasive changes either aren't welcome or are more difficult to integrate with the existing system than they're worth. I'm hoping that having inline examples of working code, with references to the source, strikes a happy medium here. Plus, "teach a man to fish", and all.
That said, we do live in a Git world these days. Maybe a fancier package could include the creation of a branch that implements some of the tweaks/changes/ideas.
A combo of doc + a branch commit would be spot on.
You're right on the code bomb problem, but I think a good review involves making a judgement on the entire codebase. Something may be the 'right' thing to do but completely uneconomical due to dependencies.
Understanding the impact of a recommendation leads to a valuable refactor or rewrite call that developers often have to make on a mature ecosystem.
This is a really interesting model. It seems that if Jeremy gets some traction with this there is a very obvious follow-up product which provides these artifacts as a service. Of course, between here and there is all the stuff he's going to learn doing it "manually" first.
I could see this being a inflection point for him (or someone who runs with this idea) in a few years. Good luck!
I always thought there should be a good market for companies hiring outside code reviewer before they hire an employee or a consultancy. Seen many projects crippled by dirty code written by contractors.
Interesting, is this new in code? There is a significant market for editorial review (in contradistinction to peer review), especially after translation (e.g.: a Japanese or French scientist will pay a translator and then an English-speaking, technically competent editor to comprehensively edit the translation).
This is a wonderful example of false advertising...
He's talking about very general "code reading" on the whole article and then, at the bottom, he lines out which languages he knows - and it suddenly gets disappointing for anyone outside the Ruby/JS world.
He has to be more clear about that in the headline.
Would anyone be interested in a podcast of code being read with professional/semi-professional voice talent, possibly with more in-dept technical review?
Also, would anyone be interested in dramatic reading of potentially horrible/hilariously bad code?
I think either could be fun, but maybe that's just me.
IMO this is more effort than its worth, and he will get annoyed with companies trying to hire him outright. You'd be surprised how hard it is for companies to change coding practices.
It very well could be, but part of the idea here is to make it as much of a "product" as it is a consulting gig. Having a clear scope and a document delivered at the end should help keep things clear-cut, and simple for both parties. In theory, at least.
I considered doing this same thing a few years ago but decided that I don't scale. I'm glad someone is trying it out. I'm curious to see if there's a market.
I think what he means is "how does this scale?" If the OP is personally reviewing the code, which the landing page makes it sound like he is, he can only do so many per day, and there will be a long queue if his service is popular.
To illuminate the rationale a bit more ... A lot of folks have asked for quick "gut checks", "sanity checks", and similar overviews of their codebases in the past, and this seems like a way to:
1) Help folks out in a way that doesn't entail a massive commitment or expense. Much of the time, when people are struggling with a thorny technical problem, an outside perspective and a bit of friendly advice is invaluable in getting it solved.
2) Get a lot of valuable exposure to different approaches in production apps, to learn as much as I teach.
3) A style of work that I can be productive with, even without a reliable internet connection, or offline entirely (a large problem these days).
So, it seemed like a fine idea to try. I'll keep y'all posted on how it goes. And although Code Reads will be entirely confidential, if any of the companies are interested in sharing theirs (perhaps to attract recruits) -- maybe I'll be able to post one or two up publicly.