Saturday, June 4, 2011

On Being Excellent to Each Other

Marcus Zarra has a somewhat depressing post today on the excellent Cocoa is My Girlfriend blog. It's about the release of The Daily. Because of all the secrecy around The Daily prior to its official launch, I think not a lot of people knew Marcus was not just involved with it, but was actually leading much of the development effort.

I knew.

I wasn't on the main development team for The Daily, but I did most of implementation work on a single component (the 360° panorama). I wasn't in NYC every day the way Marcus was, but I went down there enough to know the conditions under which the application was written. I saw the endless late nights (actually, it was usually early mornings) and the stress and difficulties under which the app was written.

A personal stake always makes it harder to watch negative publicity. The Daily's launch was especially hard because I was in a position where I couldn't really come to Marcus' team's defense, since my involvement with the project wasn't yet public knowledge. If it had been, I would have been written off as biased.

So, I had to just sit back and watch it the way you'd watch a trainwreck. It was painful watching the snark. It was painful watching Loren Brichter, a well-respected member of our community put together a carousel demo in a complete vacuum and post a video of it as if it proved something about performance in an incredibly large and complex application. It was even more painful seeing John Gruber link to that video, spreading a false impression to a far wider audience.

They both enough about software development that they should have known better. There's almost no part of The Daily that can't be re-implemented in a few hours as a standalone application using static data and with great performance.

Doing the same thing as part of a large development application developed by a large team, working with a larger management team and a huge content and production teams under an unreasonable deadline and constant pressure? That takes more than being a competent developer. A lot more. It takes patience and diplomacy and a very high tolerance for frustration. I don't think I would've survived in Marcus' shoes all those months. I would've walked out or been escorted out long before the launch ever happened. It was honestly that tough.

I'm not sure that our community is getting quite as bad as it appears to Marcus at the moment, but there is no doubt that we are capable of producing our share of snark. And let's be honest… I am capable of producing more than my individual share. I don't think we think about being mean when we fire off a smug comment. I think it's usually just a side effect of expressing a myopic, partially informed opinion. I'm sure Loren honestly believes he could have done better with the carousel had he been working on The Daily. But he's wrong. He just doesn't know enough about the situation to realize it.

But it's not my intention to point fingers here. I'm been just as guilty at times. Last year, during the WWDC keynote, I was extraordinarily snarky about the Farmville demo, completely forgetting that I know people who worked on it. I wasn't intending to shit on their work, but I did, and I'm sincerely sorry about it. There have been other examples. I hope there won't be more in the future, but only time will tell.

I think Marcus' post should be read and taken to heart by all of us. I think it should serve as a reminder that real people — very often our friends and colleagues — are behind the software and hardware that we express opinions on. We should keep in mind that a lot of work went into it. We should also keep in mind that in most cases, we have no idea the circumstances under which the application was written.

Being critical is not only fine, but a necessary part of driving each other to be better developers. But we should try and avoid being a dick about it. It can be done respectfully, and should be.

I promise to try if you will.


Amit said...

Feedback / Criticism can elevate you to new heights or can send you crashing down into the pits of hell. It can build teams and communities or destroy them.

Three points in no particular order
- Private criticism public praise.
- Work is an excuse for meeting good people.
- I like Jeff's posts not just because they are technically good but they are honest.

funkyboy said...

I am curious ... How long did it take to implement the app?

Toutankharton said...

Comments are closed on the Cocoa is my Girlfriend post, so maybe Marcus can answer me here or you can. I am part of the "junior" developpers Marcus talks about, so I ask this with all the humbleness required.

What is so difficult about the Daily Carousel ? What are the dependencies that he talks about, or what is the difference in performance between a standalone app and the Daily like you say ?

I really want to know, as I have never developped an app near as big as the daily.

For me, if one is able to develop a working standalone carousel like Loren did, I don't get why, in a nice object oriented application that gets its Carousel items from the network, performance could be that much worse. Data can be loaded asynchronously and touch is handled in a different thread anyway.

Besides this, I agree with both of you. Part of what makes the Cocoa community so nice is the respect and spirit of its member. However, I'm sure Gruber or Brichter didn't mean to be harsh on the developers.

Marcus said...

Better to email me directly than to seek an answerincomments. I can be reached at Marcus at cimgf dot com

oscherler said...

Is that the same Loren Brichter than the one who came up with that appalling Twitter client for the iPad, that you can't scroll while handling the device with one hand because the scrollable area is too far from each side of the screen to be reached with the thumb of the hand that holds the iPad?

Mokaza said...

I definitely understand where Marcus is coming from. Just a caroussel is very simple but when u have it integrated with dynamic data and stuff, it takes quite a long time and I am sure the clients changed their mind along the way making every change really painful.

Any change however simple they are can introduce bugs.

brandon said...

oscherler: Responding to feedback with feedback is tacky and goes against the very thing Jeff and Marcus wrote about.

Thanks for the post Jeff (and Marcus), this was well timed and we truly needed a reminder as to the real reasons we do this.

Shawn said...

As an iOS developer, I certainly commiserate with Marcus. I've been told, at times, that I can be a little snarky, but when it comes to snark about iOS apps, it is rarely towards the coder of the app. Sure, we can all spot a memory leak in someone else's code which should have been caught by someone, but who of us hasn't left a missed memory leak in a product? For me, it's more of a client issue. Look at the New York Times iPhone app. As a client, I would never have let that into the store. And no updates for how long to fix the problems? I think it's been months. Could their iOS developers be out of their league? Sure, I guess so, but is that the iOS developers' faults, or the project owners' faults? An app like that needs to be top-rate when pushed to the App Store, and it certainly wasn't, and, more damningly, still isn't.

Information Workshop said...

Here are some additional things to consider...

The developer community has changed radically. It's planet-wide, and the vast majority do not publish. Do they not count? Are the only "developers" who should be nice to each other those who write in blogs?

The developer community's communications technology is stuck in the FAR past. Forums are an anachronism (including Apple's), with everyone talking at the same time in a giant room, asking the same questions repeatedly, the information undated, uncurated, unorganized, mostly unanswered, and the stale cruft never cleared away. Can you believe there is still an Apple Mailing List and MacTech Magazine in paper form printed once a month with only one article of interest to a particular reader?

Commenting systems have not yet been designed correctly. They encourage tiny *anonymous* hit-and-run interaction. If only comments could be like those on Thoughtful comments are discouraged.

Conferences, etc, are just for the privileged few. At least WWDC publishes the videos planet-wide, otherwise it would be unfair and misguided here in 2011.

No one has yet tried to organize and pull together the Cocoa/Cocoa Touch developer community, even when we're ALL connected and have video capability. Developers get stuck in conventional thinking like anyone else.

There are possibilities. I'm working on one, but all too slowly and ploddingly because of these problems.

So, given what I just wrote, this idea that the developer community is not being nice is misrepresentative and seems written from an ivory tower or within a "filter bubble." It rubs me the wrong way because I cannot participate fully in the "developer community" that's being referred to, just like 98% of the rest of Cocoa/Cocoa Touch developers. I'm trying hard not to use the word "clique."

Being nice to developers should actually mean organizing and developing advanced tools to solve the problems I mentioned above, worthy of the second decade of the 21st century, and the amazing company we follow.

See, it's inappropriate for me to leave a long post like this because of backward thinking. Why?

Shawn said...

Information Workshop:

We're stuck in the FAR past? Sure, comments on blogs isn't very efficient, but have you tried GitHub? Stack Overflow? Google? Yes, I would have to say that, for beginning Cocoa developers, things could be very difficult, but moreso because there is just SO much information that I, for one, would find it difficult to find a good, solid place to start. No, it's far from perfect, but we've moved forward from the times when BBS and IRC were the only two solutions. And have you thought about all the real life user groups? Every medium sized city (at least here in the US) has some sort of semi-regular get together of Cocoa developers.

Not all commenting systems are created equally. Sure, some are the anonymous types, but not all. Blogs like this one, and many other Cocoa blogs, have a large percentage of named and linked users.

Not all conferences are for the privileged. Unconferences and some of the smaller, more focused conferences and seminars are either cheap or free. Even Apple puts on a touring series of day-long seminars that are free (I went to one in Seattle last year that was free).

You're working on a solution to help build community, but you are building it yourself? How about open sourcing it? Sharing it with the community?

I don't understand your assertion that we are lacking in 'advanced tools.' What kind of tools are you looking for? Shared code repositories like GitHub? Sharing thoughts and ideas via blogs and forums? Face-to-face real life get togethers, like user groups? There is a ton of useful stuff out there in the Cocoa community (which is also there for many other technologies). Sure, it's not perfect, and we can all definitely try and help come up with ideas to make it better, but I think you're wrong in almost everything that you say.

Shawn said...
This comment has been removed by the author.
Ölbaum said...

@brandon I'm pretty sure their posts weren't about feedback, but about the the new trend of the senior developers in the community mocking the newcomers by showing off what they think they can do instead of helping them like it used to be.

If you can't take feedback, even from someone who is only mildly pissed off, you have no business being a software developer. See this:

Ölbaum said...

Clarification: oscherler and Ölbaum above are the same person. I fixed my OpenID (Must. Resist. Urge. To. Insert. Mildly. Pissed. Off. Feedback.) settings between both posts as my nickname seems to have been lost since last time I configured it.

Nom DePlume said...
This comment has been removed by the author.
J. Whitley said...

Another approach that I've appreciated is to amp-up the "private criticism, public praise" thing by recasting criticism into the form of an interview. Imagine yourself doing an interview with the dev team involved (or better still, actually do it). Write up your questions beforehand, making sure to pull out those pointless stings and give them the benefit of the doubt. Instead of "gee, this sucks, why?" you'll want to reach for questions like:

"What challenges did you face in implementing [feature]?"

"What would you do differently if time were to replay like in Groundhog Day?"

"Did you consider solving problem X with solution Y?"

That's just the tip of the iceberg. Go in assuming that you've got something to learn from these folks' experience and war stories. Done right, that approach respects the developers' efforts and allows for meaningful dialogue that will help you (and the larger community, if you're able to publish) learn something.

Halosys said...

very good article . nice definition of i-phone

id said...

If you happily accept praise you also have to gracefully accept criticism--the source is not important. So, does Marcus happily accept praise from other developers?

After a failure it is best to face it, accept it and perhaps provide hind-sight informative suggestions about how others can possibly avoid the same.

Not that this is the case with Marcus but all to often I have seen developers provide unrealistic time estimates because that is what management or the customer demanded.

I have found that honest estimates are the best and even usually accepted. In one instance our group was called to a meeting with the CEO. He went on for 20 minutes impressing the importance of delivering in one week. He asked then each developer how long it would take, each developer parroted 1 week. I was asked last and said 6 weeks, was challenged and presented why it would take longer--the CEO accepted the 6 weeks. Had I parroted the requested 1 week line it would have taken even longer than 6 weeks and there would have been a lot of unhappiness.

Hire iphone developer said...

I’ve found blogging to be a great way to publish some unusual thoughts or opinions. I’ve always enjoyed engaging in interesting discussions with people, but you can reach a lot more people via a blog than you can in verbal conversation.

Hire iphone developer

Zoha & Kashish said...

hello dear,excellent blog,very very informative,i always want to develop an app on quit smoking and cricket this blog was very helpful i do have my blog
do visit and leave a comment on it thanks


we offer discount nike jordan shoes up to 30%-50% off, nike jordan shoes is a kind of street style shoes online store, they are all the newest and discount nike jordan shoes.
nike air max 2011
Nike air max 2011 nike shox torch cheap air jordan 2010
air jordan 2010
jordan retro shoes
new jordan shoes 2010


i appreciate your blogs ~thank you so much~~~~@ dell d600 battery

Halosys said...

this article is very good iphone development