Cần chia sẻ kinh nghiệm làm mini project


(Anh Nguyen) #1

Mình mới học lập trình. Kiến thức cơ bản mình nắm khá vững. Mình học các lớp Hệ thống, Cấu trúc dữ liệu và giải thuật thấy không khó khăn gì, thỉnh thoảng còn thấy dễ. Các bài tập chủ yếu là viết lại mấy thứ như Linked List, cấu trúc cây. Học kì này mình lấy lớp về Design Pattern. Bây giờ bài tập nó khác hoàn toàn so với mấy lớp kia.

Để mình lấy ví dụ: viết chương trình Paint giống MS có chức năng vẽ hình, select, move, delete. Viết chương trình mô tả 1 cái xe bán bánh mì: người mua tên gì, bao nhiêu cái, nhân bánh mì là gì.

Mình thấy rất bỡ ngỡ. Các bài này nó không quá lớn, một cá nhân có thể làm được. Nhưng vấn đề ở chỗ đó h mình mới làm trên console là chính, bây h nhảy qua GUI không biết bắt đầu từ đâu. Tất nhiên thầy mình có chỉ chút chút ví dụ như demo Mouse Event đơn giản nhưng mình vẫn phải tự mò mẫm là chính.

Cho mình hỏi các bạn đi trước khi học thì nó như thế nào? Đại khái như mới từ viết Linked List học kì 1 thì sang học kì 2 nhảy cái vèo lên viết một chương trình hoàn chỉnh giống Paint mình nói ở trên thì các bạn làm gì để hoàn thành bài tập dạng như vậy? Làm sao để biết mình cần gì trong cái API?

Mình cần một ít lời khuyên về việc làm những mini project như vầy. Mình có hỏi bạn nhưng tụi nó bảo cứ google mà google toàn lời giải đâu có học được cái gì. Sách chỉ nói về các Design Pattern, hoặc cách dùng 1 ngôn ngữ thôi. Cái mình cần là ở giữa 2 cái đó: gợi ý/tư duy lập trình để mình có thể tự làm được các mini project mà không phải mỗi cái project lại mỗi hỏi.

Mong các bạn cho lời khuyên.


(Cao Van Thanh Cgdt) #2

Vấn đề là mình nghĩ bạn nên tận dụng khả năng kế thừa, cái nào người ta làm rồi thì không nên tự xây lại mà nên đạp lên mà để đi lên cao.
Bạn nên tận dụng tối đa các thư viện có sẵn, các api có sẵn nếu có time thì cá nhân hóa lại.
Mình nghĩ ứng dụng paint vốn sẽ không khó nếu bạn tận dụng các thư viện đồ họa có sẵn, và cuối cùng là vẫn phải gg nha, nhưng gg theo hướng đi mới là extend chứ không phải rebuild <3


(HelloWorld) #3

Nghe bạn nói thì mấu chốt là ở chỗ bạn chưa học sâu về ngôn ngữ và phân tích thiết kế, công nghệ phần mềm. Mà mới chỉ dừng lại ở mức dùng ngôn ngữ basic + oop, ngoài ra còn phần làm gui (nếu có), đọc ghi csdl,… các framework, lib thì bạn chưa học. Môn cấu trúc dữ liệu và giải thuật cài đặt mấy cái cấu trúc dữ liệu thì dễ, nhưng học mấy thuật toán kinh điển để ngấm và có thể ứng dụng thì mới khó. Bạn mới chỉ dừng lại ở việc dùng ngôn ngữ basic + oop cơ bản nên giờ gặp yêu cầu vậy bạn không biết bắt đầu từ đâu (cụ thể là bạn nói toàn làm trên console)
-> bạn đạng dùng ngôn ngữ nào thì học làm gui với ngôn ngữ đó
-> học phân tích thiết kế … Bạn học design pattern nghĩa là đã học sang môn kiến trúc phần mềm r, môn này học sau phân tích thiết kế và công nghệ phần mềm mà. Sao bạn lại gặp vấn đề như trên nhỉ?


(Anh Nguyen) #4

Mình là dân tay ngang. :slight_smile: Mình thích ngành này và công ty trả tiền nên mình đi học. Còn vấn đề tại sao thì đúng như bạn nói, mình không được học phân tích thiết kế hay công nghệ phần mềm. Đối vời những người chưa học lập trình thì họ yêu cầu học discrete math, cấu trúc dữ liệu và giải thuật rồi Hệ thống coi như là nhập môn rồi nhảy vào học với trình độ ngang năm 3 năm 4. Do đó mình phải tự bơi nhiều lắm.


(Anh Nguyen) #5

Cám ơn bạn. Cái đó mình lấy ví dụ thôi. Mình chỉ không biết nếu như tới lúc cái project mình làm không có thông tin trên Google rồi sao. Mình muốn giải quyết vấn đề từ gốc. Bạn HelloWorld nói đúng vấn đề của mình đó nhưng mình không biết giải quyết như thế nào.


(Hung) #6

Nó tuỳ thuộc vào project dựa trên tech stack gì (language, framework, helper libs, database, os, network,…) mà có cách develop và deploy khác nhau. Khi biết rõ technical stack thì có nhiều tech book (sách kĩ thuật) chuyên sâu giải quyết từng vấn đề.

Ví dụ cho trường hợp PHP, có 1 bạn trên Viblo đã share các sách cần học nếu project của bạn đang sử dụng Laravel framework và viết bằng PHP.

Trường hợp project của bạn là game, thì sẽ có nhiều sách cần học, từ ngôn ngữ C++ (template, exception, API design, algorithm,…), animation, networking, graphics, audio, engine, AI (for game),…


Ngoài ra, mình giới thiệu một cuốn sách khác, có thể áp dụng vào bất kì project nào (web, mobile, game, desktop,…).

Trong trường hợp bạn là product manager, và bạn có yêu cầu viết 1 software app mới hoặc cải tiến từ system có sẵn. Các vấn đề bạn phải đối mặt với từng thành viên trong project: end user, operator, researcher, development, data engineering,… và boss. Cách giải quyết khi trong project mỗi người có góc nhìn khác nhau (do kiến thức nền, kinh nghiệm khác nhau), dẫn đến phát sinh nhiều yêu cầu (requirement) và làm chệch hướng với kế hoạch ban đầu.

Hi vọng có ích cho bạn khi thực hiện project.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?