18 May, 2021
Học Kĩ nghệ phần mềm
Tôi bao giờ cũng khuyến khích sinh viên đã tốt nghiệp đang làm việc trong công nghiệp chia sẻ kinh nghiệm với sinh viên hiện thời nhưng lần này một trong những sinh viên năm thứ tư của tôi muốn chia sẻ câu chuyện của cô ấy:
“Là sinh viên năm thứ tư về Kĩ nghệ phần mềm, tôi có nhiều thời gian để suy nghĩ về kinh nghiệm của tôi hướng tới việc lựa chọn lĩnh vực học tập này. Cách nhìn của tôi về lĩnh vực này có thể khác với những người khác, hay thậm chí về cách tôi mong đợi nó là vậy khi tôi còn ở trung học. Với sự khuyến khích của Gs Vũ, tôi muốn chia sẻ với các bạn câu chuyện của tôi: Sau khi tốt nghiệp trung học, tôi đã lựa chọn quản trị kinh doanh làm lĩnh vực học tập cho dù đam mê của tôi là văn học. Anh tôi là người phát triển phần mềm và anh ấy khuyến khích tôi học khoa học máy tính, anh ấy nói: “Đây là nghề tốt nên làm vì nó có nhiều cơ hội.” Giống như nhiều học sinh trung học, tôi đã không nghĩ gì mấy về nghề nghiệp và cơ hội vì mối quan tâm riêng của tôi là văn học. Cô giáo trường trung học bảo tôi rằng kĩ nghệ phần mềm sẽ là tốt cho tôi vì lĩnh vực này cần nhiều nữ kĩ sư. Cho dù tôi thích cô giáo nhưng tôi không hiểu tại sao cô muốn có nhiều nữ trong lĩnh vực kĩ nghệ. Bố mẹ tôi thì thực tế hơn: “Văn học là tốt nhưng không phải là cái gì đó mà con có thể kiếm sống được. Chọn cái gì đó cho con việc làm tốt rồi con có thể đọc mọi sách mà con muốn.” Đó là lí do tại sao tôi đã chọn Quản trị kinh doanh nhưng theo gợi ý của anh tôi, tôi cũng học môn “Nhập môn vào Công nghệ thông tin”. Môn này mở mắt cho tôi về cách công nghệ được áp dụng trong nhiều khu vực, kể cả doanh nghiệp. Tôi mê mải bởi bài giảng về thương mại điện tử và kinh doanh trực tuyến cho nên sau môn đó, tôi học môn “Phát triển Web” để học nhiều hơn về kinh doanh trực tuyến. Sau khi dựng vài bài tập website như được yêu cầu bởi môn này, tôi thấy rằng lập trình máy tính không quá khó cho nên tôi quyết định học môn “Lập trình Java” và học rất rốt nữa. Đến lúc đó, tôi quyết định chuyển lĩnh vực học tập sang “Kĩ nghệ phần mềm.”
Lí do hấp dẫn tôi vào Kĩ nghệ phần mềm là sự kiện rằng ngày này hầu hết mọi thứ đều dùng máy tính và bằng việc có tri thức và kĩ năng phần mềm, tôi có thể làm gần như mọi thứ. Nhưng yếu tố thuyết phục nhất tới từ giáo sư Vũ, người đã nói trên lớp: “Lập trình là quá trình sáng tạo, cũng giống như viết cuốn sách. Viết chương trình là hệt như viết tiểu thuyết riêng của bạn. Thiết kế phần mềm là cách mới để tạo ra mọi thứ; một chương trình thanh nhã là hệt như bài thơ hay. Kĩ nghệ phần mềm không chỉ là khoa học mà còn là nghệ thuật vì bạn phải sáng tạo để làm nó. Các tác giả viết sách, bạn viết chương trình và bạn có nhiều người dùng cần phát kiến và tưởng tượng. Máy tính không là gì ngoài cái máy câm nhưng chính bạn cho nó linh hồn; chính bạn làm cho máy tính làm điều kì diệu; chính bạn nói cho máy tính làm gì, và chính bạn cho máy cuộc sống của nó.” Tôi chưa bao giờ nghĩ về điều đó theo cách đó, vì văn học là đam mê của tôi, tôi bắt đầu nghĩ về phần mềm như cách mới để viết có tính sáng tạo, và đột nhiên tôi yêu thích lập trình.
Khi tôi học môn thiết kế phần mềm nơi mọi thứ phải được phân rã thành những nhiệm vụ nhỏ hơn và được phân tích, tôi học kĩ năng giải quyết vấn đề. Từ ngày hôm đó trở đi, tôi nhìn vào mọi thứ như vấn đề được giải quyết. Chẳng hạn, “Không có thời gian học” có nghĩa là cái gì sẽ lấy nhiều thời gian nhất của tôi, và làm sao tôi có thể quản lí hiệu quả chúng để tránh phí thời gian. Khi bạn tôi có vấn đề với bạn trai của họ, họ thường dựa vào tôi để phân tích tình huống. Tôi tiếp cận tới chúng như vấn đề phần mềm: Cái gì đi sai? Vấn đề là gì? Triệu chứng là gì? Nguyên nhân là gì? Khi nào nó xảy ra? Cái gì đã xảy ra? Nó đã xảy ra bao lâu? Bằng việc hiểu vấn đề và cái gì có thể gây ra nó, tôi có thể có được giải pháp nhanh chóng. Nhược điểm của nhiều nữ sinh viên đại học là họ không biết cách giải quyết tình huống và thường bị xúc động nhưng tôi thì không, tôi đã học cách giải quyết vấn đề một cách logic. Đến lúc tôi vào năm thứ hai, tôi trở thành cố vấn cho nhiều nữ sinh viên đại học người tìm sự giúp đỡ của tôi. Tôi chưa bao giờ nghĩ việc học máy tính có thể cho tôi kĩ năng đó và tôi chắc chắn không nhiều thanh niên đã biết tới điều đó.
Học phần mềm yêu cầu logic. Bạn học rằng có nhiều cách giải quyết vấn đề nhưng bạn chọn giải pháp logic nhất. Thỉnh thoảng điều đó có nghĩa là phải thoả hiệp chất lượng vì hiệu quả chi phí hay bạn có thể phải dành nhiều thời gian hơn để có được phẩm chất cao nhất có thể được. Nhưng điều then chốt là ở chỗ bạn học nhiều cách tiếp cận để giải quyết vấn đề vì không có giải pháp hoàn hảo mà tuỳ thuộc vào tình huống, bạn ra quyết định riêng của bạn. Cùng điều này với kiểm thử phần mềm, bạn thử nhiều cách tiếp cận rồi xác định cái nào là tốt nhất trong tình huống đó. Có thể không có lỗi không? Có chứ, nhưng nó đòi nhiều thời gian hơn và có thể làm trượt lịch. Có thể có ít lỗi hơn không? Có chứ chừng nào chúng không phải là găng. Đó là cùng điều tôi học để tiếp cận với cuộc sống của tôi vì tôi không thể có mọi thứ mà tôi ước cho nên tôi chọn cái tốt nhất theo hoàn cảnh và hạnh phúc với nó. Khi tôi ở trường phổ thông, tôi ước nhiều thứ nhưng bây giờ tôi biết rằng bạn có thể không có được cái bạn muốn nhưng bạn học hạnh phúc với bất kì cái gì xảy ra.
Không ai nói Kĩ nghệ phần mềm là dễ. Bạn vật lộn với mã và thiết kế mọi ngày và thỉnh thoảng bạn sẽ hoài nghi liệu bạn có ra quyết định đúng về học kĩ nghệ phần mềm không. Bạn dành nhiều đêm để làm cho mã của bạn làm việc nhưng bạn không một mình. Có nhiều người như bạn và họ sẽ ở lại cả đêm để gỡ lỗi chương trình của họ. Đột nhiên bạn có một nhóm bạn, người chia sẻ cùng thất vọng cho nên bạn không cảm thấy tệ. Tuy nhiên khi chương trình của bạn chạy, nó là khoảnh khắc của “Eureka” và bạn cảm thấy tuyệt vời thế. Sự kiện là, bạn sẽ có nhiều khoảnh khắc như điều đó, cuộc sống của bạn thăng và trầm mọi lúc nhưng bạn học từ sai lầm của bạn, bạn học cách kiểm soát xúc động của bạn. Cuối cùng bạn học cách tận hưởng thành công của bạn cũng như thất bại của bạn. Bạn cũng học sự kiện của cuộc sống đầy những thăng trầm nhưng bạn không cho phép chúng giữ bạn lại. Nếu bạn trai của bạn không thích bạn nữa, tìm bạn trai khác. Anh ấy không phải là người duy nhất và dứt khoát không phải là tốt nhất. Tôi học không sợ lãng mạn đại học. Tôi biết tôi là ai, tôi có thể làm gì và tôi không cần ai đó bảo tôi khác đi. Không ai nói học phần mềm có thể làm mạnh cho bạn về mặt trí tuệ và xúc động như điều đó.
Nhiều sinh viên học lập trình máy tính, thấy nó khó rồi bỏ. Họ học các lớp khác rồi bỏ cho tới khi họ tốt nghiệp và học được sự thật về “cuộc sống thực”. Tôi đã thấy nhiều người tốt nghiệp bị thất nghiệp người hối tiếc về “cuộc sống dễ dàng” ở đại học. Trong môn “Nhập môn vào công nghệ”, tôi đã học về thiếu hụt trầm trọng công nhân có kĩ năng. Giáo sư nói: “Nếu mọi sinh viên trong máy tính và phần mềm trên thế giới đang tốt nghiệp ngày nay và tất cả đều được thuê, thế giới vẫn có thiếu hụt vì họ cần nhiều người kĩ thuật. Không ngạc nhiên là phần mềm là nơi có việc làm, và trên khắp thế giới, các công ti đang hăm hở tìm người phần mềm. Bạn có thể có “cuộc sống dễ dàng” hay “cuộc sống gian khó” trong đại học nhưng sau khi tốt nghiệp, cuộc sống của bạn sẽ khác vì nó sẽ xác định bạn là ai, bạn làm gì. Nói cách khác, tương lai của bạn tuỳ thuộc vào thái độ của bạn trong đại học cho nên tại sao từ bỏ? Tại sao coi nói là “cuộc sống dễ dàng”? Tại sao không đưa nỗ lực phụ nào đó vào?
Là sinh viên năm thứ ba trong kĩ nghệ phần mềm, tôi có ba đề nghị thực tập mùa hè năm ngoái từ Google, Facebook và Amazon. Tôi tới Amazon và đã học được nhiều và trước khi tôi trở về trường, người quản lí của tôi cho tôi một đề nghị vị trí làm việc toàn thời khi tôi tốt nghiệp. Anh tôi khuyên: “Đợi đi, đừng chấp nhận cái gì vì công ti khác sẽ đề nghị thêm cho em. Với bằng cấp này em sẽ có nhiều chọn lựa và em nên chọn chỗ tốt nhất.” Tôi thích lời khuyên của anh cho nên tôi chờ đợi và tháng trước, tôi có năm đề nghị từ Google, Facebook, Microsoft, IBM, và LinkedIn thậm chí trước khi tôi tốt nghiệp.
Nếu bạn là ai đó người vẫn suy tư về khoa học máy tính, kĩ nghệ phần mềm, và quản lí hệ thông tin hay sợ khó học công nghệ thông tin thì lời khuyên của tôi là: “Cứ làm nó đi.” Đừng chú ý tới những cậu con trai bảo bạn rằng con gái không thể làm được điều đó. Đừng chú ý tới mọi con trai ghen tị với tâm trí logic của bạn. Đừng chú ý tới cách nhìn rằng máy tính là khó. Tiến lên và viết mã, nếu nó không chạy, sửa nó cho tới khi nó làm việc. Không có cảm giác nào tốt hơn là tạo ra cái gì đó đáng ngạc nhiên như phần mềm. Nếu bạn nghĩ bạn không thể làm nó một mình được, tìm ai đó như bạn và hình thành một nhóm rồi bạn sẽ học về làm việc tổ. Đừng để bất kì ai dừng bạn lấy điều bạn muốn. Bình luận cuối cùng của tôi: “Học công nghệ và bạn sẽ làm thay đổi thế giới.”
TB: Nhân tiện, khi tôi làm việc ở Amazon, tôi đã được ngưỡng mộ cao vì đã có năm mươi con trai cho một con gái.
Linda Shuller
—English version—
Blog1507- Study Software Engineering
I always encourage graduated students who are working in industry to share experiences with current students but this time one of my fourth year students wants to share her story:
“As a fourth year student in Software Engineering, I have a lot of time to reflect upon my experiences towards selecting this field of study. My view about this field may be different from others, or even of how I expected it to be when I was in high school. At the encouragement from Professor Vu, I want to share with you my story: After graduate from high school, I selected business administration as the field of study even my passion was in literature. My brother was a software developer and he encouraged me to study computer science, he said: “This is a good career to be in as it has many opportunities.” Like many high school students, I did not think much about career or opportunities as my own interest was in literature. My high school teacher told me that software engineering would be good for me since the field needed more women engineers. Even I liked my teacher but I did not understand why she wanted to have more women in engineering field. My parents were more practical: “Literature is good but it is not something that you can make a living. Select something that gets you a good job then you can read all the books that you want.” That was why I selected Business Administration but at the suggestion of my brother, I also took the “Introduction to Information Technology” course. This course opened my eyes on how technologies were being applied in many areas, including business. I was fascinated by the lecture on electronic commerce and online business so after that course, I took the “Web development course” to learn more about online business. After built several website exercises as required by the course, I found that computer programming was not too difficult so I decided to take the “Java Programming” course and did very well too. By that time, I decided to switch my field of study to “Software Engineering.”
The reason that attracts me to Software Engineering is the fact that today almost everything is using computers and by having the software knowledge and skills, I can do almost anything. But the most convincing factor come from professor Vu who told the class: “Programming is a creative process, just like writing a book. Writing program is the same as writing your own novel. Designing software is a new way of creating things; an elegant program is the same as a beautiful poetry. Software Engineering is not just a science but also an art as you must be creative to do it. Authors write books, you write programs and you have many users who need your innovation and imagination. A computer is nothing but a dumb machine but it is you who give it a soul; it is you who make the computer do wonderful thing; it is you who tell the computer what to do, and it is you who give a machine its life.” I never thought about it that way, since literature was my passion, I began to think of software as a new way of creative writing, and suddenly I love programming.
When I took software design course where everything must be decomposed into smaller tasks and analyzed, I learned problem solving skills. From that day on, I look at everything as a problem to be solved. For example, “Do not have time to study” means what is going to take the most of my time, and how can I effectively manage them to avoid wasting time. When my friends had problem with their boyfriend, they often relied on me to analyze the situation. I approached them as a software problem: What went wrong? What were the issues? What were the symptoms? What were the causes? When it happened? What has happened? How long did it happened? By understood the problem and what could be causing it, I could get to the solution quickly. The weaknesses of many college women were they did not know how to handle the situation and often got emotional but not me, I learned how to solve problem logically. By the time I was in second year, I became the advisor to many college women who sought my help. I never thought learning computer can give me that skills and I am sure not many young people even know that.
Study software requires logic. You learn that there are many ways to solve a problem but you select the most logical solution. Sometimes it means you have to compromise quality for cost effective or you may have to spend more time to get the highest quality possible. But the key is that you learn many approaches to solve problem as there is no perfect solution but depend on the situation, you make your own decision. The same thing with testing software, you try many approaches then determine which one is the best in that situation. Is it possible to have a zero defect? Yes, but it takes more time and may slip schedule. Is it possible to have fewer defects? Yes as long as they are not critical. It is the same thing that I learn to approach my life as I cannot have everything as I wish so I select the best one under the circumstances and be happy with it. When I was in high school, I wished for many things but now I learn that you may not get what you want but you learn to be happy with whatever happens.
No one says Software Engineering is easy. You struggle with code and design every day and sometime you will doubt whether you are making the right decision to study software engineering. You spend many nights to get your code to work but you are not alone. There are many people like you and they will stay all night to debug their programs. Suddenly you have a group of friends who share the same frustration so you do not feel bad. However when your program runs, it is a “Eureka” moment and you feel so wonderful. The fact is, you will have many moments like that, your life is turning ups and downs all the time but you learn from your mistakes, you learn how to control your emotion. Eventually you learn how enjoy your success as well as your failures. You also learn the fact of life is full of ups and downs but you do not allow them to hold you back. If your boyfriend does not like you anymore, find another one. He is not the only one and definitely not the best. I learn not to be afraid of college romance. I know who I am what I can do and I do not need someone who tells me differently. No one say studying software can strengthen you intellectually and emotionally like that.
Many students take computer programming, find it hard then give up. They take other classes then give up until they find the easiest class. To them life is so easy until they graduate and learn the truth about “real life”. I have seen many unemployed graduates who regretted about the “easy life” in college. In my “Introduction to Technology” course, I learned about the critical shortage of skilled workers. The professor said: “If all students in computer and software in the world are graduating today and all get hired, the world still have a shortage as they need more technical people. It is not surprising that software is where the jobs are, and all over the world, companies are aggressively looking for software people. You can have an “easy life” or “hard life” in college but after graduation, your life will be different as it will determine who you are, what you do. In other word, your futures depending on your attitude during college so why give up? Why take an “easy life”? Why not put in some extra effort?
As a third year student in software engineering, I had three internship offers last summer from Google, Facebook and Amazon. I went to Amazon and learned a lot and before I go back to school, my manager made me an offer for full time position when I graduated. My brother advised: “Just wait, do not accept anything for others will offer you more. With this degree you will have many choices and you should select the best.” I like his advice so I waited and last months, I had five more offers from Google, Facebook, Microsoft, IBM, and LinkedIn before I even graduate.
If you are someone who is still contemplating on computer science, software engineering, and Information system management or afraid the difficulty of studying information technology then my advice is: “just do it.” Do not pay attention at boys who tell you that girls cannot do it; Do not pay attention to all the boys who are jealous of your logical minds; Do not pay attention to the view that computer is hard. Go ahead and write code, if it does not run, fix it until it works. There is no better feeling than to create something amazing like software. If you think you cannot make it alone, find someone like you and form a group than you will learn about teamwork. Do not let anyone to stop you to get what you want. My last comment: “Study technology and you will change the world.”
PS: By the way, when I worked at Amazon, I was highly admired as there were fifty boys for every one girl.
Linda Shuller