Pros and Cons of Working as a Software Engineer
Tags: webdev, discuss, career, programming
Published: 2023-06-23 07:38:37

Hey, all. 🚀

So I’ve been working in the IT industry for four and a half years. I worked on a dozen different projects (ten different clients) and thought about sharing the pros and cons of being a Software Engineer by explaining companies and clients/employers that you could be working with/for. This is my experience as well as the experience of my close colleagues, not a generalization.

## Types of Companies
### Corporate

**Pros:**

**Professional Development Opportunities:** Large corporations often have well-structured training programs, mentorship initiatives, and career development resources in place. These resources can help employees enhance their skills, acquire new knowledge, and advance their careers within the organization.

**Networking and Collaboration:** Corporate environments offer opportunities for networking and collaboration with a diverse group of professionals. Working alongside experienced colleagues from different departments and backgrounds can broaden your perspective, foster innovation, and provide valuable connections for future career growth.

**Competitive Compensation and Benefits:** Many corporate environments offer competitive salary packages and comprehensive benefits, including health insurance, retirement plans, paid time off, lazy bags, PS5, gym membership, and various employee perks.

**Established Processes and Resources:** Large corporations often have well-established processes, tools, and resources in place to support employees in their work.

**Cons:**

**Slow Career Advancement:** In a corporate setting, career advancement may be slower than in smaller, more agile organizations. Promotion and improvement may be subject to strict criteria, seniority-based systems, or limited availability of higher-level positions. This can lead to frustration for ambitious individuals seeking rapid growth or those who feel their contributions are not adequately recognized or rewarded.

**Lack of Work-Life Balance:** Even though you are in a lazy bag playing with PS5 during your break from work, many times you feel that you lack work-life balance. Depending on the project/client, you may experience a lot of pressure to meet deadlines, populate timesheets, do bureaucratic chores, or work overtime.

**Limited Autonomy and Decision-Making Authority:** Corporate environments often have a top-down decision-making structure, where key decisions are made by higher-level executives. (e.g. I waited almost 2 months for the line Manager to find out about the issue/problem I reported).

### Outsourcing
**Pros:**

**Diverse and Challenging Projects:** Working in an outsourcing company exposes employees to a wide range of projects across different industries, technologies, and client requirements.

**Global Collaboration:** Outsourcing companies often have a global presence and work with clients from different countries. This enables employees to collaborate with multicultural teams, learn from diverse perspectives, and gain cross-cultural communication skills.

**Exposure to Best Practices:** As outsourcing companies serve multiple clients, they tend to follow industry best practices and standards. Working in such an environment exposes employees to efficient project management methodologies, quality assurance processes, and cutting-edge technologies.

**Career Growth and Advancement:** Outsourcing companies often have structured career paths, performance evaluation systems, and opportunities for advancement. Employees can progress through different levels of responsibility and seniority based on their skills, experience, and performance.

**Cons:**

**Job Insecurity and Uncertainty:** Outsourcing companies often rely on client contracts for project engagements. This can introduce a level of job insecurity as projects may come to an end, or client priorities may change, affecting the availability of work.

**Variable Workload and Stress:** Working in an outsourcing company can involve handling multiple projects simultaneously, each with its own timelines and client demands. Balancing competing priorities and managing tight deadlines can lead to high-pressure situations and increased stress levels. (This also depends on the client type)

**Limited Earning Opportunities:** Usually, the outsourcing company takes a substantial cut from the paycheck. It is not unusual — and definitely cruel — for the employees to take as low as 5% of the actual money they made for the company. (Do not generalize this, it depends on various factors, country, country stability, company culture, etc…)

**Limited Influence on Project Decisions:** In an outsourcing company, project decisions are often made by clients or project managers, limiting the influence and autonomy of individual employees. This can result in less control over project direction, decision-making processes, and creative freedom. (This one is questionable and it mainly depends on the client type.)

### StartUp
**Pros:**

**Impact and Influence:** Startups offer employees the opportunity to have a significant impact and influence on the company’s growth and success. With smaller teams and flatter hierarchies, individuals often have more autonomy, decision-making power, and the ability to shape the direction of the company.

**Innovation and Creativity:** Startups are known for their innovative and creative approaches to problem-solving. They often encourage and foster an entrepreneurial mindset, allowing employees to think outside the box, experiment with new ideas, and contribute to groundbreaking solutions.

**Fast-Paced and Dynamic Environment:** Startups thrive in a fast-paced and dynamic environment. This can be exhilarating for individuals who enjoy challenges and continuous learning.
Opportunities for Learning and Development: Startups provide excellent opportunities for learning and development. With limited resources, employees are often required to stretch their skill sets and learn new things quickly.

**Equity and Financial Reward:** In some cases, startups offer employees the opportunity to receive equity in the company. This can be a significant financial upside if the company experiences growth and success.

**Cons:**

**Uncertainty and Risk:** The project might die tomorrow, and money could run out tomorrow for various reasons. In general, startups operate in a highly volatile and uncertain business environment. There is always a risk of failure or closure, especially in the early stages.

**Long Working Hours:** Startups often require long working hours and a high level of commitment. The intense workload and fast-paced nature of the work can lead to a poor work-life balance, especially in situations where resources are limited and deadlines are tight.

**Limited Resources and Support:** Startups typically operate with limited resources, including financial, operational, and human resources.

**Role Ambiguity and Multiple Responsibilities:** Startups often have small teams, which means employees may need to take on multiple roles and responsibilities beyond their primary expertise. This can lead to role ambiguity, stretched capacities, and a lack of specialization.

**Lack of Established Processes and Structure:** Startups are typically in the early stages of development, which means they may lack well-established processes, systems, and organizational structures.

## Types of Clients

### Corporate
Obviously — but not as a rule — corporate client (employer) comes with different perks that we mentioned in the Corporate Company section, the best one being development opportunities and networking (knowledge sharing). You have access to senior colleagues with a lot of experience and knowledge, all major and necessary courses, professional training, and similar. There is also — my personal opinion and experience — one major thing that is a huge drawback of working for such a client/employer, and that is that everything is VERY VERY slow. Slow onboarding, slow decisions, slow responses from the people you need, slow promoting. The corporate lather is very high, and it takes time to climb up. Overnight success is virtually impossible.

### Start-Up
Comes with the perks of creativity, a dynamic environment, faster learning and tech adoption, and the possibility to make some money. Of course, the uncertainty about the future of the project is the biggest drawback. Money can run out tomorrow, and tomorrow you could be out of work — in the worst cases the client could even postpone paying you the previous month(s).

### Government
It is usually the mix of the two above, with the tendency to lean more toward the Corporate side when it comes to requirements but more to the StartUp side when it comes to certainty, and clarity.

### A Start-Up that adopted Corporate culture
Probably the one you should avoid the most. There is a delay in communication and decision-making when it comes to clarifying what is needed and what is right to do at a certain point of development. There is pressure to meet VERY VERY tight deadlines. There is urgency when it comes to delivery, and delay when it comes to clarifying features/decisions/intentions. Miscommunications often arise regarding decision-making authority and responsibility. (e.g. Project Manager deciding or having a strong opinion on how long should the developer work on the task) Everything is most of the time urgent and important. Team structure changes a lot. You are following standards (design, architecture, etc…) half the time, and the other half you listen to the requirements and implement them blindly. Initial code and architecture quality are usually not among the top two requirements.

## In General
Pros and Cons of Being a Software Engineer

**Pros:**

- Lucrative Salaries
- Continuous Learning
- Abundance of Opportunities
- Problem-solving
- Creativity
- Social impact
- Coffee

**Cons:**

- Feature Miscommunication
- Client and Stakeholder Management
- Volatile Technology Landscape

Ultimately, the pros and cons of working as a software engineer will vary depending on individual preferences, professional aspirations, personal and professional habits, and the specific work environment. By carefully weighing these factors, individuals can make informed decisions about pursuing a career in software engineering.

**Important skills:**

- Learn how to learn
- Learn how to communicate on different levels
- Offer solutions, do not ask questions
- Evaluate clients/employers as much as they evaluate you
- Know your value
- Know the worth of your time
- Manage time
- Manage people