Một người mẹ viết cho tôi: “Con gái tôi muốn học Khoa học máy tính và làm việc như người phát triển phần mềm nhưng tôi không muốn nó dành phần lớn thời gian ngồi trước máy tính. Tôi nghĩ Kinh doanh và Ngân hàng chắc sẽ tốt hơn cho con gái trẻ vì nó sẽ có nhiều thời gian hơn để gặp gỡ mọi người. Tôi thực sự không biết điều người phát triển phần mềm thực sự làm. Xin thầy lời khuyên.”

Đáp: Bạn cần biết tại sao con gái bạn muốn học Khoa học máy tính và điều gì thúc đẩy cô bé theo đuổi nghề này. Nếu bạn lắng nghe một cách cẩn thận, bạn có thể đổi ý. Ngày nay khoa học máy tính là một trong những nghề tốt nhất trên thế giới và được mong đợi tăng trưởng nhanh nhất hơn bất kì lĩnh vực nào khác. Tôi nghĩ con gái bạn đang làm quyết định đúng trong lập kế hoạch cho tương lai của cháu vì với bằng cấp trong Khoa học máy tính, cháu sẽ KHÔNG gặp vấn đề nào trong tìm việc làm. (Lưu ý: tôi không thể nó được điều đó với bằng cấp trong Kinh doanh hay Ngân hàng vào thời suy thoái này).

Có niềm tin sai rằng người phát triển phần mềm để toàn bộ thời gian ở trước máy tính. Thực ra, người phát triển có nhiều cơ hội để đi gặp gỡ khách hàng để thảo luận về các yêu cầu phần mềm và bảo trì. Tất nhiên, phát triển xây dựng sản phẩm phần mềm và lập trình là một phần của công việc nhưng KHÔNG phải là công việc duy nhất. Người phát triển giải quyết vấn đề của khách hàng bằng việc hiểu nhu cầu của họ và phát triển các giải pháp phần mềm. Họ thiết kế, viết mã, kiểm thử, gỡ lỗi và bảo trì phần mềm qua một thời kì thời gian.

Một điều tôi có thể nói về công việc phần mềm là nó không bao giờ chán. Tuỳ theo kích cỡ của công ti (lớn hay nhỏ) kiểu công ti (cung cấp sản phẩm hay dịch vụ); cấu trúc tổ chức (phân cấp hay phẳng); hệ thống quản lí (tập trung hay phi tập trung) công việc có thể biến thiên. Tuy nhiên một điều là chung: Mọi người đều làm việc trong tổ và làm việc tổ là rất quan trọng. Tuỳ theo từng pha của dự án, công việc thay đổi. Trong pha viết mã hay kiểm thử, người phát triển dành nhiều ngày viết mã để tạo ra các chức năng, trong khi những người khác có thể dành nhiều ngày để nhận diện và sửa lỗi. Trong kiến trúc và thiết kế, người phát triển dành nhiều ngày vào các cuộc họp để thiết kế kiến trúc hệ thống tốt nhất và đó là lí do tại sao các kĩ năng mềm như làm việc tổ, trao đổi, lắng nghe, trình bày và lãnh đạo là quan trọng. Trong pha lấy yêu cầu hay lập kế hoạch dự án, những người phát triển thường dành thời gian gặp gỡ với người quản lí dự án, khách hàng và những người khác trong công ti, người giúp xác định phương hướng của  dự án phần mềm.

Người phát triển xây dựng phần mềm bằng việc viết mã dùng các ngôn ngữ lập trình như Java hay C++ (Đây là những ngôn ngữ phổ biến nhất được dạy trong trường) nhưng có nhiều ngôn ngữ nữa như C, Objective C, Visual Basic, PHP, Ruby, Python, JavaScript, Perl, SQL v.v. Nếu họ giỏi với bất kì ngôn ngữ nào trong những ngôn ngữ này, họ sẽ không gặp vấn đề nào trong công nghiệp phần mềm.

So sánh với bằng cấp cử nhân khác, bằng cấp khoa học máy tính có lẽ có lương tốt nhất. Người phát triển phần mềm đang có nhu cầu cực kì cao, và thị trường đang ngày càng nóng hơn. Trong khi có các báo cáo khác nhau về số lượng nhưng về trung bình, lương cho người tốt nghiệp mức tập sự có bằng cử nhân trong khoa học máy tính biến thiên từ $75,000 tới $92,000 đô la một năm ở Mĩ (dữ liệu 2012). Có nhiều cơ hội thăng tiến trong phát triển phần mềm, vì nhiều người phát triển cuối cùng sẽ chuyển vào quản lí ở điểm nào đó. Người quản lí dự án phần mềm có thể đáng được miền lương từ $120,000 tới $180,000 (Dữ liệu năm 2012). Một số người phát triển có thể bắt đầu công ti riêng của họ hay trở thành nhân viên ở công ti khởi nghiệp. Công ti khởi nghiệp thường cho nhân viên tuỳ chọn cổ phẩn như phần thưởng và khi họ trở nên thành công, nhân viên của họ có thể trở thành triệu phú như trường hợp của Apple, Microsoft, Google và Facebook v.v… Thỉnh thoảng công ti khởi nghiệp có thể được công ti lớn hơn mua lại với số tiền khổng lồ và nhân viên công ti khởi nghiệp nhận được khuyến khích theo số phần trăm của việc mua (thường theo triệu đô la một người). Khi Facebook mua Instagram, một công ti khởi nghiệp nhỏ có 12 nhân viên với giá $ 1 tỉ đô la, mọi nhân viên đều trở thành “triệu phú tức thì.”

Khoa học máy tính là nghề nghiệp tốt cho thanh niên, cả đàn ông và đàn bà vì có nhu cầu cao ở mọi nước. Những người phát triển có chọn lựa hoặc làm việc ở nước họ hoặc du hành và làm việc ở nước khác do thiếu hụt trầm trọng toàn cầu. Công việc bao giờ cũng thách thức và kích động và bạn được trả lương cao cho công việc của bạn. Tuy nhiên vì công nghệ bao giờ cũng thay đổi, bạn sẽ cần chấp nhận thái độ học cả đời để theo kịp. Công việc phần mềm yêu cầu nhiều họp hành, trao đổi, và làm việc tổ cho nên bên cạnh kĩ năng kĩ thuật, bạn cũng sẽ cần kĩ năng mềm.

—-English version—-

Software development work

A mother wrote to me: “My daughter wants to study Computer Science and works as Software developer but I do not want her to spend most of the time in front of a computer. I think Business and Banking would be better for a young girl because she will have more time to meet people. I really do not know what software developer really do. Please advice.”

Answer: You need to know why your daughter wants to study Computer Science and what motivates her to pursue this career. If you listen to her carefully, you may change your mind. Today Computer Science is one of the best careers in the world and it is expected to grow faster than any other fields. I think your daughter is making the right decision in planning her future because with a degree in Computer Science, she will NOT having any problem finding job (Note: I cannot say that with degrees in Business or Banking at this recession time).

There is a wrong belief that software developers spend all the time in front of a computer. In fact, developers do have many opportunities to travel to meet customers to discuss software requirements and maintenance. Of course, developers build software products and programming is a part of the work but NOT the only work. Developers solve customers’ problems by understand their needs and develop software solutions. They design, code, test, debug and maintain the software over a period of time.

One thing I can say about software work is it is never bore. Depend on the size of the company (Big or small) the types of company (Provide products or services); the organization structures (Hierarchical or flat); the management system (centralize or decentralize) the work may vary. However one thing is common: Everybody works in team and teamwork is very important. Depend on each phase of the project, the work changes. During coding or testing phase, developers spend their days writing code to create functionality, while others may spend their days identifying and fixing bugs. During architecture and design, developers spend their days in meetings to design the best system architect and that is why soft-skills such as teamwork, communication, listening, presentation, and leadership are important. During requirements or project planning phase, developers often spend time meeting with project managers, customers, and others in the company who help determine the direction of the software project.

Developers build software by write code using programming languages such as Java or C++ (These are the most popular languages often taught in school) but there are more such as C, Objective C, Visual Basic, PHP, Ruby, Python, JavaScript, Perl, SQL etc. If they are good with any of these languages, they will not have any problem finding job in the software industry.

Compare with other bachelor’s degrees, computer science degree probably has the best salary. Software developers are in extremely high demand, and the market just keeps getting hotter. While there are different reports about the amount but on the average, salary for entry level of graduates with a bachelor’s degree in computer science ranges from $75,000 to $92,000 dollars per year in the U.S. (2012 data). There are many advancement opportunity in software development, as many developers would eventually move into management at some point. A software project manager can command a salary range from $120,000 to $180,000 (2012 Data). Some developers may start their own companies or become employees at startups. Startups often give employees stock options as rewards and when they become successful their employees can become millionaires such as the cases of Apple, Microsoft, Google and Facebook etc… Sometime startups may get acquired by bigger companies for a huge amount of money and startups employees do receive incentives in percentage of the acquisition (usually in million dollars per person). When Facebook acquires Instagram, a small startup that has 12 employees for $ 1 Billion dollars, all employees became “instant millionaires”.

Computer science is a good career for young people, both men and women because there is high demand in every country. Developers do have a choice either to work in their home country or travel and work in other countries due to the critical shortage globally. The work is always challenging and exciting and you get high salary for your work. However since technology is always changing, you will need to adopt a lifelong learning attitude to keep up. Software work requires a lot of meetings, communication, and teamwork so beside technical skills, you will also need soft-skills.