rc3.org

Strong opinions, weakly held

Month: June 2012 (page 1 of 2)

PHP’s hidden strength

It’s easy to complain about PHP. Look, here’s Jeff Atwood complaining about PHP. He proposes to create something that will replace PHP. I’m all for this project — as an industry, we should constantly be working to improve and replace things, and we should be building great things in case they do wind up becoming popular.

If you’re going to try to replace PHP, you need to figure out what it is about PHP that enables it to maintain its massive market share. Everybody knows about the friendly learning curve and the easy availability of inexpensive hosting. If you want to create your first Web application, PHP is the simplest way to get started.

What’s interesting, though, are the reasons why you see some of the biggest Web sites deployed on PHP. It’s not because developers love it. It starts with the fact that PHP is easy to operationalize at any scale, or at least easier than most other technologies. It doesn’t require an app server, or a virtual machine, or anything that’s outside the realm of basic Unix processes.

What’s more important, though, is that many of the most experienced ops people in the industry who have deployed large scale sites have a PHP background. They understand how PHP works and where it fails. Building that experience on a different stack would take the same thousands of hours that they’ve already invested in learning how PHP scales. It also seems to me that you see less scaling-related drama from PHP-based sites than you see with sites that try newer technologies, or eclectic mixes of technologies. We’ve never seen Facebook go through growing pains like Twitter has gone through.

If you’re working on something with the goal of displacing PHP, the Twelve-Factor App manifesto is not a bad place to start. The other option is to build something that runs on top of the JVM, because there’s a lot of operational expertise in that area as well.

That said, the simplicity of PHP from an operations standpoint and the deep experience with it will make it somewhat difficult to displace PHP from its current position in the industry, no matter how much programmers like to gripe about it.

Two truths about identity

In announcing that he’s moving from working on Android to working on identity at Google, Tim Bray mentions two things about identity:

Usernames and passwords generally suck and obviously don’t scale to the Internet, so we need to do away with ’em soonest.

The new technology coming down the pipe, OAuth 2 and friends, is way too hard for developers; there need to be better tools and services if we’re going to make this whole Internet thing smoother and safer.

If he can make progress in attacking these issues in his new role at Google, the Web will be a much better place.

Economists explain how to write code

I enjoyed this coding manual prepared by University of Chicago economics professors Matthew Gentzkow and Jesse M. Shapiro for their research assistants. It’s a great short manual on how to code for clarity and performance. Considering the vast amount of really bad code that is produced in academia, it’s nice to see a focus on this sort of thing from professors. I especially enjoyed the parts where they give professional software developers too much credit. For example, here’s an assertion:

Real programmers write “unit tests” for every piece of code they write.

Would that that were true.

Stuff I need/want to spend time learning

Just a short list of things I’d like to be learning right now:

Mike Loukides defines DevOps

Last week, Mike Loukides took a stab at defining DevOps over at O’Reilly. Until recently, I thought DevOps was just another buzzword, but I’ve changed my tune. The growing complexity of application infrastructure is the key factor in the transition of ops people into developers of another kind. Here’s Loukides:

Operations doesn’t go away, it becomes part of the development. And rather than envision some sort of uber developer, who understands big data, web performance optimization, application middleware, and fault tolerance in a massively distributed environment, we need operations specialists on the development teams. The infrastructure doesn’t go away — it moves into the code; and the people responsible for the infrastructure, the system administrators and corporate IT groups, evolve so that they can write the code that maintains the infrastructure. Rather than being isolated, they need to cooperate and collaborate with the developers who create the applications. This is the movement informally known as “DevOps.”

If you’re a Web developer or especially if you’re working on the operations side of the industry, understanding this trend and its implications is key to the future of your career. Even if this isn’t how things work at your current company, it probably will be at your next. Loukides’ article is a good place to start.

Why are Apple laptops becoming harder to take apart?

You can probably imagine what the response of iFixit’s CEO was to the new MacBook Pro with Retina Display once he took it apart and found that it is probably the least user-serviceable laptop Apple has ever made. He hates it.

What I like about his piece is that he doesn’t place the blame on Apple. Instead, he puts it on consumers:

We have consistently voted for hardware that’s thinner rather than upgradeable. But we have to draw a line in the sand somewhere. Our purchasing decisions are telling Apple that we’re happy to buy computers and watch them die on schedule. When we choose a short-lived laptop over a more robust model that’s a quarter of an inch thicker, what does that say about our values?

I know a lot of people think that computers (and many other products) are becoming less maker-friendly because greedy companies want to get more money for parts and labor, or even better, shorten the upgrade cycle and sell more computers, or cars, or appliances, or whatever.

I doubt that is ever really the case. There are a lot of tradeoffs that go into product design. When it comes to laptops, there are capabilities (display resolution, processor speed, storage space, battery life, and so on), size and weight, cost, and upgradeability. Apple seems to have gotten the impression that upgradeability is the factor that people care about the least, and I suspect that they’re right.

My suspicion is that the number of people who upgrade any of the components of their laptops is very small — I’d be surprised if even 5% of customers did so. I would imagine that the number of people who repair laptops on their own is even smaller. What’s funny is that I’m one of those people. I unthinkingly set a magnet on a MacBook I used to have and destroyed the hard drive, and I was very pleased to be able to take it apart and replace that hard drive myself. That being said, I’d rather have one of the new MacBook Pros with Retina Display than that old MacBook any day of the week.

JC Penney and price shrouding

I, like many people, thought that when Ron Johnson left his job running Apple’s retail operation to take over JC Penney, he’d turn things around completely. Not long after he took the job, he promised to completely remake the department store experience. One of the biggest experiments he tried was completely bucking the industry trend when it comes to pricing.

In January, the New York Time ran an article explaining Johnson’s plan, which involved simplifying the pricing structure and eliminating most large sales and promotions relating to those sales. This sounded like a great idea to me. The idea of going into a store and buying things without wondering whether I could get a better discount later by gaming the system seemed like a relief.

Based on the early results, I was completely wrong. JC Penney’s since they changed their pricing model have been incredibly bad. MSNBC’s Bob Sullivan explains why, in an article about price shrouding. In short, people feel like they get a better deal when they’re playing the game. The open question remains whether JC Penney is suffering poor results now but will rebound once consumers better understand what they’re doing. I wouldn’t count on it.

I think the lesson here for any product designer is that we have to really understand human behavior when we’re making decisions that depend on it. The Apple Store sells products that cannot be purchased more cheaply anywhere else. Furthermore, Apple’s profits are roughly the same whether you buy an iPod at an Apple Store or you buy that iPod at Best Buy. JC Penney does not retain either of those advantages.

Defining Big Data

Here’s an interesting definition of Big Data, from Douglas Patterson:

One useful definition of big data — for those who, like us, don’t think it’s best to tie it to particular technologies — is that big data is data big enough to raise practical rather than merely theoretical concerns about the effectiveness of anonymization.

What’s the difference between a manager and a team leader?

Today I was sort of idly thinking about the difference between a manager and a team leader. I suppose these terms mean different things in different organizations, but I think it makes sense to propose general definitions that clarify a somewhat hazy topic. We’ll assume that in both cases, the members of the team report to the manager or team leader, at least for the duration of the project that they’re working on. (If you work at a place where people have a manager and a team leader and the responsibilities are divided, all bets are off.)

Both are accountable for the overall performance of the team. If the team fails to meet its goals or is dysfunctional, that’s on the person who’s running the team, regardless of their title. I strongly prefer to think about these responsibilities in terms of accountability rather than authority for the reasons I talked about in my post about judgement and influence. I think that teams function most effectively when the members buy into the team goals individually because they see the value in them, rather than because somebody told them to do something.

So the difference is that a team leader should be thought of as the senior practitioner on the team whereas for a manager that may not be the case. If you’re the team leader of a team of developers, you should probably be the best developer on the team, and the other members of the team should respect your technical capabilities. If you’re the manager of a team of programmers, that’s not necessarily the case. A manager may be a fine programmer, but their core responsibility is management and coordination, not necessarily bringing an authoritative voice when it comes to making technical decisions.

The difference matters in terms of setting the expectations of the members of the team. It’s a dangerous thing when the members of a team think of the person running the team as a manager but they think of themselves as a team leader. Or if the team members have a manager they expect to be a team leader but who isn’t equipped to function in that role.

I’d be curious to know what other people think about these definitions. I haven’t heard of the two titles being defined this way before, but they match with my expectations based on my experience. I think that as an industry, it might pay off to formalize them.

Bitly demonstrates the wrong way to pivot

Last week Bitly announced that they’re morphing from a URL shortening service into a bookmarking service. I actually don’t think this is a bad idea.

Why do people start using URL shorteners? To share links that were unwieldy in the context in which they were to be used. I started using them in email because so many sites used URLs that were more than 80 characters long. It’s funny that with SEO and parameters used to track traffic sources, links are getting that long again. Anyway, that was the original use case.

One of the first thing Bitly did to add value beyond the basic shortened link was to offer analytics. When you shorten a link via Bitly, they collect basic analytical information about the people who click on it. So by using Bitly to shorten links you post to Twitter, you can get some idea of how many people are clicking on the links you share. This feature is remarkably useful, and is completely invisible if it’s not something you care about.

Bitly correctly assumed that people tend to shorten links that they care about, and that they may find value in having those shortened links saved as bookmarks so that users can come back later and view the archive. I think that was probably a good idea. I was a longtime user of Delicious and am a current user of Pinboard, and I have Pinboard automatically import any links that I post to Twitter. Most of those links are ones that I shortened using Bitly. In that sense, I’m pretty much the ideal use case for a Bitly bookmarking service. The main impediment would be that I have thousands of links stored in Pinboard already and I have no desire to move them.

The problem Bitly ran into is that they changed the basic link shortening workflow that people were used to. It used to be that if you shortened a link through the Bitly Web site or the Chrome extension, you’d immediately be presented with the shortened link. Unfortunately, Bitly has decided that promoting its new bookmarking service is more important, so now the first thing you’re asked to do is “Save this bitmark,” only after which can you see and copy the actual shortened link. Furthermore, Bitly gave you a nice box with the title of the page the link points to and the shortened link that you could easily post to Twitter with optional edits. That too is gone, replaced by a form that’s less useful.

Bitly would have really benefitted by enabling its users to wade into the new functionality rather than diving in. They should have maintained the old workflow and then presented a form that optionally allowed the user to add a description of the link, I think most users would have been much less frustrated with the changes. Bitly leapt out and tried to change a tool that people found pretty useful into a completely different tool. It’s not surprising that the existing user base revolted.

That said, Bitly needs to address this by tweaking the interface to satisfy existing users, not by throwing out the entire Bitmarks system. I think their idea that it’s a useful complementary service for them is correct.

Older posts

© 2024 rc3.org

Theme by Anders NorenUp ↑