Product vs. Outsourcing: Which path is right for your software engineering career?
And what mindset you need to prepare before joining.
Hello, how was your week?
This week’s newsletter will be a bit different. It will be written in English because I want to challenge myself and push things a bit further for the topic.
I’m happy to share that Growth Engineer Journal (this newsletter) has reached over 250 subscriptions! It’s a huge motivation for me, as I can see that my sharing brings value to you, my readers.
Thank you so much for you support! 🙏🏻 🙏🏻 🙏🏻
⭐️ In this article, we will discuss on:
Pros and cons of product and outsourcing companies
Does the comparison matter?
How to know which one is right for your software engineer career?
Let’s dive in! 💪🏻
👋 Hey, I'm Bryant (Dũng), welcome to my weekly newsletter - Growth Engineering Journal, where I share about Engineering Growth, personal development, and the cool things I learned throughout the years of working in my career.😜
There are many things that people love to put into never-ending comparisons. We’ve got Ronaldo vs. Messi, Mac or Windows, Nikon or Canon… the list could go on for hundreds of items if you continue.
Throughout my career, the topic of “Product or Outsourcing companies” has crossed my mind several times. Interestingly, my perspectives have somehow also changed over time on this matter.
To be clear, I’ve been working for an outsourcing company for more than eight years. Prior to that, I had spent 2-3 years working for product-based and service-based companies.
So, I believe I can provide some valid points if you, as a software engineer, encounter this question and want to find the answer to navigate your career.
🏢 Product-based companies
This type of company focus on developing, marketing, and selling products, directly to end-users or businesses.
Some of the most popular big tech you can name here: Meta, Microsoft, Apple, Amazon, Adobe, Nexflit, Google… which you can call by acronym such as FAANG, MAANG, MAATMAN….
✨Pros:
Working in a product-based software company like Google, Apple, or Microsoft means using the latest technologies and working on exciting projects such as (AI, blockchain, ML…).
You can have chances to influence product direction and user experience, giving them a sense of ownership.
Achievements in these companies often get a lot of attention, which can lead to recognition and career growth.
Early in my career, I joined a Singaporean startup focused on a restaurant ordering system. At that time, the concept was straightforward: you order the food, you pay, and the kitchen prepares the dishes. The team was small, allowing me to directly contribute enhancements to the final product and see it being used in real scenarios. I felt quite proud because what we developed was actually running and enabling the company to conduct its business.
⚠️ Cons:
You will feel the pressure to deliver top-quality products when working in a big tech or a fast-paced startup. This can make the work environment intense and the expectations high.
Sometimes, creating big products often takes a long time because there's a big focus on thorough testing and getting everything just right, that’s make the development cycle become longer and longer.
People working in these companies might find that their work doesn't vary much because they're focused on specific products. If the company not big enough, soon you will feel bored with what the company is building and want to explore something new.
Returning to the story of the startup I joined, the system was unstable, and at that time, names like AWS and Azure were still unfamiliar in the market. We only used on-premises servers, so I sometimes spent entire weekends trying to fix and deploy updates directly to production for the client to use. Looking back, the tight deadlines, numerous incidents, and lack of proper planning led me to decide to say goodbye to that company. 😅 But I also learn a lot and get some initial concepts of “DevOps” to help me have a foundation in later company.
🧠 Mindset:
Working in a product-based software company requires a long-term focus, taking responsibility for the product's success, and constantly improving it. You also need to think about customers' needs and ensure the product meets those needs, creating something users love and rely on.
🏢Outsourcing companies
Outsourcing companies provide software development services to other businesses. These companies take on projects from clients who need additional resources or expertise.
Some big players in this category you can name on: Infosys, TCS, Accenture, Wipro…
✨Pros:
Employees in outsourcing companies gain exposure to a broad range of industries and technologies, building a versatile skill set through various client projects.
Collaborating with international teams and clients enhances cultural understanding and communication skills, making professionals more adaptable in global contexts.
The fast-paced and varied nature of projects allows employees to quickly acquire new skills and knowledge.
Throughout my journey, I have had the chance to work for one of the largest video streaming services in the USA, or another time I find myself was developing an mobile application for an energy corporation from Europe. The other time, I was selected to work in copilot project for an airlines company. These diverse experiences, the skill sets I acquired, and the exposure to international environments have sharpened my abilities and deepened my understanding of how the world operates.
⚠️ Cons:
Outsourcing work can involve tight deadlines and fluctuating client expectations, which may lead to high-pressure situations and varying project scopes.
Development team might have less influence over project direction and ownership of the final product, as the focus is often on meeting client specifications and requirements.
The constant shift between different projects can impact continuity learning and hinder the development of deep expertise in a specific area.
When working with people around the world, especially with other big-tech companies, you must follow all the rules and policies meticulously. I once had the chance to work for a Japanese client who had already designed all the logic and even broken it down into functions in the documentation. My job was then to simply take the pseudocode and transform it into actual code with the correct syntax to run.
🧠 Mindset:
In order to be successful in an outsourcing software company, you need to be adaptable, ready to handle different projects and changing requirements. Being client-focused is crucial, as satisfying the client's needs is a top priority. Efficiency is also important, ensuring that you complete tasks quickly and effectively. Having a broad knowledge base helps you tackle various projects and understand different technologies.
🤔 Does it really matter to compare ?
Like the comparison between Messi and Ronaldo, we will never find the clear winner. What if they both play under 1 team and each will be in charge for different scope of work on the field. That sure will bring higher chance for the team to win.
Same here for product and outsourcing companies, they both have a complementary roles and mutual benefit. Both types of companies benefit from working together, leveraging each other's strengths. This partnership enables quicker, more efficient product development and market delivery. Clients will receive end-to-end solutions, combining innovative products and effective implementation and support.
For example, Microsoft have partnership with outsourcing companies to:
Outsources the customer support
Boost resources for a major feature update
Provide domain expert to implement Microsoft’s client
Create a comprehensive solution, with Microsoft providing the software, cloud platform and an outsourcing company offering implementation, ongoing support and maintenance.
Where should we go as a software engineer?
Here are some factors I think you can consider in case you want a job hopping:
Research the company culture: product companies may offer stability growth and a clear career progression, while outsourcing companies might provide more varied experiences and quicker role changes.
Get feedbacks, talk to mentors or peers, especially if you have friends that works in both type of companies, to get different perspective and actual view on how’s each company works.
Gain firsthand experience through freelance work, job shadowing, and targeted learning. By this you will somehow understand in a deeper context.
Finally, give yourself a chance to experience different environments . It’s not just the type of company but the challenges we face and resolve that make us better software engineers.
🏁 Summary
What makes a good company good is not because they do outsourcing or developed wonderful product. It’s more about the people, the culture and more importantly, it fits your goal. If you don’t know what you want or what you want to become in future, joining either outsourcing or product company doesn’t make any difference.
📢 Weekly Shoutouts:
On Planning and Winning the Week by Michał Poczwardowski.
How Spotify maintains team autonomy at scale by Abi Noda.
Career Progression For Software Engineers: How To Seize Opportunities (Part 2) by Samuel Kollát.
The Art of Execution: Making Things Happen as a Data Leader by SeattleDataGuy.
Gác lại tranh cãi và học về hành trình sự nghiệp của anh Hiếu TV by Trí Võ.
✌️That's it for today
That's it for today! I'd love to hear from my readers (and if you've made it this far, you're one of the bravest people 😁). Feel free to leave a comment, I'll definitely respond!
See you in the next article 🤖!
Bryant
As a PO, i usually had a negative bias towards outsourcing, as I consider they educate such a hard-to-fix mindsets towards product, creating endless debates with engineers who struggle to switch when working with product environment.
This article helps me understand better the values an enginneer can learn working with outsource environment. The analogy Messi vs Ronaldo helps!
My question to you: Do you think it's right that a big part of our fresh engineers work for outsource companies right DURING college? Does it help to educate young engineer to work for outsource company first, and then change their mindset later when they decide to switch? And is it easy to do so?
My analogy to this matter is like how Vietnamese learn how to drive. Majority of cars nowadays are automatic, but our test center (VIETNAM) always taught fresh drivers to manual car first, and then change their mindset later (this is changing now, but not much). I am one of the few who drove automatic car straight, and never regret. I only heard people mistake wrong footing in Vietnam, not in US where they taught use one foot only for each pedal
Of course you can teach both, but why not start with the easy one? Or in this case, the right one (don't know which, but there's more than 1 path and the default path isn't sometimes the best part - lesson from all the bad UX)