Một người tốt nghiệp khoa học máy tính viết cho tôi: “Em mới tốt nghiệp và có hai đề nghị việc làm. Em muốn biết liệu công ti lớn hay nhỏ cho em ưu thế tốt nhất cho nghề của em. Xin thầy lời khuyên.”

Đáp: Khi xem xét công ti để làm việc, bạn phải nhìn vào vài yếu tố thay vì chỉ kích cỡ của công ti. Bạn sẽ cần biết chiều hướng kinh doanh của công ti để xác định liệu nó có khớp với mục đích nghề nghiệp của bạn không. Bạn cũng cần biết về những người bạn làm việc ở đấy nữa.

Công ti nhỏ (10 tới 50 người) thường không ổn định nhưng có thể tăng trưởng nhanh. Mặc dầu công ti nhỏ có xu hướng rủi ro nhưng nó cũng có khả năng được đền đáp cao hơn. (Tưởng tượng rằng bạn làm việc cho Google hay Facebook khi họ vẫn còn nhỏ). Nếu bạn làm việc cho công ti nhỏ, bạn có thể phải làm mọi thứ cho nên bạn sẽ phải học nhanh. Công việc là thánh thức và giờ làm việc không được xác định rõ ràng cho nên bạn có thể phải làm việc nhiều giờ để cho việc làm được thực hiện. Trong công ti nhỏ, phần lớn các dự án đều nhỏ cho nên họ thường dùng cách tiếp cận Agile (Scrum hay lập trình cực đoan). Người phát triển phần mềm, những người thích làm việc cho công ti nhỏ, điển hình có tính bạn bè và có động cơ. Họ thích làm việc theo tổ, đi cùng nhau, chơi cùng nhau và hội tụ vào đóng góp cho mục đích tăng trưởng công ti. Những công nhân này thích xây dựng phần mềm và tận hưởng thách thức cũng như tình bạn con người, những người chia sẻ cùng mối quan tâm. Nếu công ti là mới khởi nghiệp, bạn có thể có quyền lợi thêm như tuỳ chọn cổ phần.

Công ti cỡ vừa (50 – 500 người) hay công ti lớn (500 – 1000 người) là ổn định hơn. Kinh doanh của họ được xác định rõ và được tổ chức. Các dự án của họ có thể nhỏ (5 – 10 người) hay lớn (20 – 50 người) cho nên phương pháp của họ biến thiên từ agile tới theo kế hoạch truyền thống. Nếu bạn làm việc cho công ti vừa hay lớn, bạn có thể được đặt vào một khu vực chức năng đặc biệt vì công việc thường được tổ chức theo chức năng dựa trên kĩ năng như Kiểm thử, Phát triển, Đảm bảo chất lượng, hay Mạng v.v. Bạn sẽ được đào tạo để tuân theo qui trình và thủ tục của công ti. Người phát triển phần mềm, người làm việc trong các công ti lớn có xu hướng tuân theo qui trình có kỉ luật, nghề nghiệp của họ tăng trưởng theo thời gian khi họ chuyển từ khu vực chức năng này sang khu vực khác. Các công ti vừa hay lớn có những quyền lợi tốt, giờ làm việc được xác định. Nhiều người phát triển ưa thích làm việc cho các công ti lớn hơn cứ như có gia đình cho nên họ thích sự nhất quán và ổn định.

Bên cạnh kích cỡ của công ti, bạn có thể cần nhìn vào kinh doanh của công ti. Các công ti dựa trên phần mềm như sản phẩm của họ hay dựa vào việc cung cấp phần mềm như dịch vụ thường hội tụ vào công nghệ mới nhất. Để thăng tiến nghề nghiệp của bạn trong kiểu công ti này, bạn sẽ cần liên tục học những điều mới để nâng cấp kĩ năng của bạn. Bằng việc có những kĩ năng mới nhất, bạn có thể đòi hỏi lương cao hơn. Các công ti khác nơi kinh doanh của họ là cái gì đó khác hơn phần mềm nhưng dùng phần mềm để hỗ trợ cho kinh doanh của họ có thể không theo xu hướng công nghệ. Công nhân phần mềm thích làm việc cho kiểu công ti này có thể vẫn còn bị tụt lại sau công nghệ nhưng việc làm của họ là ổn định hơn.

Nghề nghiệp của bạn là chọn lựa của bạn và điều bạn muốn đạt tới. Về truyền thống, người phần mềm thường tuân theo một con đường: Khi họ còn trẻ và độc thân, họ thích làm việc cho công ti nhỏ để học những điều mới và xây dựng kĩ năng tốt hơn nhưng khi họ già hơn và có gia đình thì họ thường chuyển sang công ti lớn hơn và ổn định hơn.

—-English version—-

Large or small company

A computer science graduate wrote to me: “I just graduate and have two job offers. I want to know whether large or small company would give me the best advantage for my career. Please advice.

Answer: When consider company to work for, you must look at several factors rather than just the size of a company. You will need to know the business direction of the company to determine if it fits your career goals. You also need to know about people who work there too.

Small company (10 to 50 people) is usually not stable but it can grow fast. Although small company tends to be risky but it also has the possibility of higher reward. (Imagine that you work for Google or Facebook when they are still small). If you work for small company, you may have to do everything so you will have to learn fast. The work is challenging and working hour is not clearly defined so you may have to work long hours to get the job done. In small company, most projects are small so they often use Agile approach (Scrum or Extreme programming). Software developers who like to work for small companies are typically friendly and motivated. They like to work in team, go out together, play together and focus on contributing to the goal of growing the company. These workers love building software and enjoy the challenge as well as the friendship of people who share the same interest. If the company is a new startup, you may have extra benefit such as stock options.

Medium size (50 – 500 people) or large companies (500 – 1000 people) are more stable. Their businesses are well defined and organized. Their projects can be small (5 – 10 people) or big (20 – 50 people) so their methods vary from agile to traditional plan-driven. If you work for medium or large company, you may be placed in particular functional area as the work is often organized into functions based on skills such as Testing, Developing, Quality Assurance, or Network etc. You will be trained to follow company process and procedures. Software developers who work in large companies tends to follow a disciplined process, their career grow with time as they move from one function area to another. Medium or large companies have good benefits, working hour is defined. Many developers prefer to work for larger companies are likely to have a family so they like the consistency and stability.

Beside the size of company, you may need to look at the business of the company. Companies that rely on software as their product or rely on providing software as a service usually focuses on the latest technology. To advance your career in this type of company, you will need to continue learning new thing to upgrade your skills. By having the latest skills, you can ask for higher salary. Other company where their business is something other than software but use software to support their business may not follow the technology trend. Software workers who like to work for this type of company are likely to remain behind the technology but their jobs are more stable.

Your career is your choice and what you want to achieve. Traditionally, software people usually follows a path: When they are young and single, they like to work for small company to learn new things and build better skills but when they are older and have family then they often switch to larger and more stable company.