My 8 Tips for a Better Life as a Developer

Jake Lundberg - Oct 19 '23 - - Dev Community

I've been a software developer and engineer for a little over 8 years now and have learned a lot, both from my own experience as well as from some very talented people. In this post, I want to share some of the things that really stand out as having made my experience significantly better and more enjoyable. Some will be technical, some will be just general life tips. But all of them have improved my life and experience in software development, and hopefully by sharing these lessons and tips, I can help you avoid some of those less than enjoyable times that I had to go through in order to figure them out.

1. Find a place you enjoy working in or at

Three people sitting at a coffee shop working on their computers and smiling.

Your environment contributes a lot to your life. It can add or reduce stress, help you to focus or distract you, make you feel safe or not, and so much more. Because it plays such an integral part in every single one of our lives, I thought it fitting to start here.

Whether you work in an office or remotely, there are most likely things you can do to find a place that makes you feel "right". I say "right" because everyone is going to be different here. Some people want to feel comfortable and "at home". Others want an area that isn't so much about comfortable, but instead really allows them to "get in the zone" and focus.

I've tried lots of different locations over the years just to see what worked for me. I've sat out on balconies in the cool morning air with a hot cup of coffee. I've literally sat under a desk with a blanket draped over me. I've sat in closets, corners, coffee shops, restaurants, bars, cars, parks, dining room tables, and stair wells. Through all this experimentation, I've been able to find places that give me what I need, when I need it. If I need to focus, I need to be alone. Somewhere with a door that can close, without windows for me to notice people walking by. I don't work super well when I'm overly comfy, like snuggled up in a blanket on a soft couch. If I need a change of pace, or just need to be around people, I found that I really enjoy sitting down at a small bar or restaurant that isn't overly crowded. Somewhere I can order a drink and an appetizer and work, but still be around a few people.

So I encourage you to try out a few places. Find what works for you, and just as important, what doesn't work for you. And if you can't find a place, you can always put a little effort into make the place you want!

What does "right" mean to you?

2. Invest in your hardware

A desk with high tech equipment in a dark room with LEDs illuminating the space

As software developers, there are a few pieces of hardware that we use a ridiculous amount. An argument could be made that we use things like our keyboard and desk chair more than any other items in our lives. And of course we can get the job done with any old keyboard, and we can make due sitting on any chair. But I've found that a little investment in "nicer" hardware has a big impact on how I experience my work.

Chair

If you sit while you work, and you're going to invest in just 1 thing, it should definitely be your chair. A chair that offers both comfort and support can really go a long way. From how long you can sit and focus without getting uncomfortable, to how your back, neck and shoulders feel in your everyday life, your chair has a big impact on your general health and wellbeing. So be sure to find a good one, and don't just settle for one that encourages bad posture.

I personally use the Secretlab Titan Evo (Batman Themed) and have been very happy with it for a couple years now. And compared to many of the high end desk chairs out there, the price tag isn't too bad.

Keyboard

Second to your chair (but not by much) is your keyboard. Easily the tool we interact with the most to do our jobs each and every day. There are TONS of options out there too, so regardless of your personal preference, there is most likely something that will meet your wants and needs.

Picking the right keyboard is very different for each person. Some people prefer low profile keys to mechanical ones. Some people need integrated USB port(s). Cost, ergonomics, wired or unwired, customizable keys and switches, back lighting, configurable LEDs, support for configuring the key layout, the height and size, the number of keys, the list goes on and on. Finding the right keyboard for you can be a journey for sure, but one I highly recommend you go on. Of course we can do our job with any keyboard...but I promise, if you give it a try, finding the "right" keyboard will make your day and experience as a developer much more enjoyable.

I use the Moonlander Mark 1 and absolutely 💙 it! The split design has really helped me not slouch so much and also helped remove the shoulder and wrist pain I had for a long time. Plus those Cherry Brown switches sound so pretty 😍!

Mouse

We can't talk about keyboards without also talking about their sidekick, the mouse. Like keyboards, there are TONs of different kinds out there, and everyone is going to have their own preferences. Luckily even a half decent mouse has a pretty low price point, so it's relatively easy to try out a few to find what works for you. But like all the other items here, a little investment of time and money can have a positive impact on your experience.

My mouse is the ZLOT Vertical Gaming Mouse. It's a lighter (in weight) mouse, but has a nice ergonomic feel and responsiveness that I've enjoyed for quite a while now.

Monitor

This one is definitely an optional item, but one that I've found makes my work much more enjoyable. Not everyone needs an external monitor. Some people actually prefer to work directly from their laptop. But if you do like to use external monitor(s), this is an investment that can have a BIG impact.

Sadly, due to issues with multiple 4k monitors working on Mac, I got rid of my multi-monitor setup and now I use the Sceptre 35" Curved Monitor. It has lots of real-estate so I can still have plenty of windows open on one screen.

Headphones

Headphones are also optional (some might argue against this 😝) but their benefit cannot be overstated. From reducing distraction to helping you get in the zone, a good pair of headphones can go a long way. Like most of the items I've listed, everyone preferences are going to be different. But investing a little time and money into finding a good pair for you will really take your game to the next level. Many people I know look for good noise cancelling, and they have to be light and comfortable so they can be worn for hours at a time.

I personally like using Beats. I used to use the Studio3 but when I had to start wearing glasses, I didn't like the pressure these headphones placed on my frames, so I switched over to the Beats Fit Pro and have been really happy with them. I've literally worn them for 8 straight hours and they were great. They're light, comfortable, have good sound, and are nice and stable when I'm jogging and working out.

What hardware do you use? What would be your dream hardware?

3. Find tools you enjoy working with

A screenshot of an application wall with fun emoji-like faces on the app icons

In addition to hardware, as developers, we use a lot of software tools to do our jobs. Some we have no choice in using, but there are many that we do, and finding tools that you actually enjoy using can really make your daily experience better. Even just having a tool you can configure to look how you like can have a positive impact.

The thing I want to stress here is not finding tools that everyone uses because they can do all kinds of things. It's more about finding tools that you actually enjoy and look forward to using, that get a the job done. Even if they can't do all the fancy things some other tools can do, if you actually look forward to using another tool, then use it! Having tools we actively enjoy really adds a lot of positivity into our lives.

There have been many tools like this that have come and gone over the years for me, but here are a few that bring me a lot of joy in my day to day:

  • Giphy Desktop app
    • liven up Slack messages with gif responses instead of boring ol' text.
  • Raycast
    • This has replaced Spotlight for my on my Mac. And with the pro version, I have access to ChatGPT 4...so one quick keyboard shortcut and I have AI at my fingertips. Game changer for me!
  • Obsidian
    • Although this is a popular note taking app already, I took some time to write a few scripts to automate stuff for me and it has completely changed how I take all my notes and track all the things I need to do.
  • Arc browser
    • It took all of 1 day for Arc to become my primary browser. Now I only use other browsers (on my Desktop) when I'm testing browser support for some feature I'm building.
  • Habitical
    • I am very motivated by earning badges, accomplishments, and general gamification, so this todo app has made managing and doing tasks much more fun for me!

What are some of the tool that bring you joy in your daily development life?

4. Set Goals

A typewriter with the

I know this sounds obvious, and I'm sure we've all heard this from countless other sources. But you might be surprised how many people don't set goals for themselves. Don't believe me? turn to any 2 or 3 of your neighbors and ask what goals they are currently working toward. When I ask this, all too frequently I just get a shrug of the shoulders and a, "Nothing really" response.

It's also not enough to just set the goals. You have to think about them regularly too. Some methods say to write them down and put them on the mirror or somewhere you'll see them frequently. This method hasn't personally worked for me, but perhaps it will for you? What works for me is sitting down for 15 minutes every morning before I start work and make it a point to think through my goals, all the todos I have, and everything on my calendar (yes I actually block out 15 minutes on my calendar for this, and force myself to stick to this time). During this time, I think about my goals and figure out 1 small thing I can do today to move even an inch closer to achieving each of them.

For example, if I have a goal of cleaning the garage before family comes over for Thanksgiving, I think, "What is 1 small thing I can do today to move toward completing this goal?". Sometimes the answer is exceptionally small..."Sweep under the workbench.". Other times I might be more motivated or I have more time available and it could be something larger. Regardless, take some time to think about just 1 action you can take today to move toward the completion of that goal.

When I do this, something happens in my brain. I find myself feeling more accomplished and more optimistic. Sure, it might be a long road to complete the goal (if it's a big one), but knowing that I moved closer to something I want to accomplish has had a positive impact on my general day to day life, and has allowed me to accomplish way more than I ever thought I could.

So big or small, set yourself goals. Then think about them regularly and take a lot of tiny actions to move just 1 step closer. I promise this will bring good things into your life!

What goals are you trying to accomplish right now?

5. Be Curious and Learn Why

A sign on a window that says

So many people get frustrated or judge the way things are done in coding projects. I've certain been there!

  • "Why did someone ever pick this technology?! This other technology is so much better for this use case..."
  • "Why would anyone write code like this?!"
  • "Things would be so much better if we didn't do X and just did..."

Do any of these sound familiar?

As frustrating as things can be sometimes, in software development, there is almost always a why behind every decision that's made. Was it the best choice? Maybe not...but there was still a reason why the choice was made.

I used to get frustrated over the way things were, and then would get frustrated trying to solve the issues, and then getting frustrated when I hit road blocks. But eventually something just clicked, and instead of getting frustrated, I started to look for the reasons these things happened. What was the why behind it. As I made it a habit to "look for why" instead of just "wondering why not", my curiosity became stronger. I found I was seeking out more information, learning and understanding things more thoroughly, empathizing more with the people I work with, and in the end, getting frustrated WAY less.

Now, my experience is so much more positive. Whether I'm refactoring some piece of complex code, trying to find a solution to an annoying problem, or learning an entirely new codebase for a new job, I actually enjoy the process so much more by just being curious and wondering why.

What was the last coding thing you were really frustrated by? Did you learn why it was the way it was?

6. Block Your Calendar for Focus Work

Calendar entries each day of the week for 2 hours that say

This one is easier said than done, depending on where you work, but it can have an amazing impact on your developer life!

Have you ever been in the zone, just cranking out code to build that new feature, and then "ding!" someone sends you an urgent Slack message? Or someone taps you on the shoulder to ask you a question? You address the interruption, turn back to the screen, and you've lost all that focus? If not...I'd be willing to bet a LOT of money that you will at some point in your career.

This concept of being "in the zone" or getting into "flow" is a topic that's been studied and written about a LOT. I highly encourage you to check out a few articles and books on the subject, because it is a very interesting topic (at least for me it is 😃)! Many of those studies have shown just how beneficial being in the state of Flow is, and also that it can take over 20 minutes to get back into that state of mind after an interruption! So finding ways to get yourself into that state of mind, and stay there, is hugely important!

One of the best ways I've found to get myself into this state has been to literally block off large chunks of time in my calendar dedicated to "Focus Work". It can be a challenge at first, getting people to check your calendar or Slack status before trying to reach out, and helping everyone understand that you will get back to them as soon as your Focus Time is over. But eventually people will come around, and the rewards are great! Don't forget to turn off notification during this time too!

A couple of tips here though...

  • Accept that there will be times where urgent matters will come up that will take higher priority. That's just life, and we just have to roll with the punches...but this should not be the "norm".
  • Shoot for blocks of 2-3 hours. Less than that will not feel like enough, but more than that and people will be forced to interrupt you more often. Remember, other people have important, urgent business as well, and making them wait more than half a day to get it addresses really isn't fair or reasonable in today's working climate.
  • Schedule these blocks during your most productive time. For me, I'm most productive from 6am to around 10:30am. So I usually try to schedule my Focus Time during these hours.

During what part of the day do you find you are most productive?

7. Keep your PRs Small

A screenshot of the GitHub review header showing 3 files changed and a total of 35 changes made

I love this one, and it has become a big priority for me over the last year or so.

It turns out there is a lot of positive benefits to keeping Pull Requests (or Merge Requests for you GitLab folks) small. Fewer bugs get released, we spend less time reviewing code, and features get rolled out faster, just to name a few. All this not only makes our product better, but I've found that it drastically improves my experience as a developer as well!

By focussing on smaller changes, I find that I'm thinking about things more thoroughly, accounting for use cases that may have been overlooked in the chaos of much larger changes. I'm able to move faster in getting changes into review, my team members are able to review my code even faster because I'm only taking up 5 minutes of their time instead of 2 hours, and during that review, I receive significantly fewer change requests. As a result, better code is going out, and I can continue spending more time building new things, rather than having to address a bunch of bugs that were missed.

On the other side of things, reviewing small PR|MRs is WAY more enjoyable than massive ones. Have you ever had to review someone's PR|MR that consisted of several thousand changes, spanning 20+ files, and multiple areas of the application? When you did, what was your immediate response? Were you overly excited to jump in and start the review? Or maybe you felt a sense of "ugh" and pushed it off because you only had 30 minute before that next meeting, and you could get something else done in that time?

When large PR|MRs are being reviewed, it's often the case that lots of details get lost (or at least receive less focus) and eventually, most people hit a point of "Review Blindness" or "Review Fatigue" where things start getting overlooked, or the reviewer has to step away for some time and come back to it later. This all results in the review process taking even longer, being less efficient, and causing lots more change requests to be submitted. Not to mention the feelings of dissatisfaction that are shared across all your team members.

Since I started making this a priority for myself, and working with team members to try and get them to do the same, I've noticed that my experience with PR|MRs has gotten significantly better. I'm much more willing to hop in and knock a few reviews out between meetings, I'm having to request fewer changes, and I don't feel drained afterward where I need to step away and collect myself again. Even my planning has become more accurate!

All in all, I highly recommend this for everyone. And if you would like to learn more about the benefits of this, I would recommend checking out the LinearB blog as well as the Dev Interrupted podcast. They touch on some fantastic points that I've found really help engineering leaders and teams!

What was the worst PR you ever had to review?

8. Write Down Everything!

Someone writing notes in a notebook

My last tip is something I also started doing within the last year, after reading How to Take Smart Notes and Getting Things Done and it has had an amazing impact on my life.

When I learn something new, I write it down. Even if its just a short paragraph describing the thing I learned. When a new task comes up, big or small, I write it down. During a meeting, if ideas are shared, feedback is given, issues are presented, it all gets written down. If I have a random thought about something, or a hair brained idea...you guessed it...it gets written down. Then, whenever I have a few spare minutes, rather than scrolling through social media, I first turn to my notes. I review them as often as I can, which reinforces the information in my mind, but also helps me link different ideas together, which can often lead to an entirely new idea.

By doing this, I've found that I am remembering things much more thoroughly. And if I can't, I have a record of it and can pull it up! It's allowed me to complete way more documentation for work, and I even have 4 or 5 blog posts in the works at any given time! Far fewer things are falling through the cracks, and I'm able to accomplish so much more.

I recently started a new job, and by using this method, people are already approaching me asking how I'm doing so much! The secret sauce? Write it all down and add it to the system.

It's been a game changer for me, and I just have to encourage others to do the same because I really believe it could benefit their lives so much!

What method do you use to remember and share things you've learned?

Conclusion

Over the last 8+ years of working as a software developer and engineer, I've learned a lot. I've gone through good times and bad, and have picked up some really helpful life lessons along the way. By finding places I enjoy working at, investing a little more time and money into my hardware, finding tools I like using, settings goals, being curious and focussing on why, defining time for focussed work, focussing on keeping PRs small, and writing down everything I can, I can honestly say that my developer experience is greatly improved.

I very much hope that at least 1 or 2 of these tips will improve your experience as well.

Thank you for letting me share these tips with you. Until next time, Happy Hacking!

. . . . . . . . . . . . . . . . . . . . . . . . . . . .