Our Next Chapter at Etsy: A Letter to the Community
etsy.com
etsy.com
First, anyone would be a better CEO than Rob Kalin. The period when he was not CEO at Etsy was blissful by comparison... for once, the company was being run by someone mature and normal, someone with actual experience working at a professional company, whose goal was to serve customers and investors. Kalins goals are mainly self aggrandizement and extracting revenge for sitting alone during lunch at 6th grade, as far as I can tell. His actions and writing give me the impression of someone who is mentally unstable and has adjustment difficulties. He is given to grandiose flights of fancy where he places Etsy (and #1, himself) at the center of an imaginary cultural revolution which will topple Wal-Mart. It was never clear if this was a total sham, or whether he believes it himself, but these self indulgent rants distract from the actual purpose of Etsy, which should be providing a superior service selling arts and crafts. As a long term Etsy customer, I have had absolutely no respect for the company's management for years. The direction Kalin has taken the company in since returning as CEO seems to be investor-driven ('social commerce') and as an Etsy shop owner, I am not impressed.
Chad Dickerson has done an adequate job as COO. I can't say I'm blown away with Etsy's achievements, their staff or their engineering culture, but they've managed to keep the site running. On a technical (server) level, Etsy is fast and responsive. While many of their changes and improvements have a somewhat amateurish feel in the product and web design, I believe the technical underpinnings are sound. However, the culture of 'we push 900 changes a day!!! our PMs and Dotty dog push code lol!!' would impress me more if the site was 100% reliable. The API is a mild disaster and in my opinion, the people running that project are not qualified (it's written in PHP, we should note).
So, good luck Chad. You couldn't do a worse job than Rob Kalin. I think you're a nice person. Etsy seems to be entirely in the thrall of investors and techies these days, and the employees appear to have no understanding of who their customers are. I hope you can change this.
I am also curious as to why you single out PHP. Every language has its place and I don't see how this particular choice is cause for such revulsion. While its trendy these days to just bash PHP cos its, well, PHP, I don't think thats your angle here.
At one point, Etsy had an employee, a PM, who acted as a developer liaison. He left and was not replaced, and the contact became an engineer. They current crew does not appear to have any experience, flair for or interest in customer service.
Communication has always been a problem. This has always been a problem with Etsy (going on up to and coming down from Kalin). The API devs are inconsistent regarding warning about changes and making changes. Sometimes there will be an elaborate system to make sure everyone is prepared for some piece of data changing from "content" to ["content"] in three weeks. Other times, they do things like change the way OAuth signatures are calculated without warning.
Yes, that's right: after being asked for years to give more warning for changes which may cause service interruption or compatibility problems, Etsy moved their API off of Mashery to their own platform with no warning whatsoever.
Generally, when one requests something from the Etsy API team, the answer will be "No, that is impossible". For instance, a request for announcements to be made on a separate mailing list. The answer was that this was impossible. They did implement a change log, which is poorly maintained and incomplete. They release changes on Fridays at 4:30 PM, then leave for the weekend. This is actually a cultural issue at Etsy: they think their business is Mon-Fri, 9-5. They even have less forum moderators on the weekends! Rob Kalin has made this a point of pride, that they 'respect weekends'. Their employees' weekends, that is. This would be great if it made sense for a 24 hour, global web marketplace. There is no API support on weekends.
They recently released a shopping cart that requires customers to be authenticated through OAuth. Someone pointed out this isn't very reasonable for many applications, and we were told it was impossible because Etsy's system does not support anonymous carts. Any reasonable engineer could see how this could be done (a temp. ownership transferred to an account, I mean JFC). Someone pointed out that this is how Etsy's own site already functions, and I don't think there was even a response.
On the mailing list, questions such as this come up: http://groups.google.com/group/etsy-api-v2/browse_thread/thr...
The fact that Etsy did not even address this for three weeks says enough, does it not?
Technical changes at Etsy in general affect the API, and the API devs do not seem to notice these changes until users report problems. They claim to be doing TDD, unfortunately it seems the wrong tests are being written. One may experience failures such as avatar images being blank for a week straight after some change, and wonder what sort of poorly written test would not catch that.
There is no schema provided for any of the data that you can write, and validation rules are incompletely specified when they are available.
As for PHP, I do think it's an okay choice for templating and light scripting tasks. I believe a language with actual type checking would be a better choice - Python, Ruby, Java, anything - for a backend task such as this. It's is likely due to sloppy coding, but at different times Etsy has returned ints, floats, strings, and incorrectly formatted strings ("10.5", "10,20") for prices. The overall impression I get is of rather jumbled code beneath the hood.
The Etsy API is poorly organized conceptually, also. There is no reasonable map of relations between object types, and often the associations seem backwards (and are not transitive). That is, you might want info on a list of items, but instead you have to get a shop, then an item, then the info from there. As someone who has been around this for longer than the people working on the API team have been, it's clear that whomever is designing the API doesn't really understand how developers or customers use Etsy.
Then, there are the glitches. Say you're monitoring a stream of featured products. Everyonce in a while, there will be a blank space for like 5 hours. Did Etsy stop featuring items during that time? No, looks like their official site was working fine. Is there any explanation or acknowledgment as to why the API shows a gap of five hours? No, the API team probably didn't even notice, and reporting issues such as this is a complete waste of time as experience shows.
This is on top of the background issue, which is that the entire company is a mess and has always been a mess. My expectation is that they will be the Friendster or MySpace of this market, because Etsy really is that abysmal.
But you're not Facebook are you? You're not the go-to source for graduates in the top of their class. You're seeing incredible traffic, and the original source is not a wet pile of spaghetti mushing up every improvement you try to make.
Perhaps then its fair to say you shouldn't have used PHP, and instead used a language that was a better fit for your organizations structure and practices at scale.
No one here has cited examples of how Etsy's API has failed. At least, nothing substantive. I'd love to see examples as the few times I have used it, its worked fine.
I guess the questions are:
- (1) If Etsy's API is defective, then what makes it so?
- (2) What potion of the blame lies with the language it was written in?
Anyone?More to the point: The idea is that if you're a company working with a high-scale website, don't bog yourself down with PHP if (a) you don't have to and (b) it doesn't fit your organization.
If you're planning on working with PHP at scale, you have to be hacking the codebase extensively. Yahoo used PHP back in the 90s, but they had so many C extensions that the PHP was effectively thin glue.
He gave a keynote at RailsConf this year about engineering for happiness, which is worth the watch if you haven't seen it: http://blog.chaddickerson.com/2011/05/20/railsconf/
I don't think Etsy needed more techies or investors in control, though: Etsy needs someone who understands what it is like to be an individual who is supported by an art or craft business. The best thing that could happen at this point would be for Chad to take a year off and try to make enough money to pay his rent by selling ceramic mustaches from an Etsy shop.