Hiểu nghề, yêu nghề,... lộn mề

pmp Mar 01, 2021

I. Mở đầu

Trước khi bắt đầu bài viết tác giả xin đưa ra một "disclaimer" hay tuyên bố từ chối trách nhiệm về tính chính xác của bất cứ "lí thuyết" nào trong bài viết này, bởi vì đơn giản tác giả hoàn toàn viết từ những suy nghĩ tổng kết về nghề sau thời gian làm "zai ngành" chứ không đi học qua bất cứ trường lớp chính thống nào.

Disclaimer : Các định nghĩa, lí thuyết trong bài viết là hoàn toàn mang tính chủ quan tổng kết sau 15 năm làm Zai Ngành và chuẩn bị về hưu.

OK! Câu chuyện bắt đầu.

....

Sau khi vật lộn trong ngành IT gần 15 năm,  kết quả của sự ảnh hưởng độc hại của môi trường làm việc khiến tác giả trở nên hâm hâm khi mà mỗi sáng đều lẩm nhẩm bài hát trước khi hôn tạm biệt vợ con để đến công ty làm : "anh thanh niên năm nay đã 38 tuổi rồi, sáng mua 5000 xôi tối ngồi cày đến sáng, anh luôn luôn on-face để biết mọi chuyện trên đời, đăng một cái tút cũng chẳng thằng nào like". Ở cái tuổi 3x công thêm việc nghiện JAV nặng nên anh tác giả khá là gàn dở, anh trở thành người review việc người khác làm một cách khá là bảo thủ và luôn tin rằng chỉ có cách mình làm mới là perfect. Mọi người thấy anh có tuổi rồi nên thường nhịn mỗi khi anh chém gió... Nhưng rồi cuối cùng cái ngày định mệnh đó cũng đến sau khi anh đang thao thao chỉ trích cách code của 1 thằng fresher hỉ mũi chưa sạch thì nó bực quá bật 1 phát : " Em chả hiểu anh nói gì. Em có sai đâu!!! Đây là triết lí code của em. Triết lí khác nhau cách làm khác nhau quan trọng là kết quả". Anh không nói được gì thêm nhưng bây giờ trong đầu anh thay vì lẩm nhẩm bài hát quen thuộc thì ong ong các từ ngữ " Triết lý, phương pháp, framework, vòng đời phát triển phần mềm ...." Anh chợt nhận ra rằng trong 15 năm đi làm thì chưa bao giờ anh nghiêm túc nghĩ đến việc tìm hiểu bản chất ngữ nghĩa của các khái niệm về công việc mình đang làm.

Việc tìm hiểu ngữ nghĩa hay các khái niệm có cần cho công việc không vậy? Thật ra hỏi câu đó cũng tương tự như việc hỏi "có cần hiểu phật pháp mới làm được sư không vậy?" Nó tuỳ thuộc vào đích đến của ta là "Hiểu phật pháp" hay "Được làm sư"

II. Hiểu nghề

Sinh ra cung sư tử, bonus thêm nhóm máu B, tác giả của chúng ta là một kẻ bụng dạ hẹp hòi có tiếng nên tất nhiên "Có thù là phải trả". Anh quyết tâm làm sáng tỏ xem "Triết lí" là gì?

  1. Triết lí ( Philosophy )
Triết lý hay triết học là một hệ thống niềm tin ảnh hưởng đến quyết định và hành vi của ai đó. Niềm tin hoặc thái độ mà ai đó sử dụng để đối phó với cuộc sống nói chung.

Như vậy triết lí đề cao một hệ thống giá trị mà nếu tiếp nhận hệ thống giá trị đó con người sẽ thay đổi quyết định và hanh vi của mình để đạt được các giá trị đề ra. Ta có triết lý của phật giáo, của đạo giáo, của nho giáo... nơi mà các giá trị khác nhau được hướng tới và tôn vinh. Như vậy triết lí của anh bạn fresher kia có thể là hệ thống niềm tin rằng phần mềm chỉ cần chạy được nên nó quyết định đến thái độ và hành động của anh ta.

Ah ha! Có vẻ đã thấy vết Thâm của em Thuý.  

Tổng kết : Triết lí thiên nhiều về sự trừu tượng, tri thức, suy nghĩ và thái độ và định nghĩa hệ thống giá trị tiêu chuẩn.

Trong phát triển phần mềm chúng ta sẽ dễ dàng bắt gặp các "philosophies" quen thuộc như dưới đây bởi việc phát triển phần mềm sẽ bị "driven" hay chi phối bởi hệ thống các niềm tin nhất định.

hay một số giá trị đề cao cụ thể như :

vv..v

2. Cách tiếp cận ( Approach)/ Mô hình (Paradigm)

Như vậy triết lý là cái gì đó trừu tượng mà trừu tượng thì chỉ ra cái đích đến cuối cùng hay hệ thống giá trị cần đạt được mà chẳng thấy nói năng gì đến việc làm thế nào để đạt được các giá trị đó.  

Cách tiếp cận là một đường lối cụ thể suy nghĩ về cách làm sao xử lý được vấn đề nhằm đạt được giá trị mong muốn.  

Đối với mỗi cách tiếp cận khác nhau, sẽ có các mô hình được xây dựng trong đó chứa một tập các ý tưởng cơ bản được sử dụng để hiểu và giải thích cách thức tiếp cận. Và ta có một số mô hình phát triển phần mềm đã được ra đời như :

3. Framework ( khung làm việc ) vs Methodology

Tuy nhiên có một sự bối rối không hề nhẹ giữa 2 khái niệm "Framework" và Metholodogy. Bản thân tác giả cũng vò đầu bứt tai không hiểu sao cái này được gọi là framework trong khi cái kia chỉ là methodology ?????

“Frameworks are by definition a little loose. They exist to provide structure and direction on a preferred way to do something without being too detailed or rigid. In essence, frameworks provide guidelines. They are powerful because they provide guidance while being flexible enough to adapt to changing conditions or to be customized for your company while utilizing vetted approaches" -  Scott Ellis’ article “Frameworks, Methodologies and Processes
A methodology is an approach to ‘doing something’ with a defined set of rules, methods, tests activities, deliverables, and processes which typically serves to solve a specific problem. Methodologies demonstrate a well thought out, defined, repeatable approach.”

Oh! Tiếng Anh làm anh thanh niên hoa mắt vì a chỉ giỏi tiếng Nhật. Tuy nhiên vì võ vẽ có TOEIC nên anh cũng đã hiểu lờ mờ. Hoá ra framework thì theo định nghĩa sẽ là một hệ thống cấu trúc và định hướng để làm một việc gì đó nhưng không hề đi sâu vào chi tiết mà ngược lại nó chỉ là một sự hướng dẫn. Framework hoàn toàn linh động và cho phép chúng ta customize việc thực hiện tuỳ thuộc theo bối cảnh tuy nhiên vẫn giữ được sự chính xác trong cách tiếp cận.  Methodology thì chi tiết hơn khi cung cấp một tập các luật, phương pháp, hoạt động kiểm thử, các kết quả cần đạt được và các quy trình để giải quyết một bài toán xác định.

Framework vs Methodology ( - May 6, 2013)
Một chú ý khá thú vị là Framework có thể chứa framework khác hoặc methodology khác nhưng methodology thì có thể chứa methodology khác mà thôi

Dưới đây là danh sách software development framework và methodology đã được tổng hợp bởi wiki. Trong đó thú vị ở chỗ nếu chiếu theo tiêu chuẩn trên thì Scrum được tính là framework.

Lí do một vài trong số chúng được coi là framework trong khi số khác được gọi là methodology là ở mức độ chi tiết mà chúng cung cấp trong việc định nghĩa các hoạt động được thực hiện ở bên dưới và các tác vụ

Philosophy vs Approach vs Framework/Methodology

III. Tẩu hoả nhập ma

Ơ khoan! Hình như bị tẩu hoả nhập ma rồi thì phải! Thế còn các khái niệm về

  • Software Development Life Cycle : Chu trình ( vòng đời ) phát triển phần mềm
  • Software Development Process Model: Mô hình quy trình phát triển phần mềm
  • Project Management Life Cycle : Chu trình quản lý dự án

Hít một hơi thật sâu và tu luyện tiếp thì thấy hình như vẫn còn cơ hội trở về từ ma đạo. Trước hết hãy nói về SDLC

SDLC định nghĩa quy trình của việc phát triển một hệ thống hoặc phần mềm hay dịch vụ đạt được các yêu cầu đề ra. Nó gồm rất nhiều các hoạt động từ việc hiểu tại sao phải xây dựng phần mềm, tìm hiểu tính khả thi, phân tích vấn đề, lưa chọn kiến trúc và thiết kế, thực hiện kiểm thử cho đến khi bàn giao thành công sản phẩm đến tay khách hàng. SDLC là một quá trình phát triển dần dần, nghĩa là nó được hoàn thành thông qua một vài giai đoạn phát triển hay "phase". Trong đó phase sau tiếp tục và hoàn thiện những gì đã hoàn thành trong phase trước.

System Development Life Cycle

Tuy nhiên có thể nhận thấy rằng SDLC chỉ là một hướng tiếp cận và tương ứng với nó đã có các software development process models được định nghĩa và thiết kế để buộc phải tuân theo trong quy trình phát triển phần mềm. Mỗi một models sẽ quy định một chuỗi các bước tương ứng để khi tuân theo sẽ đảm bảo sự thành công trong quy trình phát triển phần mềm. Dưới đây liệt kê một số model chính :

  • Waterfall Model
  • Iterative Model
  • Spiral Model
  • V-Model
  • Big Bang Model

... Uh oh ... Nhìn cái SDLC hình kia sao cứ quen quen như hình dưới đây :

Waterfall models 

Vâng vì Waterfall model chính là một trong những software development process model lâu đời và quen thuộc nhất mà lị. Ấy nhưng đôi khi ta cũng nhầm nó với cái cái hình dưới đây ( Mấy ông PM là hay vớ vỉn vụ này )

Project Management Life Cycle

Vâng! Đây là chu trình quản lý dự án trong đó sẽ có các frameworks được sử dụng để quản lý các quy trình cần được tuân thủ để sản xuất ra phần mềm. Hiểu nôm na là bạn cần tuân thủ các bước trong quy trình sản xuất để làm ra sản phẩm nhưng các quy trình quản lý sẽ tồn tại song song và bổ trợ để việc tạo ra sản phẩm và chất lượng sản phẩm được đảm bảo.

Lời kết

Vậy là anh thanh niên 38 tuổi đã cơ bản hiểu được những gì trong nghề sau một thời gian bơi lội giữa dòng đời xuôi ngược. Giờ là thời gian làm 1 tách cafe và nghĩ cách báo thù cho cái "triết lý" code bull shit của thằng nhóc fresher kia.

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.