Như thường lệ, giữa tuần mình up bài hay lên cho mọi người đọc. Cuối tuần sẽ có bản dịch.
Chủ đề lần này như title, thiết kế phần mềm có cần phải có kinh nghiệm lập trình không. Bài viết cực kỳ giá trị này do mình lấy từ blog của CEO Sonic Garden. Các bạn đọc và đánh giá xem thử quan điểm ông ấy đúng hay sai, bản thân có ý kiến phản biện không. Riêng mình mới chỉ làm design có 3 năm, còn rất nhiều khiếm khuyết. Sau khi đọc bài thấy sáng tỏ ra nhiều thứ. Ví dụ trước khi trả lời cho câu hỏi ở trên, ông tách design thành 2 loại, mỗi loại có yêu cầu khác nhau. Các này mình trước giờ đã trải qua nhưng chưa hề nghĩ ra. Thật là vi diệu.

「プログラミング経験のない人がソフトウェアの設計をすること」の是非について、どう考えますか?

Hiện dịch

Bạn nghĩ thế nào về tính đúng sai của việc “người không có kinh nghiệm lập trình mà đi thiết kế phần mềm”

もしかしたら、このブログの読者であれば、プログラミングが出来ないのにソフトウェア設計をするなんてありえない!という意見の方が多いかもしれません。私もそういう意見ではあったのですが、色々な人と話をするにつけ、どこか違和感を感じていました。

Hiện dịch

Có lẽ nhiều người trong số bạn đọc blog này sẽ có ý kiến cho rằng nếu là người chưa từng code thì khó mà design được. Tôi cũng từng nghĩ như các bạn vậy nhưng sau khi nói chuyện với rất nhiều người thì thấy có gì đó sai sai.

その違和感の正体を探るべく、ソフトウェア設計とプログラミングについて考えてみました。そこでわかったことは「ソフトウェア設計」について、人それぞれに捉え方が違うために、話が通じないことがあることから産まれた違和感だったということです。

この記事では、私の考える「ソフトウェア設計とは何か」について書きました。

Hiện dịch

Sau khi đi tìm hiểu cặn kẽ bản chất của cái cảm giác “sai sai” ở trên, tôi đã thử suy nghĩ về các khía cạnh của 2 vấn đề đã nêu ra từ đầu đó là Lập Trình và Thiết Kế. Để làm rõ sự khác nhau của cách tiếp cận đối với từng người trong việc thiết kế, thì phải giải quyết triệt để các khúc mắc.

Đầu tiên tôi sẽ ghi ra ý kiến cá nhân đối với khái niệm “Thiết Kế phần mềm là gì”.

ソフトウェア開発はすべてが「設計」である

Toàn bộ các công đoạn phát triển phần mềm đều thông qua thiết kế.

モノづくりにおいて、大きく工程を2つに分けるとしたら「設計」と「製造」に分けることが出来ます。何をどう作るかを決めることを「設計」と呼び、それを実際のモノにすることを「製造」と呼んでいると思います。

Hiện dịch

Trong chế tạo sản phẩm, ta có thể chia thành 2 công đoạn lớn đó là “thiết kế” và “chế tạo”. Việc quyết định làm cái gì và như thế nào ta gọi là thiết kế, còn thực thi để cho ra sản phẩm thì gọi là “chế tạo”.

たとえば、家を建てようという場合は、建築士が「設計」を行い、大工が「製造(施工)」を行う、という役割分担だと考えられます。また、iPhoneの裏にはこう印字されています。”Designed by Apple in California assembled in China”。これは「設計」をカリフォルニアのアップルが行って、「製造(組み立て)」は中国で行われたということです。

Hiện dịch

Ví dụ, trường hợp xây một ngôi nhà, ta cũng phân chia ra được 2 vai trò như sau : kiến trúc sư sẽ [thiết kế], thợ xây sẽ làm công việc [xây dựng]. Thêm 1 ví dụ khác, các bạn có thể thấy dòng chữ in phía sau chiếc iPhone “Designed by Apple in California assembled in China”. Ở đây, phía thiết kế chính là Apple tại Califọtnia. Còn chế tạo là do các xí nghiệp bên Trung Quốc.

このように、モノづくりでは「設計」と「製造」を分けて考えることが出来ます。

ソフトウェアの場合はどうでしょうか。ソフトウェア開発であっても「設計」と「製造」を分けて考えることが出来ます。では、ソフトウェア開発において「設計」とは何を指していて、「製造」とは何でしょうか。

ソフトウェア開発の業界にいる多くの人が、ソフトウェア開発における「製造」とは、プログラミングのことだと考えています。そのため、「製造」であるプログラミングだけをアウトソースできると信じています。

Hiện dịch

Như vậy là nếu như chia việc làm ra sản phẩm thành 2 phần : thiết kế vs chế tạo thì không có gì sai đúng chưa nào.

Trong software thì như thế nào chúng ta hãy cùng xem xét. Phát triển phần mềm cũng chia đôi được thành “thiết kế” + “chế tạo”. Vậy thì “thiết kế” ở đây chỉ cái gì vs “chế tạo” là gì ?

Việc phát triển một sản phẩm phần mềm thường sẽ có rất nhiều người tham gia. Riêng công việc “chế tạo” thì chỉ bao gồm lập trình. Vậy nên chỉ có những người biết lập trình mới làm được công đoạn “chế tác”.

設計にはプログラミング経験が必要か否か

Thiết kế phần mềm có cần kinh nghiệm lập trình không ?

最後に、最初の問いに戻りましょう。「プログラミング経験のない人がソフトウェアの設計をすること」の是非について。

ソフトウェア設計には「仕様の設計」と「ソースコードの設計」があります。

Hiện dịch

Cuối cùng, chúng ta sẽ quay trở về câu hỏi đã đặt ra từ đầu. Tính đúng sai của vấn đề “Người không biết lập trình mà đi làm thiết kế”. Thực ra thiết kế phần mềm có tới 2 loại đó là “Requirement Design” vs “Source code Design”.

「仕様の設計」は、ソフトウェアを作りたいと思う人(プロダクトオーナー)には、必ずしもプログラミングのスキルは必須ではないですが、そのソフトウェアのプログラミングを行うプログラマが一緒に入って設計しなければ、良い設計は出来ないでしょう。

Hiện dịch

Với “requirement design” (thiết kế yêu cầu) thì người muốn làm ra phần mềm (Product Owner) không nhất thiết phải có programming skill (kỹ thuật lập trình), nhưng mà Programmer (Lập trình viên – level cao hơn developer nhé) – người mà lập trình cái software đó nếu không nhảy vào cùng thiết kế thì sẽ không thể có được 1 bản design hoàn hảo.

「ソースコードの設計」は、間違いなくプログラミングのスキルは必要になります。そもそも現代のプログラミングにおいて、ソースコードの設計とコーディングは不可分であり、それがもし分かれているとしたら、相当に非効率なことが起きているはずです。

Hiện dịch

Còn “Source code design” thì tất nhiên là phải cần người có skill lập trình rồi. Trong nghành lập trình thời kì này thì việc tách ra thành “source code design” vs “coding” rất khó, vì nếu phân chia kiểu đó sẽ không mang lại hiệu quả cho người đảm nhận.

これから先は「仕様を設計する」ことだけをする人の仕事はなくなるでしょう。
そして「ソースコードを設計する」ことだけしか出来ない人も生き残れません。

Hiện dịch

Kể từ bây giờ thì người nào chỉ làm công việc “requirement design” thì coi chừng sẽ thất nghiệp. Và cũng sẽ không còn người nào mà chỉ biết có mỗi “source code design” cả.

Kết

Các bạn hãy khoan vội coi việc này là đúng hay sai. Đó chỉ là ý kiến của ông CEO nào đấy (link dưới). Thực ra tốt hơn hết là hãy luôn đặt cái tâm của mình vào mỗi sản phẩm thiết kế. Tức là suy nghĩ cả 2 khía cạnh, design của mình đã đảm bảo được yêu cầu đầu vào chưa. Đảm bảo ở đây là đúng – đủ. Thứ 2 đó là đầu ra của mình có tính khả thi không và đội tiếp nhận đọc xong có hiểu và làm theo được không. Đối với “source code design” thì không những phải biết lập trình mà phải dày dạn kinh nghiệm lập trình mới làm được. Vì khi master coding mình mới có thể biến những thứ phức tạp thành câu chữ giản đơn.

Link : https://kuranuki.sonicgarden.jp/2013/01/post-109.html

Rate this post
[IT読解]Bài 2 : Thiết kế phần mềm có cần kinh nghiệm lập trình không
Nếu thấy hay thì đừng ngại
Tagged on:             

Nếu không thích comment bằng facebook chỉ cần nhập tên rồi bình luận ở đây

Be the First to Comment!

avatar
wpDiscuz