rc3.org

Strong opinions, weakly held

Category: Commentary (page 38 of 982)

How to make it as the new developer on a team

I’ve recently had the opportunity to both be the new person on a team and to integrate new team members onto a team that I had been a part of for a long time. Having seen it from both sides, I have some thoughts on how to join a new team without driving everyone crazy. It doesn’t matter how you became a member of the new team, everybody starts in the same place, which is to say, not really knowing the code base or the culture of the team. Learning to mesh well with the culture of a new team is almost certainly more difficult than learning to work in a new code base.

The first thing you have to do when you join a new team is check your ego at the door. It doesn’t matter how experienced you are or how many great ideas you have. At the beginning, your job is to be a sponge and learn as much as you possibly can. Just shut up and listen. Read anything you can get ahold of. Eavesdrop when other people are talking about the project. At the beginning, think of yourself as a spy — gathering as much information as you can without drawing too much attention to yourself. I even try to make it a point to try to figure out the answers to questions myself before I ask someone. The digging involved can be very educational, and showing some level of self-sufficiency will garner respect, at least until you make a big mistake that could have been avoided by asking a few simple questions.

One question I try to avoid until I get to the point of saying “our code” rather than “your code” is “Why?” Figuring out why things are done a certain way is important, but “Why?” is a question that can very easily come across as critical, especially when it comes from someone who’s not really trusted. The truth is that the stuff that makes you want to ask why often really is worthy of criticism. Just let it go until fixing it is as much your responsibility as it is anyone else’s.

The second important thing is to immerse yourself in the code style and coding habits of the team you’ve joined. Everybody who’s been programming for more than a month has their own opinion on whether to put spaces inside parentheses (doing so is crazy) or whether braces go at the end of the line or on the beginning of the next line. The team almost certainly has a policy on whether to use tabs or spaces when indenting. Beyond that, the team probably already has its own answers to more substantive questions about how their code is organized and how they deal with separation of concerns. At the beginning, do it all their way. If you have some ideas for improvement, propose them to the entire team once you’ve shown that you’re a team player. Coming in the door and writing code in your style rather than the team’s style is likely to infuriate at least one other member of the team. Furthermore, immersing yourself in the native culture is the best way to learn. People often have very good reasons for doing things the way that they do, and if you’re busy trying to impose your brilliant ideas on the team, you’ll never learn what those reasons are.

The third thing is to focus on service. Look for opportunities to be helpful wherever possible. The biggest mistake I ever made at a job was listening when the director of the group led us to believe that stuff other groups wanted from us was not as important as the things we were building for him. In the end, we had an unpleasantly dysfunctional workplace, and I found myself looking for another job.

The stakes are high. There are two ways things can play out, depending on the team dynamics. A new person who stomps all over the existing culture of the team will tend to be marginalized by the current members and will face a much tougher climb to build credibility. If the team feels confident in complaining to management about the new guy, they’ll in all likelihood try to get them disciplined or fired. If there’s something about the new guy that makes them seem untouchable (the usual scenario is that they were hired due to a prior relationship with the manager), then the current members of the team will leave. In the end, it all comes down to respect and you gain the respect of the team by treating the team with respect.

Wait, people are getting paid for file sharing?

It turns out I had no idea how file sharing actually works these days. I mean, I know how BitTorrent works, but I didn’t know how sites like the recently terminated MegaUpload worked. TorrentFreak has a good post explaining how they work — specifically how people get paid for sharing copyrighted material — and the effect that the MegaUpload shutdown has had on other sites in the same business. In short, a lot of content has been taken down as a result because people don’t want to go to jail. Interesting stuff.

Optimize for simplicity, not performance

I liked this, from DHH:

The progress of technology is throwing an ever greater number of optimizations into the “premature evil” bucket never to be seen again.

That can be a tough lesson for those of us who have been developing software for awhile to internalize. It becomes ever more sensible to optimize for simplicity rather than performance.

The movie industry accelerates its push toward irrelevance

Here’s a new one — in order to drive people away from watching movies on Netflix, Warner Bros has struck a deal that prevents users from adding them to their queue for 28 days until the DVDs have been on sale for four weeks. Users have to wait another four weeks after that to actually get the movies from Netflix. Anybody think this is going to wind up being a money maker for the film industry? It surely does not ingratiate Warner Bros or Netflix with me. (Via Matt Drance.)

Why does Chris Dodd work for the MPAA?

Today I noticed that the New York Times had set up one of their room for debate features on the topic What’s the Best Way to Protect Against Online Piracy? The most pro-SOPA piece is written by the Democratic former Senator from Connecticut, Chris Dodd. What’s his current job? Here’s the byline:

Chris Dodd, a former U.S. senator who represented Connecticut from 1981 to 2011, is the C.E.O. and chairman of the Motion Picture Association of America.

You don’t have to think too long to figure out why the MPAA hired Chris Dodd. It’s not because of his experience in the film industry, he’s a lifelong politician. It’s not because of his legislative experience, he was not a member of the relevant committees. He’s got the job because he spent 30 years in the Senate, and the movie industry wants someone with clout to represent their interests on Capitol Hill.

Monied interests, whether they’re companies, trade groups, unions, or issues-based organizations, have many, many ways to influence the political process. Obviously they can attempt to influence the political process directly with money, see Stephen Colbert’s SuperPAC for details. They can also hire lobbyists, who, in addition to wining and dining legislators, also influence the process by offering to take some of the workload off of Congressional staffs. They’ll even write the bills for Congress! And of course they can spend money to try to influence public opinion, through advertising, or organizing “grassroots” opposition or support. They can pay academics to do research that supports their interests. They can pay experts to write opinion pieces in their favor. Or, as in the case of Chris Dodd, they can hire a long-time Senator to run their trade group.

My point is that if you have interests to promote, and you have money you can use to promote those interests, there will always be inroads into the political system available. That’s not an argument against campaign finance reform — the fact that being a politician is more about fundraising than anything else is a big problem that public financing of elections could fix — but it is an argument that in every case where it’s not money versus money, it’s going to be people power versus money, and no reform will change that. The work never ends.

What kind of precedent does iBooks Author set?

There’s been a lot of talk about the licensing terms of iBook Author today. Apple’s new application for creating e-books is cheap, but books created with it can only be distributed through the App Store unless they are free. Gus Mueller wonders about the precedent this sets for Apple’s other tools:

I really hope Xcode doesn’t ship with the same restrictions some day. “Binaries created through Xcode can only be sold through the App Store, and you can’t charge more than $15.99”.

Apple is free to distribute its tools under any terms that it likes, what I am pondering is what authors should do.

As an author, I can say that this doesn’t seem fundamentally different from signing a contract with a publisher. If Publisher A agrees to publish my book, that usually means I can’t also let Publisher B publish it as well. When you use iBooks Author, Apple is your publisher. If you want to give it away for free, that’s fine, but you’re not going to be able to sell a Kindle version published using Apple’s tools.

That doesn’t strike me as horribly unreasonable. The big difference, though, is that if Publisher A publishes my book, it can be sold in any bookstore, online or offline. In the new electronic world, choosing a certain publisher means that you are also choosing only one channel of distribution. If you choose iBooks, you’re also constrained in terms of devices. There are Kindle apps for most platforms, but iBooks is iOS only. It’ll be interesting to see if going with iBooks turns out to be a better economic proposition for authors, or more precisely, to see which authors benefit from going with iBooks rather than Kindle.

It’s a lot to think about, in any case.

Ta-Nehisi Coates on ignorance

Ta-Nehisi Coates on ignorance:

If your chief goal, as a thinking person, is to find a path to making yourself right, you may never amount to much of a thinking person, but you can never be disappointed.

The anti-SOPA protests worked

The big news of the day is that on the day of the blackout protests, 18 Senators announced their opposition to PIPA, the Senate version of the SOPA bill. Most of the newly opposed Senators are Republicans. Sadly, Democrats get a lot of campaign contributions from the entertainment industry, and the entertainment industry desperately wants to be granted even more authority to bully suspected copyright violators.

Killing this terrible bill is great, but there are two broader discussions that really need to take place. The first is about whether attempts to prevent piracy through new laws is worthwhile at all. (I would argue that it is not.) And the second is about how laws like SOPA come about in the first place. For more on that, read about Larry Lessig’s recent work.

Better activism day

As you’ll see tomorrow morning, I fully support the effort to black out as much of the Web as possible to protest SOPA/PIPA. Protests like this serve two purposes — one is to let Congress know that we are serious about our opposition to this legislation, but the other is to inform people who aren’t aware of these bills that something is going on that will almost certainly affect them down the road. I assume the people who read this site are already aware of SOPA/PIPA, but I bet a lot of Wikipedia users aren’t. If they try to read an article on Wikipedia tomorrow, they will be. I’m going dark on this site for reasons of solidarity if nothing else.

Clay Johnson is going to be hosting an online seminar tomorrow that will teach better activism. SOPA/PIPA have stirred up a lot of activism, but the key is to make sure that the activists are as effective as possible. It’s great that Clay is rising to the occasion to help make sure that’s the case.

Oh, and if you are going to black out your site tomorrow, be sure to follow Google’s advice on how to do so without messing up search engines.

Update: Matt Haughey explains how a DMCA takedown notice affected his site, Metafilter. SOPA/PIPA are designed to enable copyright holders to take sites offline even if their hosting provider is not willing to comply.

Don’t order your team to work more hours

Today I was talking to a friend about his job. He said his company had just had a meeting where the management told his team that they were not satisfied with the overall sense of urgency and that the team needs to be getting things done more quickly. Reading between the lines, it was clear that what the manager meant was that the team needed to be putting in more hours.

Working more than forty hours a week is hardly outside the norm in software development, but directly demanding more hours from people is a bad idea for a number of reasons. I won’t get into basic issues of justice and decency and instead focus only on effectiveness. Even if your only goal is to get things done as quickly as possible, demanding that your team work more as a group is still a bad idea.

The first issue is morale. Members of the team will not readily accept “work more hours” as a possible solution to any problem if other solutions that don’t require them to work more hours are apparent. If there are process changes that would make the team more productive, they’ll wonder why those aren’t being made instead. If there are underperforming members of the team, others will wonder why those team members aren’t being specifically urged to do a better job or being replaced.

And, of course, some team members will start asking themselves why they’re working at a place where the management tries to solve problems using the blunt instrument of “work more hours.” In the end, you wind up with an unhappy team that starts losing its strongest contributors to other jobs. If you do plan to go this route, understand that the team will hold you accountable for every second of their time you appear to waste, so you’d better have your ducks in a row.

The second issue is quality. This is an issue I touched on when I talked about the problem with all-nighters. When someone is working and they know they could be doing something else, whether it’s having dinner with the family, going to their kid’s soccer practice, or sleeping on the couch, chances are their focus is going to be on doing whatever it takes to finish as quickly as possible. Corners will be cut. The longer the team is working extra hours, the more technical debt you build up, which in turn makes it harder for developers to get things done, requiring even more work to maintain the same level of production. It’s a losing proposition.

The third reason not to fall back on “make them work more hours” as a strategy for increasing productivity is that it reduces the organization’s capacity to manage a crisis. For one thing, there are fewer hours to throw at unexpected problems. If your lead developer is already working on Sundays, those Sundays aren’t available when you get a surprising feature request from a big customer. If the team is already burnt out from previous death marches, they’re going to be pretty cynical when their confronted with an actual crisis. And finally, when the crisis arises, that crappy code people were writing at night when they were trying to watch Glee at the same time is going to be an impediment to solving whatever problem is at hand.

The funny thing is that on a good team, you never need to ask people to work more hours at all. If you have good people and they understand and have bought into the team’s goals, then they will do what needs to be done to ship, even when it means putting in extra hours. One way to make sure that never happens is to coerce them into working more hours.

Every time you’re tempted to do so, sit down with members of the team and ask them how many hours a week they spend dealing with stuff not related to shipping and work to make those things go away instead.

Older posts Newer posts

© 2025 rc3.org

Theme by Anders NorenUp ↑