Commit #9: Mastering macOS keyboard for better efficiency

In the past few years, I have seen a rise in MacBook Pro usage in tech companies, including in Jakarta. Although pricy, MBPs are one of the primary go-to machines for tech folks around to world. The well-known butterfly-switch issues since 2016 don’t seem to prevent people from buying MBPs, which thankfully fixed for good in the recent new 16″ model. In my opinion, one of the main reasons for this rise is the productivity value it brings along with the macOS.

In the software engineering field, macOS has many things to love. It’s UNIX-based, which is almost similar to the Linux environment used for most server-side services. For mobile app engineers like me, macOS allows us to develop applications for both iOS and Android. Not to mention the OS integration with the trackpads, which unrivaled in the laptop realm – its buttery-smooth experience convinced several designer friends of mine to work mostly using them. Nevertheless, I found that the senior engineers I worked with use their keyboard more than their trackpads. They seemed to be able to do things way faster than others due to mastering their keyboards.

Throughout the years, I’ve tried to reduce my trackpad usage and use more keyboard for work, which I find to be efficient. I wrote this based on my experience, so you might find this post to be opinionated. Still, I hope you could draw some benefits that could increase your work efficiency.

1. Use macOS’ Spotlight

Most Indonesians (including me) grew up using a Windows machine as our daily driver. So on our first time we got our hands on a Mac, we’ll be looking for the “Programs” folder using our mouse and click the application icon to run them.

start_win1
Windows XP’s Start Menu. I grew up seeing this menu a lot of times. Image taken from OpenDNS.

While we can run applications the same way in macOS, there’s a quicker way to do it: using macOS’ Spotlight. All we need to do is press the Command + Space key, type the application name, and then press the Return key (or Enter in other keyboard layouts).

Screen Shot 2020-01-06 at 20.27.33
A sample screenshot on how to open applications using Spotlight in macOS.

On the screenshot above, I only typed “xc” in the Spotlight, and it shows the most-used application with a matching prefix: Xcode. All I need to do next is pressing the Return key to open the Xcode.

Besides opening applications, macOS’ Spotlight also provides a lot of nifty features, e.g.:

  1. Opening a file based on filename,
  2. Calculating a simple conversion, e.g., “1000 USD to IDR” or “70 F to C”, or
  3. Searching a word definition in the thesaurus or dictionary, e.g., “hitherto.”

2. Use a third-party window manager

Coming from the Windows environment, I missed the Windows Aero’s Windows + Arrow keys combination to tidy up my application windows (pun intended). When I started using OSX Maverick, my friend suggested me to use SizeUp. The site page says that its the “missing window manager” for macOS, and it’s not an exaggeration.

With a simple combo of Control + Option + Command + Arrow keys, you could arrange your windows with ease! I find this approach is way more efficient than macOS Split View feature. For multi-monitor users, SizeUp could move the currently active window to another monitor using the Control + Option + Left or Right arrow keys. What’s not to love?

You can use SizeUp for free due to its unlimited demo. Still, it shows a pop-up periodically until you bought their license. If you wanted a free open source alternative, check out Spectacle. Be warned, though; the source code is not maintained anymore.

Continue reading “Commit #9: Mastering macOS keyboard for better efficiency”

Commit #8: An introvert’s take on mentoring engineers

Do you prefer reading books or listening to music over partying for your “rest time”? Or planning deliberately instead of taking spontaneous ideas when speaking in the front of a crowd? Are you feeling drained after interacting with a lot of new acquaintances, wanting to retreat? If your answer is yes, there’s a big chance you’re an introvert (or ambivert) like me.

Us introverts have to rest after a certain amount of social interaction. It doesn’t mean that we hate people… our brain has different wirings on how to recharge ourselves. Due to my introversion, I tend to evade unnecessary social interactions since young, which inhibited my social skills. Growing up, I realized their importance and ended up analyzing my extroverted friends to catch up. (Yeah, that sounds nerdy, I know.)

I learned that social interaction takes different forms and contexts. In the professional setup, these interactions come in various kinds – discussing in a meeting, writing technical documentation, listening to a person, and giving proper response. Out of all of them, I took an interest in a particular interaction: mentoring. And I want to share what I learned about it as an introvert in this post.

Why mentoring?

As humans, I believe most of us learn from experiences. A mistake from the past, for example, provides reasons and steps to prevent a similar outcome in the future. Thankfully, we don’t always need to learn these lessons from firsthand experience. Reading one’s experience through books is a great example. Another alternative for reading is (surprise, surprise) mentoring!

A proper mentoring could significantly accelerate the mentee’s growth. In the process, a mentor tailors lessons based on the mentee’s needs. In addition to the lessons, they also provide a living example for the mentees – an advantage which reading lacks. In my opinion, nothing increases confidence more than someone who models on how to do something properly.

In addition to the mentee’s growth, the mentoring process forces the mentor to grow, too. Besides the required accountability from “practicing what you preach,” the mentees could also drive the mentors out of their comfort zones through their questions. I experienced these on my career growth, and I’m thankful for it.

From a business perspective, mentoring provides a long-term value. On The Effective Engineer, Edmond Lau states that investing in your team’s growth is one of many high-leverage activities, which will multiply the given effort as a result. Mentoring is one of them since it will help the mentees to grow and take part in the mentor’s responsibilities. Following the mentees’ growth, the mentors could delegate their tasks and tackle more challenging responsibilities.

Last but not least, I have seen the impact on both being a mentee and a mentor to career and personal growth. My personal growth is the main reason why an introvert like me bother writing a post about mentoring. It also helped me to push my comfort zone a little bit wider every time I get demotivated as a mentor.

Make a one-on-one routine

As an introvert, I reluctantly start social interaction with others. My comfort zone as a junior engineer was working on my code while listening to music or reading through technical blogs. Sure, I could speak in front of the public or explaining in-depth technical details in a one-on-one setting, but those events require enough preparation and happen infrequently. This comfort zone was blasted when I got promoted and requested by my manager to mentor junior engineers two years ago.

Based on my mentoring experience in college, I know that I need to ensure my mentee’s growth by checking on them periodically. The context is slightly different, though – I still need to deliver my day-to-day job! Left alone, I might ignore my mentees due to my introversion and use my workload as an excuse.

To battle my comfort zone, I decided to schedule my mentoring sessions. I sent a periodical schedule for each mentee in my work calendar. Having it on the calendar helps me to plan my day, leaving me with no room for an excuse. It also helps to remind the mentees to allocate time for the sessions, too! On top of that, it prevents others from disturbing us during the allotted time.

When having a one-on-one session, it’s important to remember that your mentee is human. Your mentee has a personal life, and it affects their performance in the workplace. This fact has driven me to ask for their well-being at the start of a session. Is there something that they’re concerned about outside of work? Or perhaps a great experience from last weekend? The answer could be anything – A typical “everything’s fine,” a passionately-told story, or an in-depth discussion. Your mentee might be reluctant to open up on the first few sessions, which is normal. Try to open up to them first. Share your experience or thoughts when they share theirs, and deliver it in a positive language. Offer help when possible.

After discussing their concerns outside of work, ask for the work-related ones. Should they raise technical questions, try your best to ask their thought process first before giving the answers. If it’s outside of your forte, refer to others who might be able to help them. Don’t hesitate to ask them to explain the solution when they solved it – and appreciate them when you learned something new!

There are times when your mentee’s concerns related to the workplace. Listen to them well, since you are their go-to person to raise their concerns to the management. If you’re not senior enough to offer a helping hand,  you could raise it to your higher-ups, too. It’s also a good chance for you to impart cultural company values or lessons – e.g., how to tackle an over-promised feature.

Last but not least, ask for their technical growth. What have they learned since the previous session? You could improve this by assigning a specific material or book to be discussed, which is even better if it applies to their day-to-day work. For me, I always assign new hires to read the Clean Code book for starters and discuss each chapter in each session.

Remember to take notes on every session, based on the date. Writing down their concerns and learned lessons will help you to track their growth. It will also help you to follow them up on future sessions. Those notes could also serve as evidence to the management during their periodical performance review.

Continue reading “Commit #8: An introvert’s take on mentoring engineers”

Commit #4 : My top seven clean code practices


Hi there, fellow readers! It’s been more than a month from my latest commit, where I promised this post will be published a week after 😅 Sorry for the delay! I got my hands full for a month 😓

As I said before, the Clean Code book got tons of useful practices. In this post, I want to show you how I applied a few of them in my code – which mostly is Objective-C, hence the examples on this post 😉 I believe I don’t always get it right either, so I’d love to hear from you if I got something wrong on how I applied it! 😁

So, here’s the top seven clean code practices I mostly use! 😆

Continue reading “Commit #4 : My top seven clean code practices”

Commit #3 : Clean code matters

*dusting blog*

*coughs*

Hi there! It’s been months since my latest post commit here, work life sure can be tight 😅  After two tutorials, let’s try some different type of commit, shall we? This time, I want to share about a book that changed the way how I code.

It was on my early days in Ice House. Some of our higher-ups just came back from US and brought technical books for us. I was reading a copy of  The Pragmatic Programmer at that time, so I didn’t really looked at the new books. After a few days, Ridhwan handed a copy of Clean Code to me, and said this:

Check this book out, do. My code structure changed a lot, even only by reading a few chapter of it.

I took it with a so-so feeling. I was reading the Pragmatic Programmer, and that book made me feel worthless. It was full of best practices that I haven’t done (yet), so full of it that I was confused where should I begin with. I was unsure whether I can take something practical out of Clean Code. I was afraid (duh) that it will make me feel worthless again. Yet, I ended up reading it. It was recommended by the prodigy*, so… why not?

I read the introduction (it suggests amazing measurement for code quality) and the first chapter, and BAM – these paragraphs pops out:

Continue reading “Commit #3 : Clean code matters”