We write code, not documents

Recently a student asked me:

Could you describe one instance where you had to use a diagramming tool (eg. Google Slides Drawings, Lucidcharts, Miro, Whimsical, Gliffy etc) to accomplish a task?

They also provided an example answer I could follow, which consisted of creating a chart to map a user flow, presenting it, getting feedback, adding it to another larger document, and creating Jira tickets.

I was a little surprised (though simultaneously not surprised) — is this how software development is still being taught?

Without being critical of academia, this seemed like a good opportunity to try to shatter by-the-book software development ideas for some future engineers by sharing a different way — our way.

Here was my answer (slightly edited for clarity and typos):

I hope this answer is helpful, but I actually don’t use a lot of diagramming tools, and I think it’s safe to say they’re not commonly used at Basecamp. We don’t write specs and stuff like that as they’re not “real” enough. We will do high level sketches and rough drawings (usually pen and paper or an iPad and a sketching app), but that’s typically it. So more often I’ll grab a pen and paper and sketch out a rough flow of what I need to do, or write out pseudo code of the steps that I need to take. 

Keep reading “We write code, not documents”

The Bezos way: sleep, puttering, and three high-quality decisions a day

One of the most successful business people in the world…putters?

Jeff Bezos has always been one of those people whose ideas and thinking make a lot of sense to me. When he talks, I listen.

So when I recently came across a fantastic interview with Jeff Bezos, I jumped right in. The entire interview is great and I really think watching the whole thing is worth your time. But there was one section that really stuck out to me: his prioritization of sleep, calm, and quality.


It’s 2 minutes and 29 seconds of your day well spent, but here’s the basic gist:

  1. 8 hours of sleep a night. He goes to bed early and wakes up early. He thinks better, has more energy, and his mood is better when he gets the right amount of sleep, all of which contribute to making him an effective decision maker. The opposite can hold true too — being tired or grouchy can lead to bad decisions.
  2. Puttering (yes, this is an official Bezos term). Bezos’ morning routine isn’t manic or hectic, it’s quite the opposite — he putters around, taking his time and slowly ramping up. This is his time to read the paper, have coffee, and eat breakfast with his kids. It’s really important to him that he have a slow, calm start to the day, which is also why he insists on no meetings before 10 a.m.
  3. High quality decision making. He likes to do his “high IQ” meetings before lunch because that’s when he’s sharpest, and he knows by 5pm he’ll be wiped. Anything that’s important that pushes late into the day gets rescheduled for 10 a.m. the next day. He recognizes that he “only” needs to make a few key decisions a day, not thousands of small ones. If he can make three high quality decisions a day, that’s plenty good.

This is astonishing and inspirational for all the right reasons. For all we hear about how awesome it is that people are constantly “hustling”, working 20 hour days, sending 50 emails from bed, and squeezing every minute of the day for max productivity, we have in front of us Jeff Bezos — one of the most successful business people in the world— puttering.

Sleep. Calm. Prioritizing. Quality over quantity. Recognizing limits. These are the kinds of principles that have made him a wild success in the long run. I think we’d all do well to mimic these practices.

Excuse me while I go putter around for a while. 🚶

We agree with Jeff’s ideas on sleep and calm — so much so that Jason and David wrote a book about it! Check out “It Doesn’t Have to Be Crazy at Work”.

The immeasurable value of customer friendly policies

A while back we bought a duvet cover from Brooklinen based on, of course, a glowing Wirecutter review. We’ve been happy with it (it’s super comfy!), but sometime in the last couple months the teeniest, tiniest of holes appeared in it.

This wasn’t a big deal, but this tiny hole could eventually turn into a big gaping tear sometime in the future, so I wanted to get it fixed up. Thankfully, Brooklinen offers a lifetime warranty.

I sent them an email with a few details, and with zero fuss we had brand new replacement duvet sent to us for free. And on top of that, they told me to just keep the torn one so I didn’t have the hassle of shipping it back.

And with just that one small interaction, they’d secured me as a customer for life. The product is great, their service was outstanding, and the prices are fair (especially given how they stand behind their products). Why would I even bother shopping around in the future when they’ve done right by me in every way?

In absolute terms they lost a bit of money on this single transaction with me. But beyond the short term, they’ve setup potentially thousands of dollars of future sales from both me and word of mouth goodwill. I know I’ll be back for sure.

On the flip side, I recently ordered a couple pillows from Tempurpedic. They’re a well known brand in the bedding space and on the high end of the price scale.

I honestly didn’t think much about their warranty and return policy when I bought the pillows. I had just come off the Brooklinen experience and just kind of assumed a high-end brand like Tempurpedic would be as good if not better on the customer service front.

I gave the pillows an honest shot for about a week, but they just weren’t for me. There was nothing defective or wrong with them, but I found them uncomfortable. I decided to return them.

Wups! Their return policy clearly states that they don’t accept any kind of returns on pillows.

Now to be clear, this is 100% my fault for not checking the return policy before buying. And this also isn’t a product defect. They are well within their rights as a company to have a policy like this to protect their business. Objectively I have no problem with any of that.

But subjectively I was surprised and a little irritated. It left a bad taste in my mouth, especially coming off the Brooklinen experience and knowing they have a far more generous return policy (as do Leesa, Casper, and others in their industry). Surely they could be more lenient with this policy to take care of their customers?

Now could I have emailed them and finagled my way into a refund? Yeah, probably. But it hardly seemed worth the effort. From just reading their policy, I got the feeling — right or wrong — that emailing with them was probably going to be a huge pain in the ass. I didn’t bother.

All said and done, I doubt I’ll ever buy another Tempurpedic product again. I wasn’t really happy with the product and on paper the company didn’t seem to really care if I was happy. Why would I ever support this company again with my dollars?

They landed $80 from me this one time, but it sure seems like they missed out on a long-term relationship with a customer.

At Basecamp we try to be ultra-clear about our refunds. Yeah, we’re not making multi-thousand-dollar physical products, but treating customers the right way and making them happy is our golden rule.

We’re happy to make our customers happy. 😃

And beyond what our public policy says, there is a singular philosophy that we follow when helping out customers at Basecamp: if you have even the slightest doubt on what to do, just do right by the customer. The trust and respect we gain by making a customer happy — even if it means “losing” a few bucks today — is immeasurably more valuable in the long run.

The future of the Android community is YOU

If you’ve been paying attention to what’s been going on in our community — conferences, meetups, blog posts, podcasts, open source (the list goes on and on) — you’ve probably noticed a really wonderful energy and spirit behind them all. Yes, our community is healthy and thriving!

And while things are really good today, I do think that we all have a responsibility to think about the future of our community — to really consider what we’re going to do to help shape what it will become, not just for ourselves, but for all the new folks that will be coming into Android for many years to come.

But before we get into the future, let’s take a step back and consider why our community even means so much to us. Why do we even care? The best place I can think to start is my own story.

🤤 My (boring) story

I started with Android back in 2014, which wasn’t really that long ago. I had been writing Java for a long time before that, but didn’t know anything about Android. So I had a bunch of stuff to learn — all the APIs, UI frameworks, etc. were all new to me.

Like many people, a natural place for me to learn was at work, on the job. And that’s exactly what I did. I learned a lot from my coworker Jay. Jay really taught me the ropes and helped me get off on the right foot. He put up the guardrails so I wouldn’t go careening off the side of a cliff.

Turns out though that Jay has a life, a family, and his own work to do. He couldn’t be my personal Stack Overflow, 24/7. So yes, of course, there are limits to what our coworkers can provide. They’re a wonderful people that help us in our projects and day to day work, but naturally they have a bunch of their own stuff to do!

And so like just like everyone else, I started Googling around for resources that would help me become a better Android developer. But what I found wasn’t just a bunch of “resources”. Instead I found an incredibly rich network of teachers.

My peers were out there teaching and offering help without asking for anything in return. They covered every kind of topic and every kind of app. It was really amazing to see, and these teachers became a big, big part of how I learned and got a lot better at Android.

In fact, I’m certain that I don’t reach this level in my career without them. That is why this community means so much to me — I’m literally not here today without the help of all of you out there. So thank you!

I bet a lot of you feel the same way and maybe have similar stories. If you stop for a second and think about it, we’ve all been impacted by these amazing contributions in some way. Think of the conference video that got you really jazzed about something for the first time. Or the blog post that finally, for the first time, helped a concept click in your brain. And of course there’s all the open source work that all of our apps are built on.

And so if you think about how much benefit we’ve gotten from this community and what a positive influence its been on us, here’s a scary thought…

🙀 Can you imagine if this community didn’t exist?

What would happen? Well, for sure our jobs would be a lot harder, they’d be a lot less fun, and a lot less interesting. We’d find ourselves solving the same problems over and over, and it’d get tiring and tedious real fast. I wonder how many of us would even be making Android apps still.

Now of course our community isn’t going to magically disappear or anything like that. But I do think it’s healthy to occasionally reflect on stuff like this — to make sure we don’t take things for granted, and to help us appreciate what we have.

And this thought, as scary as it is, does highlight one really important aspect about communities that people probably don’t think about too often: that sustaining a healthy community is really hard work.

Sustaining any community is tough, and it’s especially difficult to sustain one at a high level like our’s is at. Communities don’t build themselves, they’re not some miracle of the universe. They’re the result of hard work of thousands of well-meaning people, donating their time and effort to help all of us.

I think this can be easy to forget sometimes because there are some folks within our community who are super-pros at doing this stuff. They make it look so easy, you could be forgiven to think that it’s no big deal for them to create these contributions.

But in reality it’s hundreds and hundreds of hours of effort to build these things. Whether it’s maintaining an open source project, prepping a talk, putting on a conference, or the dozens of other types of contributions, these things take a lot of time to put together. And often people are doing this on their own personal time. I don’t say this to make you feel bad for these folks or make it seem like they’re martyrs or something — it’s just to level set how much work really goes into this stuff.

The other thing that makes sustaining a community tough is that Android moves really fast. If you look back 2–3 years almost nothing is the same. Hell, if you look back a few months at Google I/O, almost nothing is the same! This is awesome and exciting of course, but it also means it’s really hard to keep up and cover it all. There’s a wide surface area of topics, and a relatively small number of contributors.

And so because it’s so much work, and because things move so fast, what you often see is that there are natural ebbs and flows to contributions. It’s not uncommon to hear about people taking a break from giving talks, or perhaps you’ve seen an open-source project go unmaintained. Life happens, work picks up, or any number of other factors can play a part, and this is absolutely natural and OK. Of course people deserve a break and should only contribute when it works for them.

But because people are cycling out, we need to make sure that we’re also cycling people in. And so if we truly appreciate this community, and you’ve positively benefited in any way from its contributions…

👉😳 We need you to become contributors

This is especially true for folks who haven’t been super active before. It’s really important to remember that new voices are a key element in moving us in the right direction.

New folks bring many important qualities to the table, but there are two that I really want to highlight.

Your energy. When starting something new, people have a natural energy about them. You’re excited and energized by the possibilities, and that’s important. That energy has a halo effect, not only around those you’re with every day, but also to other members of the community — that energy is contagious! When we see someone doing something new and exciting and full of enthusiasm, that keeps us motivated, interested, and energized too.

Your diverse perspectives. We don’t want to become a stagnant community of unchangeable ideas. New people naturally bring in fresh ideas, new angles, new ways of thinking, tend to challenge the status quo, and bring up issues that we might be blind to.

These two qualities are really, really important for us to have within our community. But unfortunately, a lot of times when encouraging new folks to get involved, there are a couple common retorts that I’ll hear.

“I have nothing new to say.” There’s this common misconception that people have. This idea that “I have nothing to contribute” or “Everything I would talk about has already been said by someone else.”

And while I understand where you’re coming from, I’m sorry to say you’re 100% wrong. You do have something to say whether you realize it or not.

Here’s the thing: the sum total of your life experiences, everything that’s gotten you to where you are today — your journey, your struggles, your successes — are incredibly unique and valuable. And because of that, someone out there can learn from you.

Even if by some chance you and I had the exact same skill level and were giving talks on the exact same topic, there’s no way that it would impact the same people the same way. Your unique vision of the topic, how you express it, and your perspective that’s been built up all your life carries an inherent value that nobody else can recreate. End of story.

“I’m just a beginner.” This is the other thing I’ll hear a lot — this idea that “I’m just starting out and I’m not an expert”. But what you may not realize is that, in some ways, being a beginner is a huge advantage that you have. How can that be?

There’s this wonderful quote by Kim Scott, the author of Radical Candor. In it she says…

“The essence of making an idea clear requires a deep understanding not only of the idea but also of the person to whom one is explaining the idea.”

That makes a lot of sense, right? Now I could expound on this, but why do that when my esteemed colleague Christina Lee has already done that so eloquently.


Exactly! You were just in the person’s shoe’s, of course you’re in an excellent position to explain it to another beginner more clearly than an “expert”. Some of us are so far removed from being a beginner that sometimes we’re not good at teaching — we can glaze over important steps, make a lot of assumptions, and even use different language. But as a beginner, you are immune to all of that, and that in many ways makes you a perfect teacher.

All that to say, you have to get those negative thoughts out of your head. Forget this idea that you have nothing to say, that you’re “just” a beginner, or whatever other doubts you might have. I guarantee you every contributor has said this or something similar before they got started.

The thing that’s hard to see until you jump in is that this is one of the most open, accessible, and encouraging groups of people you could be a part of. Everybody is, in my experience, incredibly nice and willing to help other get started.

A quick story — a little while back I was thinking of doing my first talk. I had never even submitted a proposal much less give a talk, so I had no idea what I was doing. I saw that Android Summit was coming up, and it looked like a good place for me to get started and so I was interested in submitting a proposal.

But like I said, I hadn’t the slightest idea what i was doing. So I looked up who had previously spoken there, and I saw that Huyen Tue Dao had given a talk the previous year. Now at this point, you have to remember, Huyen and I aren’t friends. Hell, we had never even talked to each other before. But out of the blue I sent her a message and asked for her opinion.

It was incredible! She gave me so much encouragement and advice, I could barely believe it. I went in the conversation cold and anxious, and came out excited and enthusiastic. And remember, we didn’t even know each other at all! Here’s a tiny excerpt of what Huyen told me from that conversation:

“Yes, you should totally propose a talk. Do it. End of story. If you have any questions let me know. You gotta go for it. Would love to help. You’ll do great! Let me know!”

That is an amazingly warm, open, encouraging way to treat someone you don’t know! To that end, I think it’s a wonderful embodiment of what our community is like.

The other thing that’s tough to realize until you get going is what an immensely rewarding experience being a contributor can be. If you think about it, there aren’t many professional endeavors where you can…

  • Help others, teach, and pay forward all the things you’ve gained
  • Make new friends and contacts all across the world at many companies
  • Improve your own skills and your career prospects, at the same time

If nothing else, those are three pretty damn good reasons, don’t you think?

🙌 So you’re convinced, right?

I hope at this point you’re convinced that our community is immensely important and valuable, that you absolutely have an important voice, and that we need as many people as possible to contribute to keep things going in the right direction.

So your next logical question might be, “OK, what do I do now? How do I start?”

Well lucky for you I’ve thought of four ways you can contribute. Each one is a little bit different, and I picked them because I think they might appeal to a range of different personality types. I hope there’s a little bit for everyone here. I’ll go into each one broadly and give you a few tips on how to get started. (These four are, of course, not the only things you could be doing, just the ones I happened to pick.)

Let’s get started!

✍️ Contribution #1: Writing

Writing is really near and dear to me, and it’s one of the most important skills you can have. I think many of us have probably read a blog post at some point that had a big impact on us or helped something really click for the first time. And given that so much of our work is writing — chatting, pull requests, feature descriptions, etc. — you could argue that it’s a vastly under-appreciated skill.

Specifically, there are a few things that make them immensely useful to our community.

It’s information dense. The written form is capable of carrying an awesome amount of information — they’re often packed with diagrams, explanations, and code snippets. Pound for pound, nothing can really match a written post for learning, especially compared to something like video or audio.

It’s self-paced. People can absorb the information at their own pace, which is really, really important for learning. I don’t know about all of you, but I usually have to read things at least twice to make any sense of something, sometimes more. Others can probably blow through stuff very quickly the first time. But that’s why it’s great — no two people learn at the same pace, and writing is by far the easiest way to guide your own pace (again, compared to something like audio or video).

It’s an excellent reference (basically forever). Once you’ve created something, you’ll find that it serves as an excellent reference on that topic for many years to come, especially if it’s on a topic that doesn’t change that often.

There’s this great tweet by Kelly Shuster regarding an article that Amanda Hill wrote a while back on image scaling types, and she’s absolutely right. Being able to go back to that article, time and time again, is a huge win.


Our friend Chiu-Ki Chan has expressed a similar sentiment, saying how she often writes to serve as a reference to herself, which is tremendously helpful too.


So if writing sounds like something you might be into, a few things to keep in mind.

Writing tip #1: Practice editing (a lot) ✂️

When you first start writing, one of the hardest things to do is to write clearly. And one of the best ways to improve clarity is to edit.

I read so many things every day that could benefit by a good round of editing — an email, a blog post, a news article, and so much more. Now this isn’t a criticism of those writers, far from it. I think it’s just a reflection of how hard it is to consistently write clearly. Hell, I struggle with it plenty, too. It’s a learned skill and it takes a while to get good at it.

Editing is a big topic so I don’t want to get too deep into the nuts and bolts of it, but there are three “types” of editing that I think would serve you well when writing for the community.

Cut the fat. I think this is probably the one that most people think of as editing, and rightfully so. Condensing everything to the bare minimum, using as few words as possible, and still clearly expressing an idea is incredibly important.

But there are two other kinds of editing that I think people sometimes forget about.

Revise and reorganize. A lot of times a good round of editing isn’t just about cutting things out. At some point there’s going to be a diminishing return for paring down your words too much. Sometimes editing is just about moving stuff around — moving a paragraph, sentence, or even just a single a word— to improve its clarity. Don’t forget that!

Use simpler words. One of the easiest traps to fall into is using complex language. I do this all the time too, I think because it makes me feel really smart or witty. But the reality is that if you have a choice between a simple word or a complicated/fancy one, always pick the simpler one. It will almost always serve you better, be easier to understand, and therefore will be more valuable to the reader.

Bottom line: editing is absolutely crucial to writing well. Practice early and often!

Writing tip #2: Claps are not a measure of success, impact, or value 👏🚮

It seems like every site these days has some way of providing “positive” feedback. Twitter has hearts, Medium has claps, and on and on.

And sure, I’m not going to lie to you, it feels good to get a lot of those. If you write on Medium and you get a ton of claps, it feels like you did something great and important — like you really struck a chord with people.

But if we’re being honest with each other, they’re all bullshit metrics.

From my own personal experience, some of the best things I’ve written that I was most proud of got very few claps or attention. And some of the most outrageous, antagonizing shit that I wrote got an absolute ton of claps. Does that make the latter more successful or more valuable?

Of course not. You absolutely cannot measure the impact that your writing can have by some arbitrary metric like claps, which are designed for Medium to get readers and clicks, not to serve your writing.

I really want to drive this home because sometimes new writers will think “Well, nobody clapped for my writing, so I’m not helping anyone. There’s no point in continuing.” And while I understand why you might feel that way, I urge you to persevere.

It’s possible that your work will live on for years and years, and eventually find its way to helping someone. Plus, how do you really know that it hasn’t helped someone? As unfortunate as it is, we often don’t read something useful then go through the trouble of contacting the author and tell them how much we appreciate it. For all you know, your article has made a tremendous impact on someone, they just didn’t go through the trouble of going back and saying thanks.

And worst case, remember you’re not just helping others, you’re helping yourself! I guarantee you that while you were writing the post, you learned something useful. And on top of that, you’ve got a wonderful bit of writing for your portfolio.

Don’t get too hung up on these bullshit metrics. You’re creating something useful, giving back to our community, and building up your skills and portfolio at the same time. Forget the claps and focus on the writing.

Writing tip #3: Have a strong opinion 💪

Don’t be afraid to tell it how you see it. We talked earlier about how writing clearly is one of the hardest things to do, and this is another way to really improve that.

Having a strong opinion means you are inherently being clear. When you’re being direct, that’s clarity. When you’re being wishy washy or qualifying every statement with “You may not all agree, but I think…” then your writing and clarity suffer badly.

Now of course that doesn’t mean you’re not responsible for what you say — far from it. You are absolutely responsible for being respectful, accurate, and convincing. But while doing that, be confident, be convincing, and say what you mean.

And hey, if everyone doesn’t agree with you (which they certainly won’t), don’t fret. Discourse, discussion, and disagreement is a normal, healthy thing in a active community. If you’ve riled up a few people and got ’em thinking, you’ve done good.

🗣 Contribution #2: Speaking

If writing isn’t your thing, maybe you’d rather just say it from a stage?

Speaking definitely isn’t for everyone — it’s insanely nerve-racking and an absolute ton of work. We’ve all heard the statistic of how people fear public speaking over death, right? Sounds like a blast!

The good(?) news is that this doesn’t just affect new speakers. Even the most experienced speakers run into this. Hadi Hariri, Kotlin guru and developer advocate at Jetbrains, aptly said:


Pretty damn accurate! So given how terrifying and hard it is to do, why would anyone want to do this? Well, there’s one amazingly thing that speaking can do better that no other medium can do…

Speaking is the single best way to inspire and motivate.

If I think back on the things I’ve often been motivated or inspired by, they’ve been talks. Whether they were conference talks about technical topics or a a Ted talk about life, these speeches have always had the greatest impact on me. Writing and reading are awesome, but they simply don’t convey the same kind of energy and excitement as someone speaking on stage. This is why people go see live events!

Another reason you might be interested? Well, speaking is “fun”, in sort of a sadistic, strange away. There is an amazing burst of excitement and energy that you get as your talk gets close, and nothing gets your ass in gear faster than a speaking deadline. And when it’s all done and you walk off that stage, it feels really rewarding when you pull it off.

And lastly, speaking has the potential to open up new opportunities for you. Donn Felker has this great article that he wrote a while back about the first time he publicly spoke. He talks about how he blacked out and all the nerves, but the most important thing he said was this:

“That one day led to many job offers…to do bigger and better things…I decided to jump and go work for myself as a consultant. How? All from speaking.”

For me the opportunities weren’t so much professional as they were personal — the connections and friendships that I’ve made from speaking are the most important “opportunities” that I was able to unlock. I’ve met some truly incredible people and developed friendships that I would’ve never otherwise.

So, if that sounds like your cup of tea, what are some things to keep in mind?

Speaking tip #1: There’s no right or wrong way to start 👆👇👈👉😕

When you first start thinking about speaking, you’re going to have a lot of questions. Where do I do my first talk — brown bag, meetups, conference? How should I prepare? What topic should I discuss? How do you write a CFP?!

And while of course those answers do matter, the key isn’t to get those answers — the key is to START.

Start down the path you think is right. What you want to avoid is becoming completely paralyzed from being unsure and trying to do everything “right”. Try to start answering those questions yourself, and see what you come up with.

After you’ve gotten going, start soliciting for help. Ask people for their opinions and work them into what you’re doing. But at the same time, don’t take any advice as gospel. It’s important to remember that ultimately it’s going to come down to knowing yourself and doing what you’re most comfortable with.

As an example, I’m really weird. The first talk I ever did was at a conference. I prepare by writing my slides and practicing by myself — literally nobody ever sees my talk before I do it. I pick a topic I’m interested, and I write the CFP myself without any feedback.

That works for me. If you couldn’t tell, I’m fiercely independent and slightly neurotic, so I tend to do a lot of stuff myself. So far it’s worked out fine for me, but it’d probably be terrible advice to give to most everyone else.

So yes, take the input from others. But most of all understand yourself, what your preferences are, and get started.

Speaking tip #2: Be yourself on stage 🤪

Another thing that’s tough to do when you’re just starting off is figuring out your “style”.

If you’ve ever seen me on stage, I wave my hands around like a madman. My slides are brief and have a bunch of silly emoji on them. If you’ve ever seen Mark Allison speak, he opens with a magic trick almost every time. If you’ve ever seen Christina or Huyen speak, they do live coding. I wouldn’t dare attempt either of those as I’d probably kill someone.

It’s easy to think that just mimicking someone else’s style is the answer, but it most likely isn’t. You’ll ultimately need to find a way to do things that feel natural to you. And while it might take some work and introspection to figure that out, the biggest benefit is that it’s going to make preparing and presenting a lot easier. When you practice by doing what comes naturally to you, it makes the final show on stage a hell of a lot easier.

And remember, people are there to see you, so be yourself! Of course they’re interested in the topic, but they came into that room to see you talk about it, not someone else. Be proud, be confident!

Now all that said, there are some tactical things you’ll want to avoid. Chet Haase has this great talk called “Top Tips for Terrible Tech Talks” that’s worth a watch.


It’s satirical and funny, but at its core has some really good tips on some of the tactical things you’ll want to avoid in a talk. Highly recommended.

Speaking tip #3: Don’t forget, we’re rooting for you! 🤗

This may sound obvious, but it bears repeating especially when you’re anxious on stage: we want you to do well!

Literally nobody wants to go back to the office and say, “Wow, I saw Dan completely implode on stage. It was a disaster and it was awesome!” We want to go back and say how much we learned, how great the talk was, and how inspired we are to get cracking on something new. What you as a speaker want and what we as an audience want are exactly the same.

You’ve done the work, so relax. Execute. You’re ready. And really, what’s the worst that happens? You flub a couple lines? Nobody will notice. You fall of stage? Hell, you’ve got an amazing story to tell.

And remember, when it’s over, it’s over. It’s a success no matter what because you accomplished something that most people can’t. Be proud of that and don’t look back or nitpick your work. You did it!

🧙‍ Contribution #3: Mentoring

This type of contribution is for folks who aren’t really into putting themselves out there in a public space that reading and writing demand. But that doesn’t make it any less important and valuable, not by a long shot.

So many people need mentoring, but I think it can be easy to forget how hard is to be a beginner who is just getting started. When you’re just starting out (if you can remember) you crave direction and guidance, and it can be hard to find that.

What’s wonderful about mentoring is that you can provide exactly what people are looking for. Even better, the work you put in doesn’t just have a positive effect for a few months — you’re setting someone up for long-term success. You’re establishing the foundation of how they’ll do their work for years to come, and that has a compounding effect for all the people they’ll eventually work with and mentor themselves.

And I have to say, there is nothing like seeing someone grow right in front of you, sometimes far beyond you. It’s by far one of the most rewarding things you can be a part of.

So if that sounds like something you’d want to do, here are some things to keep in mind.

Mentoring tip #1: 100% expertise is not required 📚

It probably goes without saying, but you can’t possibly know everything. But sometimes I think people avoid becoming mentors because they feel like they don’t know “enough”, when in reality they probably know plenty.

What’s more important than having all the answers is to be able to show your approach — to share how you think about things and work a problem. That’s almost as important as any answer you can give.

In fact, showing that you don’t have all the answers and make mistakes is a wonderful thing too. When beginners see more experienced folks struggle, it’s a welcome reminder that we’re all just figuring this out as we go.

Mentoring tip #2: Advertise yourself 📢

Another thing that’s easy to forget is that as a beginner, it’s hard to ask for help. So let’s flip it.

As someone with experience and knowledge to share, put yourself out there — whether that be publicly, at work, or just on a small team. This doesn’t have to be formal or some big announcement, but it should be specific. If you’re talking to someone and want to offer help, say so. Tell them you are willing to help out or mentor, directly. that’ll make it a lot easier for someone just starting off to approach you when they need help.

There’s this great tweet from Stephanie Hurlburt from a while back that really nails it:


And what’s been great is that within our Android community, we’ve had people offering this exact kind of help publicly:

https://twitter.com/crafty/status/951816925956407296 https://twitter.com/danlew42/status/882931899982684160

It’s just wonderful seeing people in our community do this. And by the way, if you haven’t taken up Nick or Dan on their offers, you should!

And remember, there are a lot of different ways to help. No mentor/mentee combo is the same. You can offer to informally review someone’s work, go through code or a pull request, or even just sit down and shoot the shit. It depends on your dynamic and what the person is looking for.

Being a beginner is hard, so let’s make it easier on them and help build our community from the ground up.

Mentoring tip #3: Provide guidance, avoid answers 👩‍🏫

Said another way, be a teacher, not an encyclopedia. Anyone can look up an answer on Stack Overflow and implement it, but it’s much harder to understand the thinking behind a solution. And really that’s what matters.

Your goal should be to guide them toward an answer, rather than give them the answer. Giving the person an opportunity to think and problem solve is ultimately going to make them a better developer in the long run.

One of the most common, convenient ways to do this is in a pull request. Instead of offering specific code solutions, consider just asking questions. Instead of pasting in a code snippet, ask “Have you considered trying this approach” and offer up a pseudo code alternative.

Sure, there are going to be times when a specific answer is going to be exactly what the person needs, but more times than not, the path toward an answer will serve them best in the long run.

👩‍💻 Contribution #4: Open source

OK, this is the big one, the one we all rely on. Perhaps it goes without saying, but this is an excellent, excellent way to give back — you could argue it’s the most important. I probably don’t need to tell you why it’s so important, but I’m going to anyway. 🙉

First, you can make a huge impact. Obviously if you make a library that a bunch of developers use, your work will directly be impacting thousands and thousands of customers. Your impact will enormous, which you have to admit is pretty damn cool.

Secondly, and I think somewhat overlooked, is that working on open source is a powerful way to learn. At work you usually end up working on the same closed source app, with the same people, and the same patterns. This isn’t a bad thing of course — that kind of continuity and stability is wonderful.

But when you work in open source, you can learn a bunch of new ways of doing things. You learn how other people and teams operate. You learn other ways of approaching problems. You consider different factors when you’re not writing closed source. The list goes on and on. By doing something out of the norm from your “regular” work, your opportunity to learn grows tremendously.

Finally, working on open source is an instant resume builder. At Basecamp when we hire programmers, the first thing we do is ask for code to look at, because that’s the thing that matters the most (at least to start with). The problem is when you’re looking for a new job, a lot of times your old company is not exactly going to be offering for you to take their closed source code with you to show off.

The great thing about open source is that you have a portfolio ready to go. At any moment you can point to the work that you’ve done in open source and any prospective employers can immediately see the breadth and depth of your contributions. That makes you immediately more marketable.

Sounds good right? Here are a few tips to get started.

Open source tip #1: Every little bit helps 🦐

As you get started in open source, remember that your contributions don’t have to be huge. You don’t have to work on some major overhaul of a project in order to make your mark.

There are a bunch of little things you can do: fix a small issue in the issues list, update the README or fix up some documentation, or even just log a well-documented bug. These may not sound like important contributions, but they’re very helpful to maintainers. Everybody wins when you tackle some of the small stuff.

As you get more comfortable, you’ll find yourself naturally working into bigger issues and bigger sections of the code. Just give it time — starting small is great.

Open source tip #2: Discussion is good, code is great 💻

A lot of times on Github you’ll see really long discussions on how to implement something, and that’s a good thing. Discussion and discourse is usually a solid path toward well-designed solutions.

But sometimes discussions stagnate, start to get nitpicky, or just completely derail. There’s no exact formula to recognizing it, but you know it when you see it. And it’s times like that where code is great.

Code cuts through all of the noise. It’s a real implementation that can be discussed in concrete terms, not abstract ideas or theoreticals. You can bake off different approaches and determine the pros and cons of each. You can see everything in front of you instead of trying to piece together half-formed ideas from multiple people in your head.

If you’re ever in doubt on what to do on an open source project, just write code. Maintainers love pull requests and real implementations.

Open source tip #3: Be friendly and respectful 🤗

When a bunch of people are working on an open source project, you have to remember that it’s likely that these folks are spread across many continents, speaking many different languages, with backgrounds from many different cultures.

Personalities plus a thousand other variables makes interactions unique and probably a lot different than you’re used to. Miscommunications can happen. A lot of times people are working on open source on their own time. And even for those doing it professionally, it’s not an easy task to wrangle all those people and personalities.

So remember, generally speaking people aren’t trying to be dismissive or rude. More likely they’re just trying to be direct and cut to the chase. And hey, if you’re not sure and something makes you feel gross, you can always choose to take the (much harder to travel) high road and keep things positive.

Jessie Frazelle had this great tweet from a while back that summarizes it perfectly:


So that’s it — four areas that you can contribute to. I hope there’s something there that appeals to you. But if not, there are dozens of other ways to be an active member of our community. Find your niche! If you haven’t been super active before, I’d really encourage you to think about how much our community has meant to you and how much you can help others.

🎬 One year ago

The last thing I want to leave you with is this: one year ago, I hadn’t given a single talk, not one. And just a couple weeks ago I was standing on stage giving the opening keynote at Droidcon NYC.

Now I’m not saying that to make it sound like I’m hot shit or that I accomplished some amazing feat.

No, I say that to give you perspective. If you start today, who knows where you’ll be three months, six months, or a year from now. You could be the most eloquent writer, a prolific open source contributor, or a world renowned speaker. The key is that you just have to start now.

I can’t wait to see what you all come up.

Note: This was a transcription of my opening keynote from Droidcon NYC 2018 that I did from memory, so it’s not an exact 1:1 from the talk. If you want to see the actual talk, I’ll link up the video when it’s up. Here are the slides from the talk if you’re interested. Thanks!

Reflecting on five years at Basecamp

Back when I was a kid, they called this place 37signals. 👴👋👽

This week I celebrated my fifth year around the sun at Basecamp. For a lot of people that’s probably not a big deal, but for me it kind of is — it’s by far the longest I’ve ever been at any one job (my previous record was ~3 years).

That got me wondering — what’s so different this time around that made it stick? I eventually realized it basically came down to this:

I’m happy at Basecamp because every day I’m in a position to ship the best work that I can.

I admit that’s a rather generic statement, and pretty much every company in the world tries (or claims) to do the same. So what does Basecamp do that works so well for me?

Now before we get into the specifics, let me just say that this post isn’t meant to be a humble brag of how amazing Basecamp is. It’s simply an examination of how one company among many thousands operates, and why that meshes so well with someone like me.

So, as I was saying — what’s so special about Basecamp that it suits me so well? Well, it’s a bunch of things that all interleave together…

🚢 Shipping meaningful work is what matters

I’ve been at companies where I did a lot of “work”, but it often felt like I was just shuffling widgets around. I’d go to meetings, send emails, and make some stuff, but in the end, it’d be hard to tell if my work meant anything to the final product.

Other times we’d have so many pointless “stakeholder perspectives” that by the time we shipped, the final product was so watered down that it didn’t matter to anyone.

And yet other times, after months or years, some things would just never ship at all.

Basecamp is the exact opposite. As a small company working in small teams, we don’t have the luxury of spending any time on stuff that isn’t essential to shipping. And because we have to be choosy about what we work on, it’s usually the case that what we ship will be meaningful to our customers.

So we discuss ideas thoroughly, but don’t paralyze ourselves with analysis. We don’t pretend to know everything or try to predict the future, we ship and see what happens. We don’t have soul-sucking multi-hour meetings, we focus on the real work of designing, programming, and supporting our customers.

In the end, shipping meaningful work is what matters most to me, and that’s what keeps me motivated day in and day out.

😌 Calm is critically important

While shipping meaningful work is a great goal and motivator, even the best employees in the world can’t do their best work if they’re stressed, tired, rushed, or distracted. The folks at Basecamp know this, and that’s why calm and focus are cornerstones of everything we do.

One of the main ways we maintain calm is by not wasting time and energy on unnecessary bullshit and distractions. This is incredibly important to me — when I’ve got plenty of focused time to get my work done, I don’t rush. And when I don’t rush, I don’t feel stressed.

And while that may sound obvious and easy to avoid, I’ve worked at enough companies to know that wasting time is extraordinarily common. Opportunities to waste time present themselves in a lot of different ways, so here are just a few things we do to combat them:

  • We have very few (if any) meetings during a normal week. If there are any, they have the fewest people possible involved, usually a max of 2–3 folks. And we definitely don’t have recurring meetings.
  • We don’t commute. We all work remotely. Why spend 30–60 minutes traveling to some random building in a busy area to work when we can do the same work at home? This easily saves me 10 hours a week.
  • We don’t chat all day. There’s zero expectation of keeping on top of every chat or responding to an IM immediately. In fact, if anything we’re encouraged to close everything communications-related (including Basecamp!) so that we can focus on the actual work on hand. I regularly do this for hours on end, every day.
  • We don’t all work 9 to 5. We work hours that fit our life and brains. If, for example, you’re sharpest at 6 am, why the hell would you wait until “normal business hours” to start working? That’s a waste of your best brainpower! As long as we overlap a few hours with our team, we work when it makes sense, not by some arbitrary clock time.

Another major component of maintaining calm is to be very, very serious about not overworking and recognizing life’s priorities. In other words, when the work day is over, it’s over. And if something happens that’s clearly more important than work, we go take care of that . We work to serve our lives, not the other way around.

That means I don’t work some bullshit 60 hour work week.

That means that I don’t get notifications from the Basecamp app after 5 pm.

That means I don’t have meetings early in the morning or late in the evening that interrupts time with my family.

That means if I’m sick, I actually take the day off to get better, not partially stumble through the day trying to work.

That means if something comes up at home that’s way more important than work, I go take care of it and my co-worker’s don’t even blink at it.

That means I get a good night’s sleep because I’m enthusiastic about the next day’s work, not dreading it.

“Work-life balance” is an overused, rarely accurate term, but I think we’re doing it pretty damn well.

🙏 Autonomy and trust

A big part of Basecamp’s culture is the autonomy that we’re afforded. There are no managers, no daily stand-ups, and no playbook on how to do our daily work. It’s up to us to figure things out and own the calls we make.

For me that means I get to make a lot of decisions that have a direct impact on the outcome of my work — I choose what I want to work on, I make the final call on how any particular batch of code is shipped, and I’m ultimately responsible for how it performs.

Maybe this all doesn’t sound like a big deal, but it means a lot to me.

To me having freedom and autonomy is a vote of confidence. When the people around me give me plenty of space to do my thing, it isn’t negligence or disinterest — it’s trust. It means an awful lot to me that people I genuinely respect have such trust and confidence in me. Maybe that makes me weird or lacking self-confidence or sappy, but it’s true.

Whatever the reason, it’s been an important, formative element of my five years at Basecamp.

🎩 It starts at the top

Perhaps the biggest thing I’ve learned in my nearly 20 year career is that for me to have any kind of longevity at a company, it’s critically important to believe in the people at the top. I’ve worked for all sorts of companies before Basecamp, and I’ve never exactly felt super connected to those folks running the show.

Why is this important? Because at the end of the day, there are going to be a handful of people in a company that make the big decisions. And those big decisions in some way, big or small, have a direct impact on me and my work. These people are the ones deciding what’s important at the company, what isn’t, and what my work life is going to be like as long as I’m there.

And so the question becomes, do I believe in those folks? Am I more or less aligned with their principals — their professional beliefs, ethics, values, strategies, and overall ideals? Or do I have fundamental disagreements with a lot of what they believe in.

For me, Basecamp is the first place where I really do believe and trust in our leaders, Jason and David. Most everything they’ve done to build, grow, and sustain Basecamp agrees with me. And that makes it a hell of a lot easier to stick around and stay motivated than it would be working at a company where I’m constantly wondering “WTF are these clowns thinking?”

Now does that mean I agree with everything Jason and David do or say? No, of course not, I’m not some mindless drone. But generally speaking I do believe in the direction they provide and the choices they make. And perhaps more importantly, even if I do disagree, I respect their position, the thought they put into making a call, and the honesty and decency they treat everyone with.

👩‍👩‍👦‍👦 It takes a village

I’d be remiss if I didn’t mention the people I work with at Basecamp — what a crew! I truly, genuinely would not be where I am today in my career without them.

Sorry, it’s a tired trope but I have to say it — I work with really wonderful people. They’re so open-minded, friendly, welcoming, and damn smart. We’ve worked on so many great things together and I’ve learned so much from them. It’s an easy choice to stick around when you’re around folks like this. And beyond all that, they’re just great human beings.

Thank you Adam, Andrea, Ann, Ashley, Blake, Chase, Chris, Colin, Conor, David, Dylan, Elizabeth, Eron, Flora, George, Jabari, James, Jamie, Janice, Jason, JZ, Javan, Jay, Jayne, Jeff, Jeremy, Jim, Joan, John, Jonas, Justin, Kristin, Lexi, Matt, Matthew, Merissa, Michael, Nathan, Noah, Pratik, Rosa, Ryan, Sam, Scott, Shanae, Shaun, Sylvia, Tara, Taylor, Tom, Tony, Wailin, Zach, and all our beloved alums for making this a fantastic five years!

Thanks for reading — if you enjoyed it, please do mash the 👏 button so we can show Medium that they really nailed that 50 clap idea! 😏

Hate your job? Happier times are within your grasp

As is common this time of year, I took some time to reflect on life and work. And a few different things reminded me of how incredibly fortunate and happy I am to be working at Basecamp.

But I bet you can guess the punchline — yeah, it wasn’t always like this. The year before I landed at Basecamp, things were pretty rough and I was miserable at work.

I know this feeling isn’t unique. In fact you might be feeling today how I did years ago — coming home from work tired, uninspired, unhappy, and even angry. It’s not a good look.

But change is within your grasp. It won’t be easy, but you can be damn sure it’ll be worth it. I speak from personal experience.

When I eventually reached my job-hate breaking point, the first order of business was to quit said job. I have to admit it was kind of exciting and liberating. But it was also intensely scary.

I was walking away from a good job working at a stable, respected company — a company where I could’ve had a prosperous (albeit miserable) career. I voluntarily went from having a very generous salary to one of literally $0.

Oh and by the way, as I took on this adventure of rebuilding my career I still had some huge responsibilities back at home: namely my twin infant sons and all the adulting required to keep them happy and healthy.

So you can imagine the unsettling feeling of self doubt I felt early on. More than once I wondered, “Did I make a huge mistake??”

But ultimately I realized what scared me the most was the long-term prospects of doing nothing — not just being unhappy for one year, but allowing that misery to fester over three, five or even ten years.

We spend an inordinate amount of our life at work — somewhere between 20–30% of our waking hours. How could I standby and let all those hours be filled with misery, only to bring that misery home with me every day to my family? No, if I was going to spend that much of my life doing something, those hours better be happy ones.

So I pushed aside that doubt, put my head down and got to work. I joined The Starter League and got my brain and attitude in the right space. I was learning tons and meeting great people. I felt professionally energized and excited for the first time in a long time.

I finished up my classes there and soon after I mustered up all my courage and took a long shot: I reached out to Jason Fried to ask if there was anything I could help with. We got to talking, and a few months later he invited me to join 37signals.

What an unbelievable turn of events. Going from the the worst job I’d ever had to working at my dream company wasn’t anything I’d ever expected. Fast forward 4+ years and I’m doing the best work of my career and I’ve never been happier at a job.

Now look, I’m not recounting this story as some kind of humble brag or to make myself look like hot shit. Anybody who knows me I am the furthest thing from hot shit. I’m ice cold shit.

I bring it up because I hope it shows the kinds of crazy, unexpected, wonderful things that can happen to anyone’s career if you take a chance.

I’m not special — all I did was acknowledge my unhappiness, embrace the uneasiness of change, and got to work. Yes, there was some luck involved, but even if I landed somewhere other than Basecamp, I still would’ve been happier and better off for having tried.

Of course it’s really important to remember that everyone’s situation is different, so don’t take my story as gospel.

I was fortunate to be in a position to take a chance like I did. I had years of work experience to help me recognize when to get out of an ugly situation. We were financially secure — it was a moderate risk, but I never put ourselves in any kind of precarious lose-it-all situation. And most importantly I had wonderful, incredibly supportive people around me — family, friends, teachers, colleagues, and so many others. I recognize not everyone gets the deck stacked in their favor like this.

It’s also worth noting that life wasn’t all roses and sunshine afterwards either. It took a long while to get everything back up to speed — to rebuild our finances, to re-establish my career direction, and even smooth out our family life and routine.

But in the end was it worth it? Absolutely, positively, hell yes.

If you hate your job, I’d really encourage you to consider taking action. But first you’ll need to evaluate your career situation, then decide what’s best for you and your family, now and in the future. It’s natural (and healthy) to feel scared, worried, and hesitant. Take your time, consider deeply, and take action when it’s right for you.

But no matter what your situation is, if you’re in a rough patch in your career I hope that my story gives you a spark of hope, something you can hang onto — the belief that better times await you when you’re ready.

There’s something great out there for you and your career. You absolutely deserve the happiness it can bring — go on and get it. 🤜🤛

If you enjoyed this post, please do hit the 👏 button. Thanks!

It’s time for recurring meetings to end

Why are we still doing this to each other?

It’s thankfully been a really long time since I’ve been invited to a recurring meeting. But I heard a couple mentions of them last week, and it brought back terrible pre-Basecamp memories.

It reminded me that not everyone is so lucky — many people still have to attend those soul-sucking, brain-draining, pointless recurring meetings. You know the ones — they’re usually filed under euphemisms like “stand-ups”, “status”, and “check ins” and happen on a daily or weekly basis.

They’re terrible. Let’s discuss why and see if we can help each other get rid of them.

They force people to meet even when there’s nothing to discuss

Ever gone to a recurring meeting only to find a bunch of blank expressions and everyone just kinda looking at each other? Welcome to the recurring meeting.

For some reason the default corporate mindset is that there will always be something to discuss, so having a regularly scheduled meeting is good because it “gives folks a chance to catch up.”

But if you really think about it, is there always something to discuss? Aren’t there just some days or weeks where things have gone smoothly or people are just doing their work and there’s nothing to chat about?

How often are these recurring meetings actually needed? 10% of the time? 50%? I have no idea, I can’t see into the future — so why do meeting organizers think they can?

A common retort you’ll hear from organizers is that you should keep recurring meetings around because “you can always cancel them”. And sure, in a perfect world, that helps a little — it gives me back some of my day. But this also assumes that every meeting organizer is super vigilant in managing their meetings. And let’s be honest, they’re not.

Beyond that, canceling an instance of a recurring meeting doesn’t fix all the other problems they cause in aggregate. Keep reading.

They create a vicious cycle of meetings and overwork

Here’s what meeting organizers do: they look at everyone’s calendar and try to find the best time for everyone.

But because there are so many recurring meetings, blocks of time are hard to come by. So organizers start scheduling new meetings at inconvenient times because those are the only times available: early in the morning, late in the evening, over lunch. All times you should be relaxing, not working.

If a majority of recurring meetings were simply off the books and scheduled as needed, everyone would have more available time and fewer meetings overall. Imagine the possibilities!

This also shows why “just canceling” a recurrence doesn’t fix everything — a recurrence is already eating a block of time that other organizers can’t schedule against, so it has a cascading effect of breeding meetings at even worse times.

They hurt your team’s work and workflow

If you know you have a meeting in an hour, do you start your deepest, most complex problem solving work? I’d venture to guess most people don’t. I certainly don’t.

It makes sense — if you know you’re about to be interrupted in an hour, why start the really deep-thinking work you need to do. You’re probably more likely to tackle a few small, easy things. It’s a subtle effect, but imagine that happening multiple times a week. How much good, deep-thinking work is lost because of looming meetings?

If those recurring meetings weren’t there, people might choose an entirely different set of work. They’d have longer stretches of uninterrupted time, which are crucial for deep thinking and problem solving — things designers and programmers need every day to do their best work.

Oh and to address the magic bullet of “just cancel the meeting” again — getting a cancellation 30 minutes before the meeting gives me the meeting time back, but it’s already screwed at least a couple hours of my day’s work.

They become a dumping ground

The recurring meeting is the dumping ground of everything you don’t want to deal with now (probably because you’re stuck in another meeting).

How often have you seen this happen — you start talking with someone, can’t make a call, and then they say “let’s talk about it at the status meeting”?

Recurring meetings are a crutch — they let you defer decisions you probably should (and could easily) just make now. Remember, decisions are temporary!

“If circumstances change, your decisions can change. Decisions are temporary.”
Jason Fried, Rework

This is yet another reason why “just cancel it” may sound good on paper, but doesn’t work in practice. People tend to find ways to fill scheduled meeting times.

They drown out the important stuff

Recurring meetings can cause serious calendar overload for many people — they can be double or even triple booked at times. There’s considerable mental overhead to look at a busy calendar and try to decipher what’s important and what’s not. Ever missed an important meeting because you got things crossed up on your excessively noisy calendar?

And from a human perspective, meetings also make people think twice about scheduling important personal appointments. Yes, of course most of the time it’s OK to miss a recurring meeting. But have you ever thought twice about scheduling a personal appointment because there’s a meeting on your calendar? Of course you have, and so have I. It may be a small thing, but even the most unimportant meeting might make someone think “I should really go to this” instead of taking care of something far more important to them.

“Yes, awesome, another recurring meeting!”

I’m half joking, but honestly, have you ever heard anyone say this? Or is it more often a deep sigh followed by “Ugh, another meeting”.

Or how about this — remember the last time one of your meetings got canceled and how overjoyed you were that you didn’t have to go?

Doesn’t that tell you something?

Alright, so we’ve established I’m not a fan of recurring meetings. Maybe I’ve convinced you they’re terrible, or maybe I haven’t.

Either way, would you perhaps, pretty please consider trying a few things either as a meeting organizer or attendee? You might be pleasantly surprised by the results.

Organizers: Try reversing your default mindset

If you’re a meeting organizer, try this for one project—reverse your thinking and assume you don’t need one of the recurring meetings you usually schedule. Instead see how things go without it, and if a discussion needs to happen, schedule a standalone meeting with the fewest people necessary to make the call.

Things might be a little uncomfortable or harder at first, but in the end I bet everything will be fine (and your team a lot happier for it).

Attendees: Ask the meeting organizer if you can skip

This might be tough because a lot of times meeting organizers are in positions of power (managers, directors, your boss, etc.) But if you’re one of the people getting killed by recurring meetings, try asking the organizer if you can skip them unless there is something specific you’re needed for. Most of the time any reasonable person will be OK with that.

This still makes you a willing participant and available, but by default you get to do your real work unless they specifically call on you to attend.

Attendees (Bonus Points): Thank the never-calls-a-recurring-meeting organizer

They’re a rare breed, but if you ever notice someone who breaks from the mold and rarely calls a recurring meeting, thank them. No, seriously. They might chuckle, but they’ll appreciate that you noticed and it’ll validate how they run things. It will give them the confidence to keep doing things their way — recurring meeting free!

So hey, it’s nearly 2018 and it’s a great time to turn a new leaf. What do you say — can we cancel any and all recurring meetings and start the year fresh?

If you enjoyed this post, please do hit the 👏 button below. Thanks!

Do you have a story of a meeting gone terribly awry? Or a time when you put your foot down on recurring meetings? We’re collecting your funniest, most memorable, and most cringeworthy meeting stories for an upcoming episode of our podcast, Rework. (If you found a way to make meetings less terrible at your business, we want to hear about that too!) Drop us a line at hello@rework.fm or leave us a voicemail at (708) 628–7850. We look forward to hearing from you!

A Kotlin long-term update: calm, peaceful, and productive

It’s kind of hard to believe, but we’ve been writing Kotlin at Basecamp for 20 months now! And with the first ever KotlinConf starting tomorrow, it felt like a good time to reflect on my time with Kotlin.

When I first started off with Kotlin, I was a bit…excitable. I was blown away by all the incredible things it could do. Compared to Java, it made my life so much easier and I was just much happier working with it. I was so excited to be learning this shiny new tech that I would tell anyone that would listen about all its wonders.

Now, almost two years in, things are different — in a good way.

The big thing is that I’m (mostly) past the initial “holy shit this is awesome” moments of discovery when you first come over from Java — finding out about all those crazy things you can’t do in Java, all the fantastic niceties that become your favorites, and all the little things that save you tons of time. Of course I’m still learning new stuff regularly, but for the most part I’m not running into any huge surprises day to day.

And so from that perspective Kotlin has become, well…uneventful. Wonderfully, lovably uneventful!

At its best Kotlin is extraordinarily reliable, unfussy, and pragmatic.

And while those words might not generate feelings of uncontainable excitement like I experienced at first, they paint an important picture of how awesome Kotlin is, deep down. They’re the things that really matter in a calm (and consequently a productive) work environment.

It’s awesome that the language is rock solid stable after upgrades. It’s awesome that every feature has been thoughtfully considered and prioritized against practical, real-world uses. It’s awesome that JetBrains dedicated 5+ years to get to a incredibly stable 1.0.

And it’s awesome that once you get the hang of it, Kotlin simply gets out of your way so you can get shit done, fast.

At this point in my Kotlin journey, my daily workflow is calm, peaceful, and productive because it’s uneventful. I may not be shout-from-the-rooftops excited about every little Kotlin feature anymore, but that’s OK. What really matters most to me is that Kotlin is a rock solid, stable foundation for my work now and in the future. And that’s worth a lot when shipping good work is the one true reliable measure of success.

Past and present aside, the future is bright too. The language is progressing at a fast clip (coroutines!), and the tooling around it is getting better every day. And perhaps most importantly, community involvement — blog posts, conference talks, Stack Overflow answers, and libraries — continues to expand rapidly too. These are exciting times!

I’ve had so much fun over the past couple of years building Android apps, and Kotlin’s been a big part of that. The progression from initial excitement to calm productivity to looking ahead at its bright future has been an absolute blast. I cannot wait to see what’s in store for us at KotlinConf and beyond!

If you enjoyed this post, please do hit the 👏 button below. Thanks!

We’re hard at work making the Basecamp 3 Android app better every day (in Kotlin, of course). Check it out!

Programming languages aren’t a zero sum game

Stop me if you’ve heard these before when people get to talking about programming languages…

“These features are copied this from <superior language>.”

“Nothing new here. <superior language> has done this for years.”

“This language has nothing on <superior language>, but nobody realizes it.”

<superior language> does the same thing, but better.”

I bring it up because I’ve been reading and writing a lot about Kotlin lately. And invariably someone posts a snarky comment like one those above, carrying with it a clear innuendo: my preferred programming language is better than yours.

And every time I see those I leave with the same reaction. Who gives a shit?

Now I’m not talking about people who are having constructive conversations or even just poking fun. Hell, I may have been known to take a jab at Java every once in a while. 👊

I’m talking about a subset of programmers who treat languages like it’s a zero sum game — that for one language to succeed, another (or all others) must fail. It’s like they’re on some strange crusade to prove how they were first and best at everything.

But why does it matter if a language takes the best ideas from another language and implements them? Why does it matter if another language had some feature for years and your favorite just got it? What the hell does “better” even mean when everyone has different preferences and styles?

To me programming languages are simply about doing good work, building success, and if you’re lucky, finding happiness. Many people have achieved those with Ruby, Swift, Javascript, Java, C#, Python, Go, and dozens of other languages.

I’ve been lucky enough to find that with Kotlin. It makes my work genuinely enjoyable. I find it fun and exciting to work with, and that makes me happy. But I’m no programming linguist — for all I know, every other programming language is technically “superior” to Kotlin.

But who cares? There can be many different languages that make many different people happy in many different ways. If I’m happy and having fun with a language, why do others feel the need to shit on it? Are we so insecure and unhappy that we need to tear down another language to make our favorite look better? It’s a negative, petty stance to take that has a disheartening effect on others.

Just because a language doesn’t do something brand new conceptually doesn’t mean it shouldn’t exist. If a language takes ideas and inspiration from another language, that’s a wonderful compliment to the earlier architects. And if your favorite language is “better” than mine, believe it or not, I’m super happy for you — it’s awesome that you’ve found something great!

Programming can be hard. Finding joy in work can be hard. If people can achieve success and find joy in any programming language, that’s a wonderful thing. Why not celebrate every language that can help people achieve great things (especially their own happiness!) instead of making everything a showdown?

If you really believe in your favorite programming language, focus on its merits, not the demerits of others. Avoid the temptation to make snarky comments or tear down another language. Instead, keep it positive. Spread the word on why your language is awesome. Compare and contrast fairly. Have strong opinions and challenge each other respectfully.

Trust me, there’s plenty of room for all our favorite programming languages — even Java. 😜

If this article was helpful to you, please do hit the 💚 button below. Thanks!

We’re hard at work making the Basecamp 3 Android app better every day (in Kotlin, of course). Please check it out!

Your struggles can inspire others

Think back to the the last time you struggled mightily with a programming problem. Did you share it with the world?

If you didn’t, that’s totally OK — most of us don’t! Why would we? Nobody enjoys admitting defeat, much less wanting to make a big deal out of it.

But kudos to you if you did share your struggles, because I bet you made a pretty big positive impact on someone. It very well may have inspired them.

I’m speaking from experience. Someone I respect recently did exactly this for me out of the blue. We were chatting a bit when they mentioned how they were struggling with some parts of Kotlin, just as I was.

What an astonishing revelation! I was surprised (and impressed) by this honesty. How could it be that this person, a great programmer whom I admire and has done amazing work, be struggling just like me?!

It’s strange — logically I know that of course everyone struggles and has rough patches. But in an era of highly polished tweets, blog posts, and conference talks, it’d be forgivable to think that programmers out there never struggle with their work.

But of course they do. Which is why when someone you respect shares their real-world struggles with you, it reinforces and crystalizes an important point: there’s no magic to anything we do.

These vulnerable moments are a reminder that all of us are just programmers trying to do our best. That we all succeed basically the same way — by working hard, struggling, learning, and keeping at it with determination.

It also made me realize that while we often share our successes and expertise with the community, it’s much rarer that we humble ourselves and reveal our weaknesses. Don’t get me wrong — it’s amazing to be surrounded with smart people that are gracious enough to share their knowledge with us. A knowledgeable community is incredibly powerful.

But it’s also incredibly powerful and inspirational to share your struggles. Doing so isn’t a sign of impostor syndrome — no, it’s a sign confidence, generosity, and honesty. I’ve been fortunate enough to be on the receiving end of such honesty more than once, and it always inspires me to keep at it and have confidence in myself.

So remember, we all struggle. If you’ve hit a rough patch today, don’t fret. There’s a good chance just about everyone else has too. Hopefully they’ll tell you about it soon.✊

If this article was helpful to you, please do hit the 💚 button below. Thanks!

We’re hard at work making the Basecamp 3 Android app better every day. Please check it out!