Saturday, August 16, 2014

Ý nghĩa của việc chia Level trong lập trình

Cá Trắm trong "Ao" thì to, nhưng ra "Đại Dương" mới biết cá "TO" thế nào.

Ở các công ty thường sẽ có bản tự đánh giá kỹ năng bản thân, kinh nghiệm rút ra sau mỗi dự án, mỗi quý hoặc mỗi năm.

Thang các kỹ năng thường được lấy từ 1 đến 5, rồi các nhân viên (lập trình viên) tự chấm điểm cho mình, theo dõi bảng đánh giá này để biết được sự tiến bộ của mỗi thành viên, tuy nhiên việc tự đánh giá đúng được sức mạnh của bản thân lại là một vấn đề khác.

Mình thấy tồn tại ở một số công ty, các thành viên do chưa lắm được ý nghĩa của việc chia điểm từ 1 đến 5 có ý nghĩa gì, khi nào là 1 và khi nào thì được coi làm đạt điểm 5 => dẫn đến việc ảo tưởng sức mạnh hoặc tự chấm sai dẫn đến phải gánh chịu mức lương vượt quá sức mình đồng nghĩa với việc được giao những công việc quá sức ^^, nói chung là cái gì "QUÁ" cũng là không tốt, vừa đủ thôi là đẹp @@.

Thang điểm lấy từ 1 đến 5 hay còn gọi là level 1 -> level 5 bắt nguồn từ "Dreyfus model of skill acquisition", mô hình này do Brothers Stuart và Hubert Dreyfus đề xuất năm 1980 tại Đại Học California, gồm có 5 giai đoạn đi từ chưa biết gì cho đến chuyên gia:

                         Novice -> Advanced beginner -> Competent -> Proficient ->Expert

Level 1: Novice

  • Không có hoặc là có một chút ít kinh nghiệm
  • Áp dụng một các cứng nhắc theo các công thức, hay nói cách khác là nhìn người khác code, sau đó code theo
Theo đánh giá của các chuyên gia, thì đa phần chúng ta đang ở mức này, chiếm tỉ lệ rất cao trong giới lập trình ^^


Level 2: Advanced Beginner

  • Tự xử lý được vấn đề, nhưng rất khó, và chậm

Nói chung là tầm level 2 là có thể kiếm ăn được rồi, khua chân, múa tay các kiểu :v

Level 3: Competent

  • Có thể phát triển ứng dụng dưới dạng mô hình hóa
  • Tự đưa giải pháp, tự tìm lỗi
  • Giải quyết những vấn đề lâu dài

Level 4: Proficient

  • Nhìn nhận bài toán một cách toàn diện
  • Có thể hướng dẫn cho người khác

Level 5: Expert

  • Lúc này không còn dựa vào một duy tắc nào cả, code vượt qua cả giới hạn của những quy tắc, hướng dẫn
  • Làm việc chủ yếu bằng phản xạ
  • Việc phân tích bài toán chỉ xuất hiện khi đó là bài toán mới hoặc vấn đề lớn xảy ra
Nếu hiểu theo ngôn ngữ của các nhà Võ học thì khi đạt tới tuyệt đỉnh rồi, thì mọi thứ sẽ là phản xạ, ra đòn chỉ trong chớp mắt, việc coding cũng vậy, khi đã đạt tới tuyệt đỉnh, việc xử lý các bài toán phức tạp một cách tổng thể và tối ưu vượt ra ngoài giới hạn của các quy tắc lập trình.

Nói như vậy không có nghĩa là khi đạt tới Level 5 thì sẽ dừng ở đây, "Văn ôn, võ luyện", việc code cũng như học võ hay những nghề thủ công không, chúng ta phải rèn luyện một cách liên tục thì đôi tay mới trở lên khéo léo và nhuần nhuyễn được, ở Việt Nam rất ít các coder có tuổi đời từ 40 hất ngược, nhưng thực tế ở Châu Âu chúng ta vẫn thấy những coder già tuổi, khoảng chừng 40-50, thậm trí còn hơn thế.

Để đạt được level 5 chúng ta mất khoảng 10.000 giờ, học tập, nghiên cứu, đúc kết và thực hành "liên tục", ý nói tính thường xuyên luyện tập và đúng cách, rơi vào khoảng 10 năm, nhưng thực tế vì nhiều lý do mà sẽ mất khoảng 15 năm để chúng ta trở thành một người lập trình lành nghề :d

Đặc biệt mọi người chú ý khi viết CV nhé, trong CV thường có mục đánh giá các kỹ năng (ngôn ngữ lập trình), tránh đánh giá sai rồi các xếp PV hỏi vặn lại không trả lời được, chúc may mắn ^^


Tuesday, August 5, 2014

[Spring Framework] Dependency Injection (DI) Là Gì?

Về cơ bản, cứ hiểu Dependency Injection là để giảm sự phụ thuộc của các đối tượng trong projetc của mình

Ví dụ, trong spring framework có AbcRepository, và AbcController hoặc AbcLogic đang phụ thuộc vào AbcRepository, để giảm sự phụ thuộc repository đó từ Controller, Logic thì chúng ta sẽ tạo một interface là IAbcRepository

Và trong controller hoặc logic mình sẽ không sử dụng trực tiếp AbcRepository mà sử dụng IAbcRepository để truy vấn dữ liệu

Sunday, August 3, 2014

[Groovy on Grails] Groovy/Grails Tool Suite™ - Sử dụng tool để lập trình cho đơn giản

1. Download tool về: http://spring.io/tools

Chú ý: download bản Groovy/Grails Tool Suite™ nhé, còn bản Spring Tool Suite™ dùng để code Spring Application

Download về rồi giải nén ra, chạy được luôn trong môi trường Grails và Java, giao diện sẽ là như này


Dùng tool để phát triển thì sẽ đơn giản hơn việc tự build ứng dụng rất nhiều, bạn tạo một Grails Project, rồi tạo thử controller và chạy thử một ứng dụng đầu tiên

- Chuột phải vào project chọn run project trên server, bạn cũng sẽ thu được kết quả tương tự như bạn tự build bằng tay như bài hướng dẫn http://javadevexpress.blogspot.com/2014/08/groovy-on-grails-creating-application.html

=> từ bây giờ chúng ta sẽ thực hiện nghiên cứu và phát triển ứng dụng bằng Groovy/Grails Tool Suite™ này.

[Groovy on Grails] Creating an Application - Tạo thử ứng dụng đầu tiên

1. Để tạo ra ứng dụng từ Grails thì trươc tiên mình cứ lướt qua một số lệnh command trong Grails cho quen đã.

Gõ lệnh Grails help để xem grails có những lệnh gì


2. Tạo thử  cái Hello World cho quen thuộc

Dùng lệnh Grails create-app helloworld để tạo ứng dụng, sau khi lệnh được thực thi xong chúng ta di chuyển về project vừa tạo để làm việc bằng lênh cd helloworld


Sau khi đã tạo được project rồi, bây giờ chúng ta cần tạo Controller Action cho nó bằng lệnh Grails create-controller hello để tạo HelloControler

Tiếp đó HelloControler sẽ được tạo ra cùng view và test tương ứng, rất là ngon

 Created file grails-app/controllers/helloworld/HelloController.groovy
 Created file grails-app/views/hello
 Created file test/unit/helloworld/HelloControllerSpec.groovy

Bây giờ chúng ta vào HelloController.groovy mở bằng notepad++ nên, Groovy như sau:

package helloworld

class HelloController {

    def index() { 
render "Hello World!"
}
}

Save lại và tiếp tục quay lại cmd, gõ lệnh grails run-app  để chạy thử ứng dụng




Server running. Browse to http://localhost:8080/helloworld, ok bây giờ chúng ta page http://localhost:8080/helloworld lên trình duyệt yêu thích


trên đây là giao diện mặc định của grails, bấm vào



[Groovy on Grails] Setup Environment - Cài đặt môi trường

1. Cài đặt môi trường, trước tiên là phải có môi trường Java, có thể tham khảo bài hướng dẫn ở bài viết trước http://javadevexpress.blogspot.com/2014/01/huong-dan-cai-at-moi-truong-java.html

2. Cài đặt Grails Environment

- bạn cần down grails framework mới nhất từ địa chỉ https://grails.org/download
- giải nén vào một folder nào đó lưu trong máy tính
- cài đặt biến môi trường là GRAILS_HOME trỏ đến thư mục vừa giải nén
- thêm đường dẫn đến thư mục [bin] của grails vào biến môi trường %PATH% của Windows

để kiểm tra xem đã cài đặt môi trường Grails ok chưa, chúng ta vào cmd gõ lệnh command line: grails -version để kiểm tra version hiện tại hoặc grails help để xem định nghĩa các lệnh


nếu tới đây ok rồi thì chúng ta bắt đầu tạo một ứng dụng đầu tiên của Grails xem thế nào.