Thảo luận - Em cần hiểu sơ bộ về nghề phát triển phần mềm | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Thảo luận Em cần hiểu sơ bộ về nghề phát triển phần mềm

minhdai1992

Gà con
Như tiêu đề , em cần hiểu sơ bộ về nghề phát triển phần mềm.
E còn mơ hồ với nó quá.
Một nhà phát triển phần mềm tốt cần phải biết rằng, việc phát triển phần mềm bao gồm rất nhiều các công đoạn:
  • Xác định vấn đề: Bạn phải định rõ được vấn đề là gì trước khi có thể giải quyết nó,
  • Xây dựng/ thu thập yêu cầu: Khi đã rõ vấn đề rồi, hãy xác định nhu cầu của người dùng: họ muốn giải quyết vấn đề tới mức như thế nào? chi tiết ra sao? v.v….
  • Lên kế hoạch thực hiện: Bởi vậy có rất nhiều việc cần làm, bạn phải lên kế hoạch cẩn thận nếu như không muốn tất cả “chỉ là ý tưởng”.
  • Thiết kế kiến trúc tổng quan (high - level design): Khi đã xác định vấn đề rồi, bạn cần phải chọn lựa công cụ cần thiết để thực hiện, các bước chính yêu cầu xử lý, và tổng quan công việc cần phải làm.
  • Thiết kế chi tiết (detail design): Khi đã hình dung sơ bộ được bộ khung công việc, đã đến lúc xử lý chi tiết từng vấn đề một, bởi vì cùng một mong muốn, nhưng sẽ có nhiều cách khác nhau để thực hiện.
  • Viết code và debug: Khi đã biết mình phải làm cụ thể những gì, bắt tay vào code thôi. Đây là phần cụ thể nhất mà ta thường làm, do đó hay bị hiểu nhầm rằng phát triển phần mềm là chỉ có …. viết code.
 
Như tiêu đề , em cần hiểu sơ bộ về nghề phát triển phần mềm.
E còn mơ hồ với nó quá.
Một nhà phát triển phần mềm tốt cần phải biết rằng, việc phát triển phần mềm bao gồm rất nhiều các công đoạn:
Xác định vấn đề: Bạn phải định rõ được vấn đề là gì trước khi có thể giải quyết nó,
Xây dựng/ thu thập yêu cầu: Khi đã rõ vấn đề rồi, hãy xác định nhu cầu của người dùng: họ muốn giải quyết vấn đề tới mức như thế nào? chi tiết ra sao? v.v….
Lên kế hoạch thực hiện: Bởi vậy có rất nhiều việc cần làm, bạn phải lên kế hoạch cẩn thận nếu như không muốn tất cả “chỉ là ý tưởng”.
Thiết kế kiến trúc tổng quan (high - level design): Khi đã xác định vấn đề rồi, bạn cần phải chọn lựa công cụ cần thiết để thực hiện, các bước chính yêu cầu xử lý, và tổng quan công việc cần phải làm.
Thiết kế chi tiết (detail design): Khi đã hình dung sơ bộ được bộ khung công việc, đã đến lúc xử lý chi tiết từng vấn đề một, bởi vì cùng một mong muốn, nhưng sẽ có nhiều cách khác nhau để thực hiện.
Viết code và debug: Khi đã biết mình phải làm cụ thể những gì, bắt tay vào code thôi. Đây là phần cụ thể nhất mà ta thường làm, do đó hay bị hiểu nhầm rằng phát triển phần mềm là chỉ có …. viết code.

Xin chào bạn minhdai1992!

Mình là thành viên mới của diễn đàn VN-Z, mới đăng ký tài khoản vào hôm nay.
Mình có làm một hai phần trong team phát triển phần mềm, xin thảo luận góc nhìn cá nhân, mong bạn minhdai1992 và các bạn đọc có gì chưa tốt, mong được đóng góp thêm.

1. Tổng quan:

1.1. Dưới góc độ ngành nghề chung:

Ngành nghề phần mềm, có từ ngành/nghề nên sẽ có các đặc điểm chung của mọi ngành/nghề, và, có một số phần mang tính đặc thù riêng của ngành/nghề phần mềm.

Phát triển phần mềm cũng là một thể hiện tương tự một quá trình nghiên cứu và phát triển một sản phẩm trong cuộc sống.
Để phát triển một sản phẩm, sau đây, mình xin gọi là Sản xuất.
Gồm các nội dung chính sau: sản xuất cho ai, sản xuất cái gì và sản xuất như thế nào?
(Mình nhắn đây, trích từ khái niệm kinh tế. Mình là dân IT, nên xin phép có chưa đúng, các bạn chuyên ngành kinh tế đóng góp thêm)

1.2. Phân tích lý thuyết phát triển phần mềm:

Với 03 nội dungchính trên làm cơ sở, ta áp dụng vào quy trình phát triển phần mềm, gồm các bước mà bạn minhdai1992 đã đăng ở trên.

Các bước bạn minhdai1992 đăng ở trên, theo góc nhìn của mình, là các bước chính trong quy trình phát triển phần mềm chung.

Quy trình phát triển phần mềm là một cấu trúc bao gồm tập hợp các thao tác và các kết quả tương quan sử dụng trong việc phát triển để sản xuất ra một sản phẩm phần mềm. (tham khảo internet)

Mình xin ánh-xạ 03 nội dung trên với các bước bạn minhdai1992 đã nhắn:

- Sản xuất cho ai, sản xuất cái gì: phần này, có thể diễn giản là xác định khách-hàng/người-dùng (sau đây, xin gọi là người dùng) là ai? xác định yêu-cầu/mong-muốn/nhu-cầu của người dùng.

Để thực hiện nội dung này, tương ứng bước "Xác định vấn đề, Xây dựng/ thu thập yêu cầu"

- sản xuất như thế nào?: phần này, tương ứng các nội dung còn lại bạn minhdai1992 đã đăng.

Các bước trong quy trình phát triển phần mềm & các nội dung cơ sở để sản xuất phần mềm, là lý thuyết chung để các đơn vị sản xuất phần mềm tham khảo.

Với mỗi đơn vị riêng sẽ có lựa chọn mô hình cụ thể tương ứng với lý thuyết chung.

MÔ HÌNH
nghĩa hẹp là mẫu, khuôn, tiêu chuẩn theo đó mà chế tạo ra sản phẩm hàng loạt; là thiết bị, cơ cấu tái hiện hay bắt chước cấu tạo và hoạt động của cơ cấu khác (của nguyên mẫu hay cái được mô hình hoá) vì mục đích khoa học và sản xuất. Nghĩa rộng là hình ảnh (hình tượng, sơ đồ, sự mô tả, vv.) ước lệ của một khách thể (hay một hệ thống các khách thể, các quá trình hoặc hiện tượng). Khái niệm MH được sử dụng rộng rãi trong triết học, tin học, kinh tế học, toán học, ngôn ngữ học và các khoa học khác.
(Theo Từ điển Bách khoa Việt Nam)

Một số mô hình phát triển phần mềm như: Thác nước, xoắn ốc, mô hình chữ V và phát triển phần mềm linh hoạt.
Tiếng Anh: The waterfall, The Boehm's spiral, V, Agile.

Mỗi mô hình, sẽ có cách sắp xếp, phân bổ các bước chung trên thành nhiều hình thức khác nhau.
Ví dụ:
- Mô hình thác nước: sẽ làm tuần tự từng bước một. Kết quả của bước trước sẽ là đầu vào cho bước sau. Và mỗi bước thường chỉ làm một lần thật chính xác, ít khi làm lại.
- Mô hình xoắn ốc: các bước sẽ làm tuần tự. Nhưng sau một chu kỳ kết thúc hết lượt, sẽ bắt đầu lại chu kỳ mới.
- Mô hình Agile: là mô hình mình thường sử dụng. Tương tự mô hình thác nước và xoắn ốc. Nhưng cách làm sẽ chia thật nhỏ yêu cầu ra. Và Agile (linh-hoạt) nên yếu tố quyết định là: sẵn sàng theo thực tế trong quá trình triển khai thay vì bám sát theo kế hoạch ban đầu.
Với Agile, có rất nhiều bài viết chia sẻ về lý thuyết của mô hình này. VD: https://agilemanifesto.org/
Để rõ hơn, bạn có thể tra cứu thêm hoặc mong các bạn khác góp ý.

2. Làm rõ hơn các lý thuyết vào công việc phát triển phần mềm:

Lý thuyết giống như bản đồ giúp làm nền tảng định hướng. Để thực hiện cụ thể, ta sẽ xem qua một câu chuyện triển khai phần mềm (mình tự ví dụ) như sau:

Có một khách hàng liên hệ đến bạn minhdai1992 nhờ tư vấn về phần mềm bán cafe.
Bạn minhdai1992 lên cuộc hẹn, nhắn cho bạn gái hoặc vợ: "Mai anh có hẹn cafe với anh bạn, em lên diễn đàn online giúp anh nhé."

Ngày hôm sau, bạn minhdai1992 gặp khách hàng đó.
Thời tiết mùa này hơi se lạnh, hai người gặp nhau, cùng gọi món giống nhau là trà-gừng-nóng.
Sau một hồi khởi động bằng những chuyện thời sự để góp phần "hâm nóng" mối quan hệ của hai người, khách hàng và bạn minhdai1992 đi đến phần cao-trào, chia sẻ mong muốn về (giải pháp) phần mềm bán cafe.

Khách hàng nói: "Anh muốn khách sẽ cài ứng dụng, đăng ký tài khoản & đặt món bằng điện thoại di động. Xong rồi, nhân viên sẽ mang ra đúng vị trí khách ngồi. Thanh toán bằng tiền mặt hoặc quét mã QR kết nối ví điện tử."

Bạn minhdai1992 nói: "Ok anh, cái nào em cũng làm được hết".

Còn tiếp...

👌 👌👌👌👌👌👌

Mình đang có việc, xin phép, bình luận thêm vào tối ngày mai nha.

Chúc bạn minhdai1992 vui!
 
Sửa lần cuối:

nguyenden

Búa Đá Đôi
Xin chào bạn minhdai1992!

Mình là thành viên mới của diễn đàn VN-Z, mới đăng ký tài khoản vào hôm nay.
Mình có làm một hai phần trong team phát triển phần mềm, xin thảo luận góc nhìn cá nhân, mong bạn minhdai1992 và các bạn đọc có gì chưa tốt, mong được đóng góp thêm.

1. Tổng quan:

1.1. Dưới góc độ ngành nghề chung:

Ngành nghề phần mềm, có từ ngành/nghề nên sẽ có các đặc điểm chung của mọi ngành/nghề, và, có một số phần mang tính đặc thù riêng của ngành/nghề phần mềm.

Phát triển phần mềm cũng là một thể hiện tương tự một quá trình nghiên cứu và phát triển một sản phẩm trong cuộc sống.
Để phát triển một sản phẩm, sau đây, mình xin gọi là Sản xuất.
Gồm các nội dung chính sau: sản xuất cho ai, sản xuất cái gì và sản xuất như thế nào?
(Mình nhắn đây, trích từ khái niệm kinh tế. Mình là dân IT, nên xin phép có chưa đúng, các bạn chuyên ngành kinh tế đóng góp thêm)

1.2. Phân tích lý thuyết phát triển phần mềm:

Với 03 nội dungchính trên làm cơ sở, ta áp dụng vào quy trình phát triển phần mềm, gồm các bước mà bạn minhdai1992 đã đăng ở trên.

Các bước bạn minhdai1992 đăng ở trên, theo góc nhìn của mình, là các bước chính trong quy trình phát triển phần mềm chung.



Mình xin ánh-xạ 03 nội dung trên với các bước bạn minhdai1992 đã nhắn:

- Sản xuất cho ai, sản xuất cái gì: phần này, có thể diễn giản là xác định khách-hàng/người-dùng (sau đây, xin gọi là người dùng) là ai? xác định yêu-cầu/mong-muốn/nhu-cầu của người dùng.

Để thực hiện nội dung này, tương ứng bước "Xác định vấn đề, Xây dựng/ thu thập yêu cầu"

- sản xuất như thế nào?: phần này, tương ứng các nội dung còn lại bạn minhdai1992 đã đăng.

Các bước trong quy trình phát triển phần mềm & các nội dung cơ sở để sản xuất phần mềm, là lý thuyết chung để các đơn vị sản xuất phần mềm tham khảo.

Với mỗi đơn vị riêng sẽ có lựa chọn mô hình cụ thể tương ứng với lý thuyết chung.



Một số mô hình phát triển phần mềm như: Thác nước, xoắn ốc, mô hình chữ V và phát triển phần mềm linh hoạt.
Tiếng Anh: The waterfall, The Boehm's spiral, V, Agile.

Mỗi mô hình, sẽ có cách sắp xếp, phân bổ các bước chung trên thành nhiều hình thức khác nhau.
Ví dụ:
- Mô hình thác nước: sẽ làm tuần tự từng bước một. Kết quả của bước trước sẽ là đầu vào cho bước sau. Và mỗi bước thường chỉ làm một lần thật chính xác, ít khi làm lại.
- Mô hình xoắn ốc: các bước sẽ làm tuần tự. Nhưng sau một chu kỳ kết thúc hết lượt, sẽ bắt đầu lại chu kỳ mới.
- Mô hình Agile: là mô hình mình thường sử dụng. Tương tự mô hình thác nước và xoắn ốc. Nhưng cách làm sẽ chia thật nhỏ yêu cầu ra. Và Agile (linh-hoạt) nên yếu tố quyết định là: sẵn sàng theo thực tế trong quá trình triển khai thay vì bám sát theo kế hoạch ban đầu.
Với Agile, có rất nhiều bài viết chia sẻ về lý thuyết của mô hình này. VD: https://agilemanifesto.org/
Để rõ hơn, bạn có thể tra cứu thêm hoặc mong các bạn khác góp ý.

2. Làm rõ hơn các lý thuyết vào công việc phát triển phần mềm:

Lý thuyết giống như bản đồ giúp làm nền tảng định hướng. Để thực hiện cụ thể, ta sẽ xem qua một câu chuyện triển khai phần mềm (mình tự ví dụ) như sau:

Có một khách hàng liên hệ đến bạn minhdai1992 nhờ tư vấn về phần mềm bán cafe.
Bạn minhdai1992 lên cuộc hẹn, nhắn cho bạn gái hoặc vợ: "Mai anh có hẹn cafe với anh bạn, em lên diễn đàn online giúp anh nhé."

Ngày hôm sau, bạn minhdai1992 gặp khách hàng đó.
Thời tiết mùa này hơi se lạnh, hai người gặp nhau, cùng gọi món giống nhau là trà-gừng-nóng.
Sau một hồi khởi động bằng những chuyện thời sự để góp phần "hâm nóng" mối quan hệ của hai người, khách hàng và bạn minhdai1992 đi đến phần cao-trào, chia sẻ mong muốn về (giải pháp) phần mềm bán cafe.

Khách hàng nói: "Anh muốn khách sẽ cài ứng dụng, đăng ký tài khoản & đặt món bằng điện thoại di động. Xong rồi, nhân viên sẽ mang ra đúng vị trí khách ngồi. Thanh toán bằng tiền mặt hoặc quét mã QR kết nối ví điện tử."

Bạn minhdai1992 nói: "Ok anh, cái nào em cũng làm được hết".

Còn tiếp...

👌 👌👌👌👌👌👌
hết rồi à bạn?
 

Pham Cong

Rìu Bạc
Như tiêu đề , em cần hiểu sơ bộ về nghề phát triển phần mềm.
E còn mơ hồ với nó quá.
Anh có thể tóm tắt cho em như thế này:
Để bước vào 1 nghề nào đó thì trước tiên em phải có "cảm tình" với nghề mình định chọn. Nếu em có cảm tình với bộ môn Tin học thì em hãy đọc tiếp, còn không thì thôi vì phía bên dưới anh sẽ nói chuyên biệt về "nghề viết phần mềm" cho em hiểu.
Đã gọi là nghề tức là mình chọn "cái đó" làm thu nhập chính cho mình, tức sản phẩm làm ra phải đem lại giá trị kinh tế cho em và có sự đầu tư về chuyên môn cao, đồng nghĩa với việc người làm nghề phải đầu tư sức khỏe và trí tuệ nhiều vào nghề đó thì mới mong đạt kết quả tốt được. Nãy giờ anh nói hơi trừu tượng, bây giờ anh sẽ đi vào vấn đề chính.
Viết phần mềm có rất nhiều lĩnh vực mà em cần phải xác định để đi theo 1 hướng cho tốt, tránh đi lang man vì Tin học vốn dĩ nó rất rộng. Lập trình được chia làm nhiều hướng:
- Lập trình cho ứng dụng
- Lập trình cho Trí tuệ nhân tạo
- Lập trình cho Hệ thống: Can thiệp sâu Hệ điều hành, điều khiển thiết bị phần cứng.....
- Lập trình cho Game
- Lập trình .......
Mỗi nhóm lập trình còn chia nhiều hướng khác nhau nữa vì nó phụ thuộc vào nền tảng mà nó sẽ chạy, ví dụ mình viết trên nền tảng Windows, trên MAC, Trên Androi, trên IOS.....mỗi nền tảng sẽ có ngôn ngữ đảm trách khác nhau.
Sau khi đã xác định hướng đi cho mình, em sẽ nghiên cứu và đi đến quyết định sẽ chọn ngôn ngữ nào để học và viết, vì mỗi ngôn ngữ lập trình sẽ có thế mạnh, thế yếu khác nhau, và không có ngôn ngữ nào là mạnh toàn diện cả (ít nhất là cho đến thời điểm này). Ví dụ Em dùng ngôn ngữ ASP thì em khó mà dùng nó để lập trình điều khiển các thiết bị tốt được, hoặc em dùng C++ em có thể lập trình cho Hệ thống đồng thời viết ứng dụng quản lý nhưng em không thể dùng nó để lập trình các trò chơi tốt được.
Nói về ngôn ngữ lập trình thì theo anh một ngôn ngữ lập trình là một ngoại ngữ và người biết nhiều ngôn ngữ lập trình là người biết nói nhiều ngoại ngữ vậy.
Người lập trình viên chuyên nghiệp cần phải học qua đầy đủ các môn học về lập trình như: Phân tích hệ thống, Phân tích CSDL, biết viết giả thuật..... chứ không thể chạy nhào đi học vài khóa về lập trình là có thể "hành nghề" được (đó là quan điểm của cá nhân anh).
Trong quá trình viết phần mềm sẽ có những lúc cả 1 ngày em không viết được đoạn code nào, nhưng có thể trong 1 bữa ăn cơm nghỉ xả hơi, hoặc trên đường đi làm về....bất chợt ý tưởng vụt sáng, em vội dừng lại tất cả, chụp cây bút viết nghệch ngoặc vài dòng lên tờ giấy để rồi sau đó đưa vào chương trình nó đã chạy Oke.
Lập trình là vậy, mình phải có đam mê lớn với nó ngay cả trong bữa ăn và những lúc nghỉ ngơi để rồi em sẽ có những sáng kiến bất chợt ập đến với em như nhà khoa học Acsimet từng phát hiện ra lực đẩy khi đang trong bồn tắm vậy.
Lập trình là khó nhưng cũng là dễ. Khó là vì không phải ai cũng lập trình tốt được, nhưng dễ là vì có rất nhiều người thành công thì ta cũng có thể thành công.
Chúc em thành công!
 
Sửa lần cuối:


Top