1. Trang chủ
  2. » Công Nghệ Thông Tin

Người kĩ sư phần mềm giỏi nhất

6 97 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 88,01 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bởi vì người kĩ sư phần mềm tốt biết công việc cần bao nhiêu thời gian và lập kế hoạch công việc cẩn thận và sẽ cho tôi biết liệu họ có thể đáp ứng hạn chót hay không trong khi người kĩ

Trang 1

Người kĩ sư phần mềm giỏi

nhất

Bởi:

John Vu

Người kĩ sư phần mềm giỏi nhất là người rất cẩn thận khi viết mã bằng việc tập trung vào chất lượng chứ không số lượng Người kĩ sư phần mềm trung bình thích viết mã,

họ dường như ngồi lì trước máy tính hầu hết thời gian để sinh ra hàng đống mã nhưng chương trình của họ có thể hay không thể làm việc được nên họ phải sửa chúng lặp đi lặp lại Việc “viết mã và sửa” này làm phí hoài nhiều nỗ lực và chẳng bao giờ đạt tới chất lượng như khách hàng mong đợi Mã tốt được tạo ra bởi người kĩ sư phần mềm có

kỉ luật, họ biết từng vấn đề phải mất bao lâu, và lập kế hoạch cẩn thận về cách tiếp cận của mình để đảm bảo rằng họ hoàn thành nhiệm vụ tương ứng Là người quản lí, tôi đã thấy cả hai kiểu kĩ sư phần mềm này, khi tôi bảo họ “Tôi cần nhiệm vụ này được hoàn thành trước thứ sáu” rồi trước thứ sáu, ai đó tới và cho tôi biết rằng họ đã kiểm thử mã của họ và nó đã sẵn sàng cho kiểm thử tích hợp Với những người này tôi có thể cảm thấy rằng sẽ có rất ít, nếu không nói là không có lỗi được tìm ra bởi tổ kiểm thử Tuy nhiên, có những người bảo tôi “Tôi vẫn còn đang viết mã nhưng nó sẽ xong vào cuối ngày thứ sáu hay đầu ngày thứ hai” vậy thì với họ, tôi có thể chắc chắn rằng họ có thể đã

bỏ qua một số kiểm thử để đáp ứng hạn chót và hầu hết thời gian mã của họ đầy những lỗi Vì sao? Bởi vì người kĩ sư phần mềm tốt biết công việc cần bao nhiêu thời gian và lập kế hoạch công việc cẩn thận và sẽ cho tôi biết liệu họ có thể đáp ứng hạn chót hay không trong khi người kĩ sư phần mềm trung bình thà ngồi viết mã trước rồi mới hỏi câu hỏi đó sau

Với mọi vấn đề đều có nhiều cách giải quyết nó nhưng người kĩ sư phần mềm giỏi nhất

sẽ cố gắng hiểu vấn đề trước khi làm bất kì cái gì Bằng việc hiểu vấn đề, người đó sẽ nghĩ cẩn thận về cách giải quyết nó và thảo luận nó với tổ của mình về giải pháp tốt nhất Người đó biết rằng có nhiều tuỳ chọn và điều người đó đề nghị có thể không phải

là tốt nhất cho nên người đó tìm kiếm lời khuyên từ những người khác và đi tới cách tiếp cận logic và tốt hơn Bằng việc nhìn vào vấn đề, hình dung ra kết quả cần phải là

gì, người đó sẽ hình dung mình cần giải quyết nó trong bao lâu, và loại phẩm chất nào được mong đợi trước khi người đó thậm chí bắt đầu làm việc trên giải pháp Ngược lại, người kĩ sư phần mềm trung bình sẽ ngay lập tức bắt đầu viết mã trước mà không nghĩ

gì mấy rồi sửa nó nếu nó không đáp ứng yêu cầu Kiểu “viết mã và sửa” rồi “sửa rồi viết

Trang 2

mã” này sẽ chẳng bao giờ tạo ra phần mềm chất lượng được bởi vì họ càng sửa nó, họ càng đưa thêm nhiều lỗi vào trong giải pháp

Người kĩ sư phần mềm giỏi nhất bao giờ cũng chia sẻ mọi điều với tổ và học lẫn nhau

Họ biết rằng bằng việc chia sẻ, họ học nhiều hơn cho nên khi họ học điều mới, công nghệ mới, họ sẽ thảo luận với tổ về cái gì có tác dụng và cái gì không tác dụng cho nên mọi người có thể tránh phạm phải sai lầm Họ trở nên tốt hơn bằng việc làm cho người khác tốt hơn Họ bao giờ cũng tìm kiếm lời khuyên từ những người thâm niên bởi vì những người này có kinh nghiệm, đã trải qua nhiều dự án và biết theo bản năng để ra quyết định đúng Người kĩ sư phần mềm trung bình có thể rất giỏi trong điều họ làm nhưng họ giống như một anh hùng, được người khác thừa nhận cho nên họ không thích chia sẻ và giữ thông tin cho riêng mình, trong trường hợp này họ đánh mất giá trị của mình bởi vì công việc phần mềm là công việc tổ và tổ mà có quá nhiều anh hùng chung cuộc sẽ không có anh hùng nào cả bởi vì mọi người sẽ thất bại Cho dù họ giỏi và có thể kết thúc công việc của mình đúng hạn nhưng nếu tổ không làm thì dự án vẫn thất bại Khi dự án thất bại, chả thành vấn đề ai hoàn thành công việc trước và ai có thể làm công việc tốt, đó là thất bại của tổ bởi vì mục đích toàn thể không thể được đạt tới

Một trong những kĩ năng có thể đem mọi thứ vào trong dự án là kĩ năng tổ chức Người

kĩ sư phần mềm trung bình rất giỏi về kĩ thuật nhưng nếu họ không được tổ chức, họ

sẽ không có khả năng làm cho mọi thứ được thực hiện và cuối cùng sẽ bị tràn ngập bởi sức ép dự án Người kĩ sư phần mềm giỏi nhất bao giờ cũng giữ kế hoạch dự án với các nhiệm vụ hàng ngày chi tiết và có khả năng sắp ưu tiên chúng một cách tương ứng Họ biết cái nhìn hàng ngày về các cuộc họp và nhiệm vụ và cập nhật mọi thứ mà họ phải đạt tới vào ngày đó để cho mọi sự sẽ không bị trì hoãn sang ngày sau Họ giữ dấu vết của tất

cả công việc của mình và có thể lập tức chèo lái dự án, báo cáo cho cuộc họp, và cung cấp các chi tiết khác khi được yêu cầu Bằng việc làm cho mọi sự được thực hiện từng ngày họ biết lịch biểu và các mong đợi và có khả năng điều chỉnh chúng để đáp ứng cho các mục đích dự án Ngược lại, người kĩ sư phần mềm trung bình không nghĩ xa trước

mà chỉ làm việc tương ứng với điều người quản lí bảo họ và điều lịch biểu ấn định mỗi ngày Khi mọi sự thay đổi, họ không biết phải ưu tiên cái gì và không có kế hoạch hoàn thành chúng mà dựa vào người quản lí dự án phân công cho họ việc tương ứng Người

kĩ sư phần mềm giỏi nhất không chỉ nghĩ về mục đích dự án, mà còn hình dung nó và hiểu làm sao hoàn thành nó bởi vì họ có thể thấy đích xác điều họ phải làm từng ngày, từng tuần, từng tháng để đáp ứng mong đợi

Người kĩ sư phần mềm giỏi nhất sẽ thường xuyên cải tiến kĩ năng của họ Họ bao giờ cũng tìm kiếm tri thức mới và thường không đợi người quản lí yêu cầu họ nhận việc huấn luyện thêm Họ học điều mới theo cách riêng của họ bởi vì họ muốn là người giỏi nhất Họ thấy các lớp huấn luyện mới mà họ muốn đi học và yêu cầu người quản lí cho phép tham dự để cho họ có thể học cái gì đó mới và đóng góp thêm cho tổ chức Người

kĩ sư phần mềm trung bình không thích học cái mới nhiều bởi vì họ tin rằng họ đã tốt nghiệp đại học, đã có bằng cấp và biết “đủ để làm việc của mình” Họ bằng lòng với

Trang 3

điều họ biết nhưng họ không hiểu sự kiện là công nghệ bao giờ cũng thay đổi cho nên sau vài năm làm việc họ sẽ lo lắng về nghề nghiệp của mình bởi vì họ có thể không có

kĩ năng mà công ti cần và có thể không có khả năng giữ được việc Phần mềm là lĩnh vực rất năng động và nếu người ta không giữ cùng nhịp với thay đổi công nghệ, họ có thể bị loại

Có nhiều kĩ sư phần mềm trung bình trong công nghiệp ngày nay nhưng có rất ít “kĩ sư phần mềm giỏi nhất” Lí do thật đơn giản: ngày nay rất ít trường dạy về trao đổi và công việc tổ trong chương trình kĩ sư phần mềm Kĩ sư phần mềm trung bình có thể giỏi về

kĩ thuật nhưng lại nghèo nàn về trao đổi và công việc tổ Họ không biết cách thảo luận mọi sự qua email, đặc biệt trong các cuộc họp SCRUM, chia sẻ “Thực hành giỏi nhất: trong kiểm điểm kĩ thuật, trình bày cho khách hàng về giải pháp kĩ thuật và quảng cáo cho hàng trăm người về sản phẩm phần mềm trong chiến dịch tiếp thị Năng lực trao đổi

rõ ràng và hiệu quả là rất mấu chốt cho mọi kĩ sư phần mềm Kĩ năng trao đổi của bạn càng tốt, bạn sẽ càng đi xa hơn bởi vì người kĩ sư phần mềm giỏi nhất dành hầu hết thời gian vào trao đổi, giải thích về mục đích của công ti, thu hút kinh doanh của khách hàng, giải quyết vấn đề, cho hướng dẫn, động viên công nhân khác v.v

Tất nhiên một số trong các bạn có thể nghĩ rằng tôi là người lí tưởng thế về kĩ nghệ phần mềm nhưng tôi đã từng ở trong kinh doanh phần mềm trong hơn 35 năm và đã thấy nhiều kĩ sư phần mềm giỏi cũng như kĩ sư trung bình Tôi có thể tự tin mà nói rằng bạn càng cải tiến kĩ năng phần mềm của mình tốt hơn, càng làm cho bản thân mình dự ứng trong học tập, chia sẻ, cải tiến thì bạn sẽ càng có cơ hội tốt hơn để trở thành một trong những kĩ sư phần mềm giỏi nhất mà bạn đã từng hình dung Nếu bạn chọn nghĩ về bản thân mình như “đủ tốt”, và chẳng có gì hơn để học, bạn bao giờ cũng sẽ ở nơi bạn đã đã

ở đó qua thời gian, bạn sẽ bắt đầu lo nghĩ bởi vì nếu bạn không tiến lên, bạn thậm chí không đứng yên đâu mà thực tế bạn đang đi lùi bởi vì thế giới đang đi nhanh lên trước

Là người kĩ sư phần mềm và một giáo sư, lời khuyên cuối cùng của tôi với bạn là bạn phải có đam mê về điều bạn làm Không có đam mê, bạn sẽ không là người kĩ sư phần mềm lớn được, hay không lớn về bất kì cái gì Thiếu đam mê là lí do số một cho nên nhiều kĩ sư phần mềm chưa bao giờ trở thành giỏi trong điều họ làm và điều đó cũng là

lí do số một mà nhiều người không thành công trong nghề nghiệp của mình Bằng việc tuân theo những lời khuyên này, bạn có thể có được vị trí bạn muốn, cải thiện điều bạn

đã chờ đợi, và bạn sẽ hạnh phúc hơn với nghề của mình bởi vì công nghiệp phần mềm bao giờ cũng đời hỏi người kĩ sư giỏi nhất và điều tuyệt vời là biết rằng bạn là một trong

số họ

—-English

version—-The best software engineer

Trang 4

My friend asked me: How do you know a best software engineer from an average one? Following is my personal opinion:

The best software engineer is very careful when writing code by focusing on the quality not the quantity The average software engineers like to code, they seem to stay in front

of the computer most of the time to generate a lot of code but their programs may or may not work so they have to fix them over and over This “code and fix” wastes lot of efforts and never achieve the quality as expected by the customers Good code is done

by software engineers that are disciplined, they know how long each problem should take, and carefully planning their approaches to make sure that they complete their task accordingly As a manager, I have seen both types of software engineer, when I told them “I need this task completed by Friday” then by Friday, someone come and let me know that they have tested their code and it is ready for integration testing With these people I can feel that there will be very little, if any, defects found by the testing team However, there are people that told me “I am still coding but it will be done late Friday

or early Monday” then with them, I can be sure that they may have skipped some tests to meet the dateline and most of the time their codes are full of defects Why? Because a good software engineer know how long it takes and plan the work carefully and will let

me know whether they can make the dateline or not when an average software engineer would rather code first then ask question later

For every problem there are many ways to solve it but the best software engineer would try to understand the problem first before doing anything By having understood the problem, he will be carefully thinking on how to solve it and discuss it with their team

on the best solution He knows that there are many options and what he proposes may not be the best so he is seeking advises from others and come up with a logical and better approach By look at the problem, figure out what the outcome needs to be, he will figure how much time he need to solve it, and what kind of quality being expected before

he even starts to work on the solution On the contrary, average software engineers would immediately start to code first without much thinking then fixing it if it does not meet the requirements This type of “code and fix “then “fix then code” will never create quality software because the more they fix, the more defects they will injected into the solution

Best software engineers always share things with the team and learn from each others They know that by sharing, they learn more so when they learn new things, new technologies they will discuss with the team about what works and what do not work so people can avoid making mistakes They are better by making other better They always seek advises from senior people because these people have experiences, been through many projects and know by instinct to make the right decision Average software engineers may be very good in what they do but they like to be a hero, to be recognized

by others so they do not like to share and keep information to themselves, in this case they are losing their value because software work is teamwork and a team that have too

Trang 5

many heroes eventually will have no hero at all because everybody will fail Even if they are good and could finish their works on time but if the team did not then the project still fail When a project fail, it does not matter who is finishing the work first and who can do good work it is a team’s failure because the overall goal can not be achieved

One of the skills that can bring everything in the project together is organization skill Average software engineers are very good in technical but if they are not organized, they will not be able to get things done and eventually will be overwhelmed by the project pressure Best software engineers always keep a project plan with detailed daily tasks and are able to prioritize them accordingly They know their daily outlook of meetings and tasks and keep up to date everything that they must achieve on that day

so things will not get postponed into the next day They keep track of all their works and can instantly pull up projects, meeting reports, and other details when asked By getting things done each day they know their schedules and expectations and be able

to adjust them to meet project’s goals On the contrary, average software engineers do not think far ahead but only work according to what the manager tell them and what the schedule dictated each day When things change, they do not know what to prioritize and have no plan to accomplish them but rely on the project manager to assign them works accordingly Best software engineers not only thinking about the project goals, but also visualizes it and understands how to accomplish it because they can see exactly what they must be doing each day, each week, each month to meet the expectation

Best software engineers will constantly improving their skills They always seeking new knowledge and usually do not wait for managers to ask them to take additional training They learn new things on their own because they want to be the best They find new training classes that they want to go and ask managers for permission to attend so they can learn some thing new and contribute more to the organization Average software engineers do not like to learn new things much because they believe that they already graduated from universities, have degrees and know “enough to do their jobs” They are content of what they know but they do not understand the fact that technology always changes so after few working years they will worry about their career because they may not have the skills that the company need and may not be able to keep the jobs Software

is a very dynamic field and if people do not keep up with the technology change, they may be eliminated

There are many average software engineers in the industry today but there are very few

“best software engineers” The reason is simple: today very few schools would teach communication and teamwork in the software engineer program Average software engineers may be good in technical but poorly in communication and teamwork They

do not know how to discuss things over emails, participate in SCRUM meetings, share

“Best practices: in a technical reviews, present to the customer about a technical solution and promote hundreds people about the software product in a marketing campaign The ability to communicate clearly and effectively is very critical to all software

Trang 6

engineers The better your communication skill, the farther you will go because best software engineers spend most of the time in communication, explaining the company’s goal, solicit customer’s business, solving problems, giving directions, motivating other workers etc

Of course some of you may think that I am so idealistic about software engineering but I have been in this software business for over 35 years and have seen a lot of good software engineers as well as average engineers I can confidently stated that the better you can improve your software skill, make yourself proactive in learning, sharing, improving then the better chance you will become one of the best software engineer that you have ever imagined If you choose to think of yourself as “good enough”, and have nothing more to learn, you will always staying where you are then over time, you will start to worry because if you are not moving forward, you are not even standing still but actually you are moving backward because the world is moving fast forward

As a software engineer and a professor, my last advice to you is you must have passion

on what you do Without passion, you will not be a great software engineer, or great at anything Lack of passion is the number one reason so many software engineer never become good for what they do and it is also the number one reason many people do not succeed in their career By follow these advises, you may get the position you want, improve what you have been waiting for, and you will be happier with your career because the software industry always demand the best engineer and it is great to know that you are one of them

Ngày đăng: 29/12/2015, 09:59

TỪ KHÓA LIÊN QUAN

w