I've spent the last month and a half involved in performance reviews and employee calibration, so I've had a lot of time to reflect on what success looks like for myself and for the people I manage.
In this issue, you'll see how taking on thankless chores will positively affect your career trajectory, even if you are not immediately rewarded.
But first you'll play with a tool that lets you query your operating system using SQL rather than remembering a bunch of separate command-line tools. I learned about this tool years ago and recently rediscovered it. I'm excited for you to give it a try.
Imagine having a magnifying glass that can peer into every corner of your operating system, offering insights and revealing details that are typically obscured. That's OSQuery.
OSQuery is an open-source command-line tool that lets you query your operating system as if it were a database. Think of it as SQL, but instead of querying tables, you're querying various aspects of your OS, from running processes to loaded kernel modules, file system information, and more. This makes it an incredibly versatile tool for system monitoring, analysis, and even cybersecurity.
Install OSQuery on macOS via Homebrew with brew install osquery
.
For Ubuntu and Debian-based Linux distributions, install with sudo apt install osquery
.
For Windows, download the latest release from the OSQuery downloads page and run the installer.
To run OSQuery, open a command prompt or terminal window and run the command osqueryi
. This opens the interactive query prompt, where you'll execute SQL queries to get information about your system.
Start by looking at system processes: At the osquery>
prompt, enter the following query to see the top five processes using up the most memory:
osquery> SELECT pid, name, total_size FROM processes ORDER BY total_size DESC LIMIT 5;
This shows the process ID, name, and total memory size, but you can display other fields as well. Inspect the schema of the table with the following command:
.schema processes
You can also view the documentation to see the available schemas.
You can also check your open network connections:
osquery> SELECT * FROM listening_ports WHERE port != '0';
Since port 0
is not used for standard network services, filtering it out reduces extra noise.
Finally, you can join tables together. For example, you can users and the processes they're running:
osquery> SELECT users.username, processes.name FROM users JOIN processes USING (uid);
Once you're done querying your system, press CTRL+C
to return to your prompt.
You can pass queries directly to the osqueryi
command too. This way, you don't have to open the interactive prompt. Try running this command to see the logged-in users on your system:
$ osqueryi "SELECT user, time FROM logged_in_users ORDER BY time DESC LIMIT 10;"
OSQuery converts complex system data into a queryable format, but its real power lies in its ability to run more complex queries that can cross-reference different aspects of your system. You can create scheduled queries, generate reports, and even integrate OSQuery's output into other monitoring tools for a comprehensive view of your system's health and security.
Take a look at OSQuery's documentation for more examples of how you can use it to keep an eye on things on your systems.
Imagine this familiar scenario: you've worked in retail or food service and faced the inevitable duty of cleaning the bathroom. Doing janitor work might not have been what you hoped to do, but it's a task that undeniably needs doing.
There are times in your career when you'll be asked or expected to take on tasks that are outside the scope of your job description. This is especially true in smaller companies or startups, where roles aren't always clearly defined, and there are fewer people to get things done.
There are endless stories of people who've worked countless hours for multiple years only to be dismissed without notice, so it's natural to think, "Well, what's the point of going above and beyond if I'm disposable." You should approach additional tasks with a mindset of mutual benefit. Think of it as a trade-off: in exchange for your flexibility and willingness to go beyond your job scope, you'll gain something in return, like new skills, professional growth, or new connections. That last part is the most significant; doing things to help out your peers builds stronger bonds that go well beyond your current job.
Here are a few situations where you might get asked to go above and beyond your responsibilities and how you and others will benefit:
Fixing bugs in legacy code is not the most glamorous or creative part of the job, but it's essential. As a software developer, you solve problems using code, which doesn't always mean working on the new shiny features. Tackling bugs or spelunking in legacy code to fix "paper cuts" customers experience demonstrates that you understand the software's importance to the business it serves.
If you're asked to fix some bugs, use it as an opportunity to learn more about how the software works. If you notice nobody's paying down the technical debt, take the opportunity to step up. Either way, you'll demonstrate that you're a team player who understands the value of a stable and reliable product.
Documentation is often an afterthought, but it's part of your software's user interface. To adopt your software, people need to understand how it works and how to use it. They will get that from clear, concise, and technically correct documentation. When you willingly contribute to documentation, you're seen as someone who wants to create a better product with a great experience. You're thinking beyond just the code. And documentation doesn't just have to be the customer-facing pieces. You can document your team's processes and procedures. Good internal documentation helps new team members get up to speed quickly and ensures each team member has a consistent and unified understanding of how things work. Take the time to write down your team's rituals, processes, and norms, and you can have an outsized impact.
Sometimes, you'll be asked to support other teams to accomplish their goals. Some of these opportunities could be exciting, like helping out with a booth at a conference or jumping on a support call to help a sales associate close a deal. But sometimes, the tasks will be pretty menial, like helping clean up after your company hosted an event, calling venues to book a reservation, or packing boxes of swag to send to a conference. Sometimes, people just need you to move furniture or boxes, and there's nobody else to do it. Like fixing bugs or writing docs, these tasks let you demonstrate versatility and your willingness to pitch in to help others.
These things demonstrate to your manager and others that you can have an organization-wide impact.
While stepping outside your job description can be a growth opportunity, it should not come at the cost of your primary responsibilities or personal well-being. The goal is to strike a balance where you can contribute meaningfully without being overloaded or exploited. There's a thin line between being helpful and being taken advantage of.
Here are some steps you can take to guard your time and protect yourself:
How you respond to these small and sometimes thankless chores can significantly impact how others perceive and value you as you progress on your professional journey. Even if you don't see immediate rewards from your current company, people do notice. A former peer at your current job might be on the hiring panel at your next one. You'll want them to remember you as the helpful teammate who pitches in when needed, not the person who thinks some tasks are beneath them.
You're not just working for your current employer; you're building and maintaining a career. If your current company won't recognize your effort, look for a new job that will. Having a reputation as a helpful person makes that job search easier.
Need more proof? Think Again, by Adam Grant, explores the idea that people with a giving mindset have a much more successful long-term career. It's packed with research and stories that back up this idea. It's worth your time.
Your willingness to handle even the most mundane tasks with grace and dedication strongly indicates potential leadership and a resilient, proactive work ethic.
Clean the bathrooms.
Before moving on, here are a couple of activities for you to try. The first is a thought exercise, and the second is a little exploration of OSQuery.
--csv
switch. You can export results from OSQuery into a file you can open in Excel or Google Sheets. Capture the list of processes and their memory usage to a CSV file.As always, thanks for reading. See you next month.
I'd love to talk with you about this newsletter on Mastodon, Twitter, or LinkedIn. Let's connect!
Please support this newsletter and my work by encouraging others to subscribe or by buying a friend a copy of Exercises for Programmers, Small, Sharp Software Tools, or any of my other books.