Humanist, vegan, minimalist, programmer, collector of labels.
32,994 words
https://lanesawyer.dev @LaneSawyer

Creating a Definition of Done

During my first year as a developer I screwed up a lot.

Unintended changes made their way into my files seemingly at random. My commits broke existing unit tests. Sometimes I missed entire requirements because I didn’t read the story thoroughly.

In short, I wasn’t deliberate with my work because I did not have a definable, repeatable process. My lack of process cost my team time and money when they helped me fix things that I should have done correctly in the first place.

What my well-intentioned but directionless self needed was a consistent template to follow. One that clearly laid out everything I needed to successfully finish a story. On my next project, I discovered what my first team had been missing: a “Definition of Done”.

The Definition of Done is a concept created for the Scrum methodology, but it is useful to all development teams regardless of your project management framework. It provides a written set of events that must occur before a unit of work can be finished. Adopting a Definition of Done standardizes your team’s approach to completing work and ensures that all stories go through the same process, regardless of the people involved.

This standardization reduces mistakes and leads to a better product. Common issues like not having code reviews or unit tests go away because your work by definition cannot be completed without them.

However, enforcing the Definition of Done does need buy-in from everyone on the team. Just like team working agreements, you must create yours as a team and agree to follow it for every story. Without enforcement, a Definition of Done is as useful as not having one.

A note for developers: while the Definition of Done is often focused on development, it includes processes for everyone on your team. This is more than just a developer checklist. It’s an agreement among your team to create a process that delivers high quality solutions for whatever problem you’re tackling.

What goes in a Definition of Done?

Every team’s Definition of Done will be different, but most will include many of the following items:

  • All styling is implemented in the proper location
  • Views are clean and concise, with no complex logic
  • Code styling conventions are followed
  • Static code analysis produces no errors
  • Proper patterns are followed in the implementation (MVC, MVVM, MVP, VIPER, etc.)
  • Code is delivered to source control with the appropriate comments and tags
  • Development is complete, meaning all tasks are developed and tested
  • Browser and form factor testing have been completed
  • Unit tests are written and passing
  • Localization has been implemented
  • Code is commented appropriately
  • Logging is in place
  • Any required documentation has been recorded
  • Code has been reviewed by another developer
  • All QA test scenarios pass
  • Any bugs found that will be fixed later have been documented
  • Automated testing has been created and passes
  • Feature has been demoed to and accepted by the Product Owner

This list is not exhaustive, but the concepts have served me well across many different teams and technology stacks.

If your team doesn’t have a Definition of Done, make one! The standardization it provides will help you deliver high quality work while saving time and money. Use my list to get started and tweak it with your team to fit your style of work. Your future self will thank you.

This is the second of nine articles delving into the processes that every effective development team needs. Stay tuned for more!

One Simple Thing: Stop Using the Snooze Button

It happens every morning. You have the best intentions of waking up with your alarm, but forty minutes later you’re still slipping in and out of consciousness.

The snooze button is mankind’s worst invention.

But there is a simple way to always wake up when you planned: Get out of bed!

You can’t fall asleep if you’re on your feet. So instead of reaching for your phone or for a book each morning, roll out of bed and shamble out of your bedroom. Do anything but stay in bed. Make breakfast, brew coffee, do pushups, sit down at your desk and write, or even just stand there!

The easiest way to make sure you get up every morning is to put all your alarms in another room. Make them loud, constant, and annoying. The only way to shut them off is to get out of bed, and once you’re up it’s much easier to stay up.

Waking up on your terms each morning is empowering. You prove that you are more powerful than your snooze button and each of your days starts out with a victory.

So next time you’re tempted by that snooze button, remember what we say to the god of snoozing:

“Not today!”

The One Thing: Stop using the snooze button

Team Working Agreements: The Why, What, and How

Every team needs a written working agreement. Without one, there’s bound be chaos, bloodshed, and death.

Or at least it might feel that way.

Team working agreements are the first step to good team building. Without a concrete list of rules for team interactions, invisible habits will start to creep into the team’s workflow. Habits that aren’t always good.

If you’re part of a team that doesn’t have a working agreement, read on. You’ll learn why it’s important, what it involves, and how to create one.

Why is it important?

Team working agreements minimize friction between teammates. The agreement gives all members of the team a template for what is expected during their day-to-day work. A good working agreement can help even the most contentious of teams come together to produce great results. They can also be used to introduce new team members to the group culture more quickly, since he or she will have a list to reference.

The key benefit of working agreements is their enforceability. Since everyone has agreed to follow the rules, enforcing those rules becomes less awkward when infractions occur.

For example, my team has a rule that everyone should be attentive during meetings and stay off their phone. Because of our working agreement, it is much easier to ask a teammate to put their phone away. Everybody knows that phones are a no-go, so when one does appear in a meeting nobody feels shy to point it out. The person on the phone will then realize that they are breaking their agreement and change their behavior accordingly.

By defining and agreeing on the expected behaviors for all team members, we are able to reduce behavioral problems. Good practices encouraged by the agreement ultimately turn into habits that propel the team forward, while the bad habits are weeded out.

What does the working agreement cover?

People are unique, so every team will likely come up with a different working agreement. While what works for one team certainly won’t work for every team, many agreements will contain rules similar to the following:

  • Core working hours when members are expected to be online or in the office
  • How to communicate vacation or sick days
  • When and where regular team meetings take place
  • Who should attend which meetings
  • Expected behavior during those meetings
  • Expected behavior during the rest of the day
  • Which software products are used to track work and to communicate
  • How and when to use those software products
  • Who plays which role on the team
  • What days the team eats lunch together
  • Etc…

The team working agreement is a contract between all members. It should be relevant to everyone and to the work that you’re performing. Treat it as a living document by revisiting it periodically and making updates as needed. Feel free to experiment! If one particular addition doesn’t work out, you can always go back.

How do I make one?

The most important part of creating a working agreement is that it must be done by the entire team. If you’re a decision maker or influencer on your team, this is easy to do. Otherwise, you’ll need to convince your teammates of the benefits to making one.

Make sure that the rules in the working agreement aren’t dictated by upper management — only your team truly knows what it needs, so outside influence should be kept away.

A working agreement can be created in a single meeting, even as short as 30 minutes. Ask the team to come ready with ideas, and then discuss each idea and whether it should be added to the agreement. By the end, you’ll be ready to go!

Any future updates need to be agreed on by the whole team as well. Depending on the extent of the changes, you can have another meeting or simply get consensus over email or chat.


Remember, your team working agreement is just the first of many processes that development teams need to implement to be effective. It defines the rules of the game and creates a common behavioral language. Finding common ground creates the bedrock on which future processes can be built.

Now take your newfound knowledge about team working agreements back to your team and start changing the way you work!

This is the first of nine articles delving into the processes that every effective development team needs. Stay tuned for more!

9 Processes Every Effective Development Team Should Use

To be effective, development teams should—at a minimum—have the following processes in place:

  1. Team Ground Rules or Working Agreement
  2. Definition of Done
  3. Code Reviews
  4. One on Ones
  5. Static Code Analysis
  6. Style Guide
  7. Unit Tests
  8. Branching Strategy
  9. Continuous Integration/Continuous Deployment

What's your team missing?

Over the next few weeks I’ll be fleshing out the why and how for each item in the list, so check back for updates!

One Simple Thing: Back Into Your Parking Space

Parking lots are surprisingly dangerous. One in five accidents happen there, mostly due to people relaxing their attention due to the low speeds. Blind corners and cars backing out just add to the chaos.

The easiest way to stay safe (outside of simply paying closer attention and staying off your phone) is to back into your parking spot!

I know, I know. You’re always running late and don’t have time, plus you’re absolutely awful at lining it up right and don’t want to embarrass yourself in front of all those strangers.

But those are just excuses.

Backing in doesn’t take much more time, and I promise that after a week or two of doing it you’ll be much more comfortable driving in reverse.

Try it once. Then watch what happens when you go to leave your space. All of a sudden, you can see everything! You no longer have to look over your shoulder, hoping that nobody speeds around the corner while you’re backing out.

You simply look both ways and drive away.

I’ve been doing it for a few years now and I’m never going back. It really makes that much of a difference!

One Simple Thing: Take the Stairs

Finding time to exercise can be tough. Every day seems to fill itself with work, work, and more work. By the time you get home, the comfort of the couch is overbearing and your best-laid plans to exercise vanish.

But even on crazy days like that, you can find easy ways to get your heart pumping.

One of my favorites ways to sneak exercise into my daily routine is to follow one simple rule:

Always take the stairs.

If you follow that rule, you’re bound to get some exercise at some point during your day.

Is your office on the second floor? Take the stairs.

Is your apartment on the fifth floor? Take the stairs.

Did you just park underground? Take the stairs.

Yes, there are some limitations to this. I don’t imagine anyone working on floor 79 of a high rise downtown wants to spend 30 minutes each morning climbing up to the office. That’s too much to ask. But maybe get off the elevator a few floors early, or take the stairs down at the end of the day just to get moving. There are definitely ways to work it in even when faced with insurmountable climbs.

While taking the stairs isn’t going to turn you into an Olympic athlete, it does ensure that you don’t live a completely sedentary lifestyle. Eventually taking the stairs will become second nature and you won’t even think twice. Every day the climb will become easier until one day you’ll find yourself skipping up two steps at a time!

So the next time you see some stairs, take them. The elevator won’t miss you.

The One Thing: Take the stairs

Only Space Can Save Us From Ourselves

The rise of Trump and “America First” has shown us that tribalism still reigns supreme. All of recorded history is nothing more than our tribal interactions and the frictions that belonging to a different group can cause. Wars are fought for land, religion, business, and politics: all of which are an attempt to expand a tribe’s power.

One of these days, tribalism will destroy us all.

How close were we to a nuclear wasteland during the Cold War? How soon until the fail-safe systems fail and a stray missile is launched, or a despot gets too big for his or her britches and tries to wipe out another country?

We have no idea when the world will end, but until we stop thinking about ourselves as tribes and instead as humans, there will always be a risk.

That’s why we need to invest in space travel. We have to expand beyond our pale blue dot and venture out into the universe. We need to become Earthlings — entirely focused on the following goals:

  1. Ensuring all humans live a happy, productive life
  2. Exploring the galaxy and expanding the human race to ensure we survive
  3. Looking for life elsewhere in the cosmos

That last goal is key. I’m convinced that if we found aliens tomorrow, we would unify as a species more quickly than any other event. We’d do it even faster if the aliens were a threat to our existence.

The second we realize we aren’t the only ones floating around on a spinning rock in a vast, silent universe, we will begin to think of ourselves as citizens of a larger galaxy rather than a collection of nations on Earth.

Unfortunately, uniting because we found aliens would still end up harnessing the power of tribalism. Aliens become “the other”, and humanity would work towards grabbing more pieces of the galaxy than they currently do. Eventually — when we’ve saturated our little corner of the universe — we’ll be right back in the same spot we are today; bickering over territory and power, only at a scale a million times larger.

That’s a “future us” problem though, and none of us will be around to see it. But I’m optimistic that humanity will be enlightened thousands of years from now. We’ll do spectacularly in dealing with that issue if it even arises.

In the meantime, let’s start searching the stars.

Let’s put aside our differences and work to get multi-national space programs off the ground.

Let’s start uniting as citizens of Earth!

One Simple Thing: Use an Uplifting Password

During 2016, in an effort to help boost my confidence and self-image, I changed one of the few passwords I actually know (use a password manager, people!) into an uplifting phrase:

You@re@mazing! — or rather, something completely different but with the same general sentiment.

Every day I had to type “you are amazing” over and over again. It made me happy each time, and it reminded me that I am worth something.

I’ve kept this up, even as I’ve changed passwords regularly. Each time I type them, I remind myself that life is pretty awesome, and that I’m lucky to be where I am.

So if you want an easy way to boost your self esteem, change your password today!

The One Thing: Use an uplifting password

One Simple Thing: Get a Bidet (The Sorry State of America's Toilets)

Can you believe it’s been almost a year since I last talked about poop?

Last June, I encouraged everyone to poop better by using an improved squatting posture, and I had always meant to follow it up with another article to make your time in the restroom even more satisfactory.

That’s right: it’s time to talk bidets.

The first time I saw a bidet I was terrified. I was a young Mormon missionary living in Ecuador, and the thought of shooting cold water anywhere near my butt was far too homoerotic to even consider.

Boy, was I naive.

Turns out, the bidet is easily the single greatest piece of equipment I’ve ever introduced into my home.

Why You Should Clean Your Butt

It’s weird that I have to explain the merits of cleaning one’s butt, but here we are.

The need for bidets is clear. Who of us, after accidentally getting poop on their hands, would wipe it off with nothing more than a paper towel?

So why do we do the same to our butts?

Sure, we don’t shake butts when greeting one another (although now that I think about it, maybe twerking is just a new way of saying “hello”), but it’s still gross to think that millions of people are walking around every day with their anus unwashed.

The bidet solves this problem in a clean, environmentally friendly way. Bidets reduce the usage of toilet paper because you use clean water to get rid of all the nasties, then use a little bit of toilet paper to dry yourself.

It’s a win-win situation!

I Want to Clean My Butt — What Next?

Unfortunately for all of us, bidets never took off in the US. It was probably due to some combination of our puritanical culture and hatred of all things French.

But you can change that, at least in your own home!

The traditional bidet is separate from a toilet, and I’m betting most of us don’t have the money or the room to completely revamp our bathrooms. Thankfully, some ingenious people created bidets that can be attached to your existing toilet. Some even use warm water!

I don’t know if we’ll ever see bidets as a regular feature in the majority of restrooms in America (just like we’re still stuck with insanely tall toilets that totally screw up our bowels), but unless more of us make the switch and discover the amazingness that is the humble bidet, progress will never happen!

Social change starts in your own bathroom, so it’s up to all of us to join together and clean our butts!

Don’t be an asshole; go get yourself a bidet, today!

It’s Okay to Be Lazy - Give Yourself a Break When You Need It

It’s okay to be lazy.

Well… not all the time. Obviously. At some point you’ll just get bored.

But when you need a break, take a goddamn break.

By the way, this article is more for me than it is for you, dear reader. Dealing with anxiety and perfectionism can be a pain in the ass sometimes, and this weekend I was really feeling it.

Today I felt like I haven’t been doing enough with my life, despite the fact that I’m currently doing a lot:

  • Polishing up on Spanish
  • Learning Portuguese
  • Contributing to an open source project
  • Starting a side project to learn Go
  • Watching two IT training video courses
  • Reading three books
  • Training for a Ragnar
  • Listening to almost 30 different podcasts covering dozens of topics each week
  • Working hard every day at work

I’m not saying all that to brag about my busy life, but rather to point out to myself that I’m sure as hell not lazy. Just looking at that list is exhausting. But yet, this weekend I felt like I was the laziest man on Earth — that I wasn’t doing enough with my life.

So I took the day off from my todo list. I sat on the couch, stuffed my face with food, and watched Mystery Science Theater 3000.

And it initially felt awful.

My anxiety roared ferociously! “How can you take a break when you’re already doing nothing with your life?” it prodded. But I tuned the voice out, and sat back to enjoy the show, snuggling with my wife and puppy on the couch.

And what d’ya know? It worked!

After a few hours of doing nothing more productive than getting farther along in a Netflix series, I’m feeling a lot better. In fact, I’m back to “being productive” by writing this article on the merits of self care and lazy days.

So if you’re ever feeling overwhelmed with life, or have a nagging case of perfectionism, don’t feel ashamed to occasionally kick back, relax, and listen to the wise words of Bruno Mars.

You’ve certainly earned it.

Develop These Habits, Developers!

  1. Write unit tests
  2. Ask others to review your code
  3. Review other people’s code
  4. Listen to programming podcasts
  5. Volunteer for work that makes you uncomfortable
  6. Learn something new every day
  7. Exercise regularly
  8. Get enough sleep
  9. Read a book on design patterns, code refactoring, or user experience (and take notes!)
  10. Have weekly one-on-ones with your boss
  11. Talk to your co-workers about things other than work
  12. Contribute to open source
  13. Practice mindfulness
  14. Use a personal task management system
  15. Write regularly
  16. Set quarterly goals
  17. Share new knowledge with others
  18. Develop a hobby outside of work-related themes
  19. Save at least 15 percent of your income
  20. Leave a file better than you found it
  21. Write down your strengths and play to them
  22. Stop watching as much TV
  23. Start side projects with a technology you’ve never used

How to Pack One Bag for a Five Day Trip - Why you don’t need all that junk in your overhead luggage

For the last three months I’ve been traveling every other week to Denver for work. These trips last five days — Sunday to Thursday — and my team has asked me how I can last that long with a single bag.

This article makes an assumption that you have some sort of backpack or messenger bag that can double as your luggage and your daily carry to the office. If you don’t have one of those, single-bag trips become a bit awkward — your coworkers might laugh when you’re wheeling your bag around the office every day.

Anyway, with that said:

Here’s how I do it, and how you can too!

1. Pack Only What You’ll Use

Most people pack way too many items when they go on trips. This comes from over-planning; every conceivable scenario is accounted for, which leads to a lot of backup items.

But ask yourself, when was the last time one of those things actually happened?

Most likely the answer is never, or maybe once or twice.

Face it. It’s very unlikely that you’ll have any problem that justifies that extra set of underwear, backup toothpaste, or lucky shirt.

Here’s a picture of everything I need to last five days:

Everyday carry
(I promise I’m not an Apple fanboy. I still have never purchased one of their products. The streak continues!)

Notice the lack of shoes, belts, jackets, and other accessories? That’s because I wear them on the plane with me.

Yes, that does mean that I’m stuck wearing the same accessories each day, but who cares? Shoes are the number one killer of bag space, but you seriously don’t need more than one pair. Nobody will notice that you wear the same pair of shoes every day, so take a sturdy pair that work great in the office and out on the town.

2. Roll Your Clothes

I’ve found that rolling up my clothes into tight little burritos saves me a great deal of space when packing. There’s a debate on which method is actually more effective, but for me and my bag, rolling takes the cake.

Here’s a picture of my now-reduced clothing footprint thanks to rolling:
Everyday carry rolled
(Notice the smaller gaps between clothing than the last picture. That’s how I “proved” rolling is better.)

Yes, I didn’t roll my socks. That’s something I could improve on, but I’m not a fan of the whole “inside out” thing that happens when you roll them. It just bugs me.

3. Pack Tightly — Order Matters

Once everything is rolled up, pack it tightly into your bag. Think about how to best utilize the space. For me, I switch orientations depending on the length of the clothing burritos in order to pack everything as tightly as possible. For you, the technique will vary based on your bag.

Make sure to leave items you might want to access before arriving at your final destination on the top of the packing. I keep my chargers, snacks, and toothbrush within easy reach for use in the airport or on the plane.

Everyday carry packed
(I missed an opportunity to advertize my delightful deodorant: Old Spice Timber.)

It will likely take you a few attempts to find the perfect packing combo. But once you know the right way to squeeze it all in there, future trips are a breeze. Since everything has its place, you’re less likely to forget any of your clothes!

4. Use Your Bag’s Straps

Once everything is in, tighten down the various buckles to keep it all safe and secure. At this point your bag is probably fuller than you’re used to, which means there’s a greater chance of things falling out if you open your bag again. Keep that in mind when accessing items while on the road, but it shouldn’t be much of a problem.

Unless you have incredibly puffy clothes or an ever-expanding pocket dimension in your bag, everything should stay relatively compressed and safe.

Everyday carry closed
(No pocket dimensions in this bag.)

5. Enjoy!

Now you’re ready to develop the superiority complex that comes with the power of single-bag packing.

You can be the last person to get on the plane and never have to search for an overhead luggage compartment again.

You will always be down for a night on the town, even before hitting the hotel. One bag to keep track of is nothin’.

You’ll make your coworkers jealous with your sweet packing skills.

But most of all, you’ll have an excuse to sit in bed watching Netflix rather than exercising, since workout clothes are not fitting in there.

Fun Retrospectives - Make Retros Easy and Collaborative

The concept of retrospectives has seemingly permeated every nook and cranny of the IT industry. It’s a central concept to Agile, and is a phenomenal way to regularly provide a forum for the team to express concerns, recognize achievements, and ultimately improve the software product they are building.

A cool tool I ran into a few months ago is “Fun Retro”, an online, real-time, collaborative retrospective board that makes sprint retros a breeze.

Most retros I had been in previously involved sticky notes placed on a wall or thoughts jotted down on a whiteboard. But as programmers, why aren’t we doing this online? We (hopefully) have someone take pictures or type out the feedback anyway, so why not just make it all digital in the first place?

Fun Retro makes digitization easy, since it’s all done online. It even has a nifty little “Export” button that outputs the entire result to plaintext — perfect for moving to a longer term storage space like Confluence, Evernote, OneNote, or whatever your team uses for document storage.

Another great feature is the real time feedback. Under the hood, the project uses Firebase, a blazing fast Google tool that keeps everything in perfect sync. Teammates will see messages in real time, reducing the number of duplicate items on your board.

But don’t duplicates indicate that a particular item has a lot of support? Yup, and that’s where the voting system comes into play! Anytime a teammate sees an item they like, a quick click on the thumbs up lets them show their support. You can sort by votes to get a quick picture of what is most popular among your team.

Other features involve moving cards around, renaming your categories, and setting an agenda. Fun Retro is a fairly new tool and is actively in development — which you can totally contribute to — so new features should be coming down the pipeline in the future!

To be honest, I haven’t looked very far for any other tools, but Fun Retro fell into my lap a few months ago and works perfectly for our team.

It's Late and I Can't Sleep - A Look Into How Anxiety Affects a Night Owl

Nights like this suck. It’s late and my mind is racing with thoughts.

Hell, I spent five minutes debating in my head whether I should report that time three months ago when the moving truck lady called me a liar. I told her some specs her company gave me — we called twice to verify the measurements. She said I was lying, and then dropped our stuff in an illegal spot on the street. I’ll probably end up sending that company a(nother) tweet complaining, because why not? I’ve got nothing better to do at 1 a.m. except be mad at things I can’t control.

Trying to stop these thoughts doesn’t do any good. I start beating myself up mentally just for not being able to sleep. Usually, all I can do is put on some instrumental music or a sleep-inducing meditation session and hope my mind quiets down.

It’s even worse when I’ve changed timezones. I flew from Seattle to Denver tonight, so what is currently 1:00 a.m. feels more like midnight (which is still within the range of my normal bedtime, albeit on the late side). So now I’m counting the hours of sleep I won’t get thanks to this arbitrary thing called the earth’s rotation.

Every so often I give in to my mind’s demands and stay up late trying to quiet my anxiety.

Tonight is one of those nights. The whole reason I’m writing this article is because it’s been a month since I ticked off my “post a weekly article on Medium” task and my brain won’t stop giving me shit for it. I also get to mark off Monday’s task of “write 250 words daily” — another thing I haven’t done for weeks.

Two birds, one stone. Thrown from the darkness of a sleepless night. They’ll never see it coming.


It’s not all bad though. Nights like these often bring inspiration. I harness my anxiety and use it to come up with topics to write about. Like how the traditional 9-to-5 schedule that permeates our society is utter hell for night owls like me. Or remembering that I should write about my experience with switching to an early bird schedule for a few months until I couldn’t take it anymore.

In fact, I love being up late. Right now I’m looking down on a sleepy road in the middle of Denver, 200 feet above the city. It’s gorgeous. I want to go wander the streets, go shopping, and watch for animals (I’ve seen quite a few jack rabbits running around Denver).

I would stay up this late every night if I could.

But no, I have to be awake tomorrow morning, so instead of enjoying the lateness of the night, I torture myself by trying to sleep and never quite getting there.

If I call it a night now, I can eke out 6 hours.

That’ll do.

Experimenting With React.js and React Native

Man, oh man, do I wish I had looked at React.js a few years ago.

I started a side project using it over my holiday break, and yesterday I got a React Native Android app up and running. Now I’m hooked. At first I was wary of JSX, but I’ve come to embrace it due to its ease of use and modularity.

I suppose I never looked at React because I thought I already had my favorite front-end framework: Angular.js. But with the new Angular 2 using TypeScript, it almost feels like an entirely new framework. That led me to check out React.

I’m not sure if I’ll ever touch Angular again. React is just that great.

The only other front-end framework I’ve used is Knockout.js. That has only been for projects at work — thankfully. I mean, just look at Knockout’s website. This isn’t 2009!

Were I to recommend a UI framework for a new project, whether on the web or mobile, I would start with React.js.

Here’s why:

  • Reach has only one job: UI
  • React has no opinions, you can use whatever framework however you’d like
  • Support and stability. Facebook is maintaining it, and seems to have built it right the first time. There’s little chance we get as much of a shakeup with future versions of React like Google did with Angular.
  • Its age. While React is young (it came out in 2013), it’s ancient in JavaScript land. But its continued popularity shows its staying power, and thus worth learning and using
  • JSX: I used to balk at the idea of CSS, HTML, and JS all mixed up in one file, but React manages to makes it work

Did I miss any other great reasons to use React? Do you disagree? Leave me a comment :)