🎓 Work on projects you aspire towards; Design Pattern of the Day: Adapter
Grow faster than you would only working on what you're given; how the Adapter pattern creates cleaner code that's faster to implement.
Work on projects you aspire towards.
Working on the projects handed to you from managers, leads, or other leaders on your team is normal and valuable. The problem is, it’s valuable more to the company than it is to you.
Most work handed to you will be within your assumed current skillset. As a junior engineer, you’ll be given more basic tasks. As a mid-level, you’ll be given features that are more complex, limited in scope.
In order to make the biggest leaps in knowledge and experience, you need to work on things that are beyond your current skillset. As you demonstrate growth, you’ll naturally be given more responsibility and opportunity to influence your team and organization.
Here are 6 actionable ways to position yourself in more aspirational projects and situations:
Give an impression of trust and added value. You may have all the skills and qualifications to receive more complex projects, but you won’t get them if the team doesn’t trust you. Improve your standing by participating in meetings, turning your camera on, helping your teammates, and overall demonstrating you are a valuable part of the team. It doesn’t mean overtime or extra work, it means not hiding or giving your team reasons to question your abilities.
Ask or volunteer for the work. Let your manager or lead know you’re interested in pursuing more difficult and complex work to gain experience. Sometimes all it takes to get more difficult tasks is to make others aware that you want them. If one is open for the taking already, volunteer to own it.
Surround yourself with people already there. Direct ownership of a more complex task isn’t the only way to gain experience. Ask your more senior team members if you can watch them work via shadowing or pair programming. Have them think out loud so you can hear their mindset and processes. Ask questions any time you don’t understand something – these exercises are about learning, not pride.
Accept opportunities that feel beyond your skillset. Don’t let fear, uncertainty, or doubt keep you from excelling. Stagnation is an enemy in your journey to Senior, and avoiding learning opportunities will delay your progress. You won’t regret pushing outside of your comfort zone.
Own an ugly problem. People – yourself included – naturally want to do more interesting and impactful things. But tech products are riddled with unsexy issues in the backlog. By taking initiative, owning, and fixing unsexy problems, you’ll pick up more experience and position yourself as someone that can be trusted. Remember that the key to trust is to deliver whatever you own, ugly or otherwise.
Ask for help, and admit defeat if necessary. Part of taking on more complex projects is the risk of failure. Something, at some point in your career, will be too much for you to complete on your own. Don’t get down about it! First, ask for help when you get stuck. (You should do that at every phase of your career, but it’s especially important when pushing your boundaries.) If all else fails, let the project be taken over by someone more qualified. Your team will help you recognize when this is needed. At which point you can reflect on what you learned, where you got stuck so you can focus on getting back to that point, and maybe continue to pair with whomever takes it over.
Working on projects you aspire to is very much within your grasp. Be confident in your ability to learn, vocal in you desire, proactive in your ownership, and humble in your success or failure. 🍾
Design Pattern of the Day: Adapter
Have you ever tried to charge your phone in a foreign country and found your plug didn’t fit in the outlet?
Have you reached for a dongle so you could plug your USB-A device into a USB-C port on your shiny new laptop?
The Adapter Pattern in object-oriented programming (OOP) serves the exact same purpose in your code, acting as a link or bridge between two incompatible interfaces.
One use case is adding a third-party library to your application. Its interface may not be directly compatible with your domain code. Perhaps your data is already in XML format, but the library prefers JSON. Instead of modifying the library or creating your own custom integration, you can add an Adapter layer in between that performs the necessary data conversion.
Benefits of the Adapter pattern:
🟢 Quicker development – only create the layer in between two existing interfaces
🟢 Clean code – single responsibility lets classes focus on only one area
🟢 Flexibility – adapters can be swapped as long as interfaces stay the same
🟢 Testability – the adapter layer can be tested and swapped independently
Potential downsides:
🔴 More code – sometimes it’s easier to just change your existing interfaces
🔴 Slow – implementations may have performance impacts
Further Learning
Adapter Pattern @ Refactoring.guru
PentaLog discusses more potential downside nuances, which are good to consider (as always with software, It Depends!)
LinkedIn Advice: How do you use the adapter pattern to integrate legacy or incompatible systems?
Happenings & Findings
Articles
Postman’s 2023 State of the API report is full of interesting data
Shekhar wrote an analysis of GitLab’s Postgres schema design (2022)
Technologies
Netflix released SafeTest, a novel approach to front-end testing
Knock provides notifications as a service, great for mobile apps and more
Jobs
Find your next opportunity through Cupalo, an ethical, above-the-table staffing partner who treats you like a real person. (Not sponsored! Lauren is a wonderful founder friend from an entrepreneur group. She’ll take great care of you!)
How’s BASE doing?
Newsletter subscribers: 47 (+176%)
Newsletter open rate: 46.27% (+3.3%)
LinkedIn followers: 63 (+425%)
Twitter followers: 4 (+33%)
While the numbers aren’t specifically impressive, the growth is! 📈
I posted on my personal LinkedIn about BASE and asked for shares and referrals, and it was by far my most widely-seen post on the platform. Thank you to those who shared and interacted, and welcome new subscribers!
What I’m Working On
I’m currently building Stay Woven, a personal relationship manager mobile app.
I’ve never built a mobile app, so it’s an exciting new tech adventure! The stack I’m using is React Native with a Firebase backend.
I’m working on multiple products in 2024 on my journey to becoming a successful entrepreneur and business owner. Follow along!
Coming Up
In the next edition, I’ll cover:
How to use Slack effectively for more productivity and fewer distractions
How to automate dependency updates to reduce tech debt
Thank you for reading!
Come chat with me on LinkedIn, Twitter, or hit reply and let me know how I can help with your engineering career.
Aken 💙