Phải làm gì để trở thành một lập trình viên giỏi ?

Trên thực tế, lập trình không hề khó, nếu bạn thực sự quan tâm đến nó. Vậy thì nên học như thế nào cho tốt?

10488222_278061335700376_8412628655009748865_n

1. Phải có khả năng tự kỷ ám thị, ví dụ như “lập trình” là mục đích của cuộc đời, không trở thành “lập trinh viên giỏi” tôi không biết phải làm gì. “Lập trình thật dễ”…v.v Làm sao để cho mình cảm thấy việc học lập trình và lập trình là công việc thiết yếu, mang tính sống còn (giống thi đại học), bạn sẽ học được nhanh và hiệu quả hơn.

2. Học tập dựa trên tích lũy, không có việc học chỉ trong một ngày. Với anh, anh có thể viết nguyên một app bằng PHP hoặc Ruby On Rails chỉ trong một ngày (dù anh chưa học hai thứ này) nhưng đó không phải là nhờ vào tài năng bẩm sinh, nó nhờ vào quá trình học tập và tích lũy những khái niệm tương tự từ .NET, Java… Quỹ thời gian học tập/viết bài/làm dự án cá nhân của anh là 4 giờ / tối.

3. Không thể làm ứng dụng đàng hoàng nếu thiếu lý thuyết, nhưng cũng không thể làm việc hiệu quả nếu không làm dự án thực tế và luyện tập miệt mài. Vì vậy, việc đọc sách/báo/bài viết và tự nghĩ ra các bài tập để rèn luyện kỹ năng đã học là việc làm cần làm thường xuyên, xen kẽ và không bao giờ ngừng lại.

4. Tri thức là vô hạn, năng lực học tập là hữu hạn, vì vậy bạn không thể cùng một lúc học hết được tất cả, hãy học thứ cốt yếu, lưu lại (bookmark) và sưu tầm những thứ là thứ yếu để sau này có thể dùng khi cần. Ví dụ: biết lập trình javascript là cốt yếu, biết cách sử dụng một plugin để hiển thị album ảnh theo kiểu như LightBox hoặc như Facebook là thứ yếu, tuy nhiên vẫn cần phải tìm kiếm các thư viện và đánh dấu nó để dùng khi cần.

5. Viết ứng dụng không phải là dòng suy nghĩ, vì suy nghĩ đôi khi nó tràn tới như bão và không có thứ lớp, còn ứng dụng cần phải được cấu trúc rõ rành, rạch ròi, vì vậy, là lập trình viên tốt cần phải nắm bắt cách cấu trúc ứng dụng, phân chia ứng dụng ra các thành phần cụ thể, ráp nối chúng lại với nhau, làm sao để mỗi lần có sự thay đổi, chỉ thay đổi một thành phần của dự án chứ không đi xáo tung toàn bộ dự án.

6. Mã lệnh ta viết không chỉ mình ta đọc, mà để dành cho cả team cùng đọc. Phần mềm, như mọi sản phẩm khác, muốn là sản phẩm tốt và tinh xảo, cần phải huy động bộ máy nhiều người cùng góp sức mới có thể ra được sản phẩm dùng được, tốt, và có tương lai. Vì vậy, luôn giữ trong lòng, rằng mọi thứ ta lập trình cần phải giữ được sự đơn giản, dễ hiểu, gọn gàng, tinh tế và dễ dàng sửa đổi hoặc thay thế. Làm ra một mớ xà bần không khó, nhưng tạo ra những thứ dễ hiểu đối với tất cả mọi người là một nghệ thuật. Vì vậy, người lập trình, bản thân họ phải tự rèn luyện họ để trở thành những kỹ sư công nghiệp và là những nhà nghệ thuật bậc thầy.

7. Lập trình giống như công việc của công nhân & kỹ sư xây dựng, nhà xấu hay nhà tốt phụ thuộc vào các yếu tố: bản vẽ tốt, chất liệu tốt, tay nghề xây dựng tốt để áp dụng đúng kỹ thuật và cách thức, và một yếu tố cũng quan trọng không kém đó là sự hiểu biết lẫn nhau và phối hợp nhịp nhàng để thực hiện công việc. Nói nhỏ thì là team working (làm việc nhóm), nói lớn thì là process và project management (quy trình làm việc và quản lý dự án). Để dự án hoạt động trơn tru, thì kỹ sư phải có thêm sự hiểu biết rõ rệt về quy trình, cách thức vận hành dự án, để có thể phối hợp với mọi người và dự án trưởng để dự án thành công. Vì vậy, em không chỉ nên học lập trình, mà cũng cần phải học cách phối hợp lập trình, quy trình phát triển phần mềm, các vai trò trong dự án phần mềm, tại sao cần có những thứ đó, ví dụ tại sao cần có tester, các dự án càng lớn, kỹ sư càng giỏi nhưng lượng tester không giảm đi mà lại càng nhiều? ..v.v

8. Làm khoa học là “tự sướng”, làm kinh doanh / sản phẩm là “làm cho người ta sướng” (trích dẫn lời của bác Nam công ty FPT, anh nghe được hồi bác ấy đi nói chuyện với SV miền trung để vận động cho cuộc thi Trí Tuệ Việt Nam). Vì là “làm cho người ta sướng” nên cái tôi cá nhân phải được đặt trong vị trí khiêm tốn, thay vào đó, lập trình là vì sự thỏa mãn của khách hàng, tất cả là vì khách hàng. Khách hàng thường hay thay đổi, họ không biết diễn tả chính xác thứ họ cần, họ hay phàn nàn, họ không hiểu rõ nổi khổ của lập trình viên… nhưng sao cũng được, khi họ là khách hàng, ta là người cung cấp sản phẩm, hãy cố bằng mọi cách mang lại những sản phẩm tốt nhất và kịp thời nhất trong mức có thể cho khách hàng. Giao tiếp, thương thảo, khả năng mô tả, diễn đạt ý tưởng là những kỹ năng quan trọng mà ta cần phải có. Nhưng trên hết vẫn cần có thái độ cầu thị, nhiệt thành, chân thật, và luôn mong muốn mang lại giá trị tốt đẹp cho mọi người.

9. Mình học được nhiều thứ từ mọi người, từ các blogger trên internet, từ sách mua/sách chùa, từ open source… Đã biết nhận thì phải biết cho, nên luôn coi “chia sẻ” là việc nên làm, và luôn làm. Cho đi không chỉ mất, mà còn được rất nhiều, được sự ghi nhận, được comment (đánh giá, nhận xét) nhờ đó mà hoàn thiện những thứ còn thiếu sót, được trở thành thành viên của một cộng đồng, và nhận được sự giúp đỡ nhiệt tình hơn từ mọi người. Và thực ra “cho” là một cách để “nhận” được nhiều hơn. Sống là sẻ chia! Triết lý đơn giản, nhưng áp dụng thành công thì rất khó!

Chúc các bạn học tập tốt!

Theo Internet

Advertisements

Posted on June 8, 2015, in Tin học and tagged . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: