Lập trình : dễ hay khó ?

Bài viết sau khá thú vị, vì là thành quả của google search nên tôi chưa tìm ra nguồn gốc chính xác của nó. Post lên đây để mọi người thươnrg thức.

Lập trình – dễ hay khó

Trước khi học một ngôn ngữ mới, bạn thường đặt ra câu hỏi: Làm sao để học ngôn ngữ lập trình này được hiệu quả? Có một vài gợi ý nhỏ sau có thể giúp bạn học các ngôn ngữ lập trình dễ dàng hơn:

1. Nắm vững các kiểu dữ liệu cơ bản mà ngôn ngữ lập trình cung cấp.

Hầu hết các ngôn ngữ đều cung cấp kiểu số nguyên integer. Bạn phải tìm hiểu thêm thế nào là long integer hoặc short integer? Thế nào là kiểu liệt kê (Enumerated)? Thế nào là kiểu kí tự (Character)? Thế nào là kiểu chuỗi (String)? Ngôn ngữ có hỗ trợ kiểu số thực dấu chấm động hay không, và tầm giá trị của mỗi kiểu dữ liệu là bao nhiêu? Và khi một ngôn ngữ nào đó không hỗ trợ kiểu dữ liệu mà bạn cần dùng thì tốt hơn bạn nên chuyển sang dùng một ngôn ngữ khác.

2. Nắm vững cấu trúc dữ liệu cơ bản được ngôn ngữ cung cấp.

Chẳng hạn Pascal có cấu trúc mảng (array), Lisp có thể thao tác rất dễ dàng với cấu trúc danh sách (list), còn Java thì có thể làm việc với các lớp và các giao tiếp.…Và những vấn đề bạn nghĩ trong đầu cuối cùng phải được biểu diễn bằng các kiểu dữ liệu mà ngôn ngữ cung cấp, việc hiểu rõ mối quan hệ giữa chúng là nền tảng để giải quyết các vấn đề.

3. Ngôn ngữ cung cấp những toán tử dựng sẵn nào?

Ví dụ: Prolog xem tìm kiếm là một thao tác cơ bản, Snobol xem thao tác đối sánh mẫu trên các chuỗi (string pattern matching) là một toán tử cơ sở, các ngôn ngữ hàm (ML, Haskell) cho phép bạn tạo ra một giá trị mới nhưng không làm thay đổi cấu trúc hiện tại, APL cung cấp toán tử ma trận, … Danh sách các toán tử dựng sẵn của một ngôn ngữ sẽ cho ta biết những vấn đề mà những chuyên gia thiết kế ngôn ngữ đó cho là quan trọng nhất.

4. Nắm vững loại vấn đề mà ngôn ngữ có thể trợ giúp giải quyết.

Các ngôn ngữ thường được phát triển vì một lý do nào đó, thường là để giải quyết một loại vấn đề mang tính đặc trưng. Do đó, bạn nên cố gắng nắm rõ những chức năng đặc trưng của ngôn ngữ để giải quyết vấn đề đồng thời cũng nên tìm hiểu tại sao cùng một vấn đề nhưng dùng ngôn ngữ này để giải quyết lại dễ dàng hơn dùng ngôn ngữ khác.

5. Tìm hiểu những thư viện có sẵn trong ngôn ngữ.

Các ngôn ngữ thường có các thư viện do nhiều người đã phát triển để giải quyết những vấn đề khác nhau, bạn có thể sử dụng lại để giải quyết một vấn đề mới. Smalltalk có một thư viện đồ sộ với lượng mã luôn sẵn sàng để người lập trình sử dụng. C++ với thư viện chuẩn STL chứa nhiều cấu trúc dữ liệu thường dùng. Java có các thư viện cung cấp các tác vụ về mạng. Bạn hãy cố gắng tìm và sẽ thấy những gì cần thiết sẵn có.

6. Hãy học hỏi, mô phỏng lại!

Bắt đầu với việc mô phỏng lại các chương trình hiện có. Phải làm cho chúng có thể hoạt động trên hệ thống của bạn, bởi vì hệ thống mà nó được phát triển có thể không giống với hệ thống của bạn, và khi bạn có thể làm cho nó hoạt động tốt trên hệ thống của mình thì tức là bạn đã hiểu rõ về nó. Học các chương trình để hình dung được các tính năng khác nhau của ngôn ngữ.

7. Hãy thử nghiệm và rút ra kết luận!

Khi bạn đã có một vài chương trình có thể chạy tốt, bạn thử nghiệm bằng cách tạo ra một vài thay đổi. Bạn có thể lấy ra một chương trình và sửa lại nó để giải quyết một vấn đề sai khác chút ít so với chương trình ban đầu hay không? Bạn có thể lấy ra một phần nhỏ của chương trình và diễn đạt lại bằng cách khác hay không?

8. Hiện thực lại các vấn đề đã hiểu rõ bằng một ngôn ngữ mới.

Lấy một vài chương trình đã được viết trong một ngôn ngữ rồi cố gắng viết lại chúng trong ngôn ngữ mới. Không nên dịch từng câu lệnh sang ngôn ngữ mới mà hãy xem xét những tính năng đặc trưng nào của ngôn ngữ mới có thể dùng để giải quyết vấn đề. Cẩn thận xem xét những vấn đề nào dễ dàng hiện thực trong ngôn ngữ mới và những vấn đề nào khó khăn hơn. (Chương trình truyền thống đầu tiên nên viết là chương trình in ra chuỗi “hello world”).

9. Khi gặp một vấn đề mới thì nên nghĩ về những vấn đề đã biết trước đó có cùng đặc điểm với vấn đề mới. Sau đó hãy bắt đầu thử nghiệm.
Tin học cho người mới bắt đầu
Chương trình đầu tiên cần phải học chính là hệ điều hành.
Nếu đang sử dụng Windows thì học Windows, Linux thì học Linux…
Hiện nay hầu hết các hệ điều hành đều có giao diện trực quan GUI, cho nên việc học để sử dụng nó đã trở nên rất dễ dàng.
Tuy nhiên, khi học bạn cũng nên quan tâm đến những điều cốt lõi cần phải nắm bắt đó là :
-thế nào là một tập tin, thư mục, ổ đĩa – hiểu được rõ ràng chính là bạn đã hiểu được cách hệ điều hành tổ chức dữ liệu như thế nào rồi;
-làm thế nào để thực hiện các thao tác copy, cắt, dán- đó là các thao tác cơ bản khi bạn thao tác với dữ liệu.
– Sử dụng được các chương trình đi kèm theo với hệ điều hành. Hiện nay thì hệ điều hành nào cũng “khuyến mãi” các chương trinh như soạn thảo văn bản (WordPad, VI), vẽ, máy tính bỏ túi, trình duyệt Web.

Chương trình thứ hai là chương trình phục vụ cho nhu cầu sử dụng của bạn.

Các chương trình quan trọng nhất mà mình đề ngị các bạn nên Master cách sử dụng là Nescape, IE, OE…YM,IRC…Các khái niệm cần nắm bắt là thế nào là một trang Web, địa chỉ trang Web. Làm sao để tìm kiếm một trang Web mà mình cần. Trang Web mà mình thích nhất là www.google.com

Nếu bạn thường xuyên phải xử lý văn bản thì học cách sử dụng các chương trình Office, Lotus, StarOffice…

Nếu bạn muốn là lập trình viên thì nên học cách sử dụng các chương trình hỗ trợ lập trình.

Hiện nay, theo mình các phần mềm đều được thiết kế trực quan, rất dễ sử dụng. Cho nên, dưới góc độ user, mình nghĩ chỉ cần xài nhiều thì biết nhiều, hư nhiều thì cài lại nhiều, càng biết nhiều.

Chương trình thứ ba, thứ tư,…cũng là chương trình phục vụ cho nhu cầu sử dụng của bạn
Các câu hỏi thường gặp
Tôi vừa tốt nghiệp đại học ngành công nghệ thông tin, những bài tập lập trình trong chương trình học đối với tôi không quá khó để hoàn thành, nhưng tôi vẫn e rằng, những khả năng của mình vẫn còn khá “amateur” để tồn tại trong một môi trường làm việc chuyên nghiệp.

Tôi vẫn còn 5 hay 6 tháng trước khi có một cuộc phỏng vấn với một công ty hàng đầu về tin học, ai đó có thể cho tôi biết những kỹ năng nào cần hoàn thiện trước khi phải đối mặt với những qui luật khắt khe trong công việc?

…chân thành cảm ơn.

Trả lời của một người thuê lập trình viên :

Trên quan điểm của một người thuê lập trình viên, tôi khuyên bạn nên mang tới buổi phỏng vấn một vài chương trình bạn đã từng viết. Chúng sẽ phần nào phản ánh được khả năng hoàn thành các phần việc được giao đồng thời thể hiện được những hiểu biết về lý thuyết chẳng hạn như: mô hình phát triển 3 tầng (3 – tier), các kỹ thuật lập trình hướng đối tượng …

Trả lời của một lập trình viên :

Đây là một vấn đề trăn trở từ khi tôi còn là một tân lập trình viên như bạn.
Ngoài việc học các kỹ năng về công nghệ, một kỹ năng vô giá nhưng ít được nói tới là cách trở thành một người lĩnh hội nhanh. Đây là một vấn đề không thuộc về phạm trù kỹ thuật, là kỹ năng cơ bản nhưng lại thiếu ở nhiều người. Ngày nay, các công ty hầu như không đưa ra các khóa tu nghiệp đầy đủ nữa, thay vì vậy lại muốn bạn có được khả năng đào sâu những vấn đề quan trọng. Nói thẳng ra, họ không giúp bạn được nhiều. Vì vậy, tôi xin giới thiệu một vài kinh nghiệm rút ra được trong quá trình làm việc và học tập:


1. Trước tiên, phải tìm hiểu hệ thống mạng của công ty để biết được tài nguyên có sẵn mà cụ thể hơn là mã chương trình. Từ nguồn mã này, bạn có thể biết được cách làm việc của mọi người trong công ty. Lưu giữ cho riêng mình các đoạn mã chẳng hạn như các template có thể sẽ giúp đỡ bạn rất nhiều trong việc nắm bắt các khúc mắc gặp phải.
2. Dành thời gian để nghiên cứu về cách thức hoạt động và lý do vì sao lại hoạt động như vậy của các đoạn mã mà những người trong công ty viết ra để nắm bắt được vấn đề một cách sâu sắc. Điều này cũng giúp bạn có được khả năng “cảm giác” những công việc sẽ phải thực hiện.
3. Không ngừng rèn luyện kỹ năng gõ phím của mình. Khả năng cảm giác vị trí phím nhanh có thể giúp bạn tăng năng suất công việc.
4. Rèn luyện khả năng đọc và nắm bắt vấn đề nhanh. Rõ ràng, đây là một vấn đề không phải dễ gặm. Thử ghé thăm các trang web phục vụ học tập đặc biệt là các trang về rèn luyện kỹ năng trí tuệ, chẳng hạn như brain.com. Trên các trang này sẽ có nhiều sản phẩm phục vụ việc phát triển nhanh chóng các kỹ năng về trí tuệ.

Những gợi ý trên bao gồm nhiều kỹ năng cơ bản mà bạn phải tốn thời gian để có được, nhưng những lợi ích đem lại chắc sẽ làm bạn ngạc nhiên, vậy hãy bắt đầu ngay bây giờ.

Kiến thức nền tảng là quan trọng để đưa bạn tới cánh cửa của công việc. Tuy nhiên, bạn sẽ sớm nhận thấy rằng hầu hết các công ty đều quan tâm nhiều tới khả năng nắm bắt được cách thức làm việc của họ. Nói cách khác là họ quan tâm đến khả năng thích nghi với công việc cũng như các công nghệ mới hơn là kiến thức mà bạn mang theo trong người. Tóm lại, họ muốn tìm người có thể giúp họ thành công và khi gặp một ai đó có khả năng lĩnh hội tốt, họ sẽ bị thuyết phục ngay.

Trả lời của một lập trình viên :

Đừng quá lo lắng về những kỹ năng mà bạn có. Bạn đã là một người lập trình tốt trong thời gian theo học đại học, vì vậy chỉ cần có sự tự tin thì bạn sẽ hoàn thành tốt mọi thứ trong một môi trường chuyên nghiệp. Họ cũng sẽ sử dụng những kỹ năng mà bạn đã biết. Không có gì mới mẻ hay bí mật cả, họ chỉ muốn biết cách bạn hoàn thành đúng công việc. Không có ai có thể nắm bắt mà không cần kinh nghiệm, vì vậy trong thời gian trước khi phỏng vấn, bạn nên thực hiện một vài dự án để có thể đổi mới một vài quan điểm nhằm mang lại một ít kinh nghiệm trong công việc.

Trả lời của giám đốc công ty Reliable Software:

Tôi hy vọng sẽ giúp bạn với các thói quen lập trình tốt mà tôi đã đúc kết được qua nhiều dự án đã làm ở Microsoft cũng như ở công ty tôi – Reliable Software:

1. Bắt đầu với thiết kế tốt. Thường xuyên cập nhật tài liệu thiết kế. Tạo thêm các tài liệu thiết kế trước khi thêm vào những đặc điểm hay tính năng mới.
2. Chương trình đang phát triển phải luôn luôn thể hiện được chức năng của nó. Quá trình phát triển là quá trình thêm các tính năng mới mà không phá vỡ các chức năng đã tồn tại.
3. Công việc phải được chia thành các bước nhỏ. Trong đó, việc viết code cho mỗi bước có khả năng hoàn thành trong một ngày làm việc. Mỗi phạm vi công việc lớn hơn cũng nên phân chia và làm từng bước.
4. Mỗi một dòng lệnh cần phải được xem xét và chỉnh sửa liên tục. Mỗi nhóm lập trình nhỏ nhất là 2 người để có thể trao đổi và xem xét code lẫn nhau. Vì vậy bạn hãy tập làm việc theo nhóm.

5. Luôn cố gắng làm việc theo phong cách top-down:
+ Phân tích: bắt đầu với những đối tượng cấp trên cùng.
+ Hiện thực: tạo đối tượng cấp trên sử dụng các stub (chỉ có interface mà không hiện thực).
+ Chỉnh sửa: thay đổi các đối tượng ở cấp độ cao trước. Nếu cần sử dụng các stub hoặc các hàm cũ.

Sưu tầm từ internet. Nguồn (http://thegioiwebsite.net/tinnoibo/?p=18)