It’s that time of year — time to start thinking of resolutions for the new year. But this time you’re actually going to check some of them off, and we’re here to help.
Here are some resolution suggestions for your new year:
Check out these resources:
- “What is a Closure?”
- “What is a Pure Function?”
- “What is Functional Programming?”
- “What is Function Composition?”
- “What’s the Difference Between Class & Prototypal Inheritance?”
9. Use TDD
Test Driven Development (TDD) is the process of writing tests prior to implementing features. There are lots of benefits of TDD. In my experience, it helps you write better, more loosely coupled code because unit tests force modularity, and writing tests first forces you to think about the API design prior to writing the implementation. Most importantly, TDD can help you reduce production bug density between 40% — 80%. Next to code review, it’s the most effective thing you can do to improve code quality. Read “The Outrageous Cost of Skipping TDD & Code Reviews”.
8. Practice Networking
Just like every other industry out there, who you know is just as important as what you know in software development. Get out there and make some more friends this year! The people you know can open doors for you, or provide social proof when you need to land a new job or a new client. Learn to be open to new and interesting opportunities, and learn to recognize a good opportunity when it presents itself to you. Here are some great ways to meet new people:
- Co-work spaces
- Coffee shops — particularly shops located near tech hubs, such as the SoMa neighborhood in San Francisco, Playa Vista in Los Angeles, or the Freemont tech corridor in Seattle (or downtown). No tech cafes in your neighborhood? Try searching for tech meetups on Meetup.com.
Here are some tips to help you make friends:
- Be a valuable resource
- Be a connector
- Show gratitude and appreciation
- Respect people’s privacy, contact protocols, and boundaries
7. Learn Redux
Redux combines Flux architecture with functional programming using reduce (think
Array.prototype.reduce()) to derive application state from a stream of action objects. Check out “10 Tips for Better Redux Architecture” to get started on your Redux journey.
6. Learn a New Library or Framework
5. Polish up Your Online Presence
Whether you like it or not, your online presence is a big part of your personal brand. I know you’re a person, but you’re also a brand. Like it or not, as an adult, you’re constantly selling yourself to potential employers, coworkers, and business partners. You need to decide what your brand is, and realize that how you present yourself online will dictate which opportunities will be open for you, and which ones won’t.
It’s totally OK to be yourself — just be the best version of yourself that you know how to be. Hiring managers do look at social media profiles, and they will make hiring decisions based on what they find.
There are some mistakes that will cut you off from a whole lot of good opportunities. Are you guilty of any of these social media posting blunders?
- Inappropriate content or photos
- Coming across as a heavy drinker / drug user
- Posting discriminatory or harassing messages (race, religion, gender, etc…)
- Badmouthing previous employers, boss, or coworkers
- Bullying / abuse
- Poor communication skills
Here are some things you do want your profiles & posts to convey:
- Professional image
- Great communication skills
- Great personality
- Friendly/helpful interactions
4. Be Positive / Stop Complaining
I know it’s frustrating, especially for newcomers trying to get their bearings, but it has also brought us great innovations like React, Redux, Babel, TypeScript, Webpack, Rollup, etc…
“…no one is keeping up, and that’s OK.”
The good news is, all this great new tooling is centered around a single language. When I was starting my programming career, there was a similar explosion, but it wasn’t centered around a single ecosystem — it was an explosion of completely new and different programming languages.
It’s time to stop complaining so much and start appreciating how good we have it. Take the opportunity to thank the authors of the open-source tools you use. Better yet — contribute pull requests, and help relieve some of the maintenance burden. Get a taste of what it’s like to do the hard (often uncompensated) work that most people take for granted.
“Remember, OSS maintainers don’t owe you anything, but you do owe them respect.”
Most importantly, try to show empathy and gratitude. Let’s be more positive in the new year.
3. Code for Good: Use Your Programming Skills for a Good Cause
There are lots of great ways to put your coding super-powers to good use. Remember:
“With great power goes great responsibility” — J. Hector Fezandie, 1894 (also, Spiderman)
Here are some great ways you can contribute to a good cause:
- Volunteer at a nonprofit code training program
- Contribute to an open-source project
- Volunteer to build software for nonprofit
- Start a philanthropic project at your company like Microsoft’s Hack for Good program
- Create a mentorship or apprenticeship program at your company and commit to hiring from groups with difficult backgrounds, such as refugees or homeless communities
2. Improve Your Development Process
Chances are good that there is plenty of room for you to make serious improvements to your development process and team productivity. Here are some tips:
- Use Code Reviews. Every hour spent in code review saves 33 hours in maintenance.
- Use TDD. So important it got its own resolution.
- Deploy daily. Continuous integration and continuous delivery help automate and normalize the most risky parts of the development process. The more frequently you do them, the easier they become, until the chores are almost entirely automated and no longer place cognitive load on developers.
- Avoid interruptions. According to Microsoft Research, an interrupted task takes about twice as long to complete, and contains twice as many errors as an uninterrupted task.
- Batch meetings. In the spirit of avoiding interruptions, meetings count as interruptions. As much as you can, batch meetings together and block out chunks of at least 3 hours of quiet time where nobody is allowed to schedule meetings with you or the other developers on your team. Better yet, eliminate as many meetings as you can. Prefer asynchronous online communication whenever possible, and reserve meetings strictly for high-bandwidth back-and-forth communication.
- Batch email. Same thing with meetings. Don’t let email distract you. Check your email exactly twice per day: Morning, and afternoon / evening. If it’s possible in your workplace / culture, skip email altogether on some days.
- Batch social media. See above. You’re probably thinking I’m a hypocrite now because I am constantly posting stuff on Twitter. I’m gonna let you in on a little secret: I auto-schedule posts days in advance, and then check in and interact only when I have some minutes to spare between blocks of work.
- Batch async chats. From time to time, it’s good to check in with your team via async chat to make yourself available for Q&A. I like to have 2 uninterrupted 2–3 hour blocks per day for uninterrupted coding. Before and after those blocks, I’ll check chat channels and make sure nobody is waiting on my help.
- Turn off notifications. Turn off your notifications — on your phone and on your computer. When programs ask you if you want to enable notifications, click the “Are you kidding me?! Why on earth would I ever do that?!” button — or whatever button sounds like it’ll disable notifications. Make exceptions for emergencies.
- Ask for help when you need it — and create a safe environment on your team where asking for help is encouraged. We all go blind to our own code mistakes sometimes, but there’s no excuse for staying stuck on problems for hours when somebody else might spot a solution in seconds.
- Eliminate deadlines. You’ll probably need to be a manager or have a manager ally to pull this one off. If you’re not a manager, share “Why Deadlines Need to Drop Dead” with your manager.
When people ask me what the most important tech skill is, I always answer, “compassion”. Why? Because you can’t be your best without it.
Compassion for users will motivate you to:
- Create a more friendly UX
- Create faster page loads and smoother animations
- Solve actual customer problems rather than crank out features that nobody asked for and nobody wants
Compassion for your teammates will motivate you to:
- Write better, more maintainable code
- Put real effort into better code reviews
- Mentor team members & answer questions
Compassion for your employees and reports will motivate you to:
- Improve the development process
- Improve the developer UX for your project
- Protect developers from interruptions
- Handle problems and performance issues with empathy and kindness
- Listen to the needs of the team
- Communicate honestly and responsibly with business management and customers
- Protect the interests of both the business and the development team, without hanging either out to dry & without tossing anybody under the bus
Compassion will also help you. Everybody appreciates compassionate people, and most will return the favor.
“If you want others to be happy, practice compassion.
If you want to be happy, practice compassion”
~ The Dalai Lama
Now you know: The most important tech skill in the world is compassion.
Now that you’ve got some resolutions for the new year, which tech should you study up on?
He spends most of his time in the San Francisco Bay Area with the most beautiful woman in the world.