8 thg 1, 2010

Để trở thành một lâp trình viên java giỏi (Lập trình sư) chúng ta cần làm gì?

Để trở thành một lâp trình viên java giỏi (Lập trình sư) chúng ta cần làm gì? Xin giới thiệu để các bạn đọc chơi một bài khá hay.

Summary:
A collection of books, techniques, and qualifications that help you become a Java Master. If you are already a Java Master, then there is no need to read on!

Becoming a Java Master requires constant learning, lots of experience, and motivation. There are many ways to do this. Here's mine:
Read Joshua Bloch's Effective Java

This is the book for Java programmers. It's the perfect book for anyone who has recently learned Java and completed a project or two. It's crammed full of practical and informative Java advice. Joshua wrote the Java Collections API, as well as many other parts of the JDK. His book shares lessons learned by the Java team at Sun, and gives insights into many of the confusing parts of Java. Topics in this book are wide-ranging and include tips right across core Java. For example, how to write good hashcode and equals methods, why you should avoid using clone methods if possible, and step-by-step instructions for writing immutable classes. It was written when Java 1.3 was the latest version, so it is getting a bit dated. However a new version seems to be due out soon.

Become a Sun Certified Java Programmer (SCJP)
I long thought I was a Java guru. I felt I knew most of what there was to know, I could solve most Java problems I encountered, and colleagues came to me with Java questions. Like many others I was skeptical of the value of certification exams. However I got on to one of my self-improvement kicks, and decided that rather than spend the evenings watching TV and playing computer games, I should make sure I was as good at Java as I thought I was. After all, if I was so good, the Sun Certified Java Programmer exam would be a cinch, right? I was twice wrong. I wasn't as good as I thought I was, and the exam was definitely not a cinch. To pass the test I needed to learn Java at a deeper level than I ever had. How exactly does Java memory management work? What is the difference in semantics between a class being final and a local variable being final? Which gets executed first - a constructor or a static initializer? How about if there are multiple static initializers, in a class and in its parent class - in what order are they executed? What are the exact ranges of all primitive types?

Pass the SCJP exam, and you'll have a knowledge of the intricacies of Java. You'll immediately be a better Java developer than 90% of your peers.
Read Martin Fowler's Refactoring: Improving the Design of Existing Code
This is not a Java-specific book, but all the examples are in Java. It's an eye opener. Do you really know how to write self-documenting code? You will by the time you have finished this book. The theme of the book is how to improve the quality of existing code. However along the way Martin introduces us to many fine examples of Java mastery. It also revealed to me not only that I was writing bad code, but why it was bad and how to fix it.

By the time you finish this book, you'll have a good understanding of all those mysterious commands in your IDE's "Refactor" menu.
Learn the Intricacies of Threading
I long thought threading was something I could ignore in Java. Threading, I thought, was only a topic for advanced software like computer games and photo-editing software. I was very wrong. Almost all Java developers are, in effect, working on multi-threaded systems.

Learning more about Java threading may reveal some bugs you didn't know you had. It also helps you to write better-performing GUIs. Unfortunately most Java tutorials and training courses either omit threading altogether, or add it late in the picture as an afterthought. Therefore Java developers tend to have little knowledge of threading.

The best crash course in Java threading is Java Concurrency in Practice. It's currently by far the best book on this topic. It is extremely well written and accessible, yet without its content being dumbed down.
Work on a Range of Java Projects
I've been lucky enough to be exposed to many parts of the Java JDK and ecosystem. This broad exposure has done wonders for my general understanding of Java. If possible, I recommend you do the same. At the minimum, a Swing project and a web project will help. Even better is if you can add a server project, especially one that has to scale well and perform well. A Swing project will help you master anonymous classes, several design patterns, and event-driven architecture. A web project requires a grasp of separation of concerns. A server project needs fault-tolerance and multi-threading.

Also helpful is to design and implement a reusable library.
Master the Catalog of Design Patterns
There are two books here I recommend. One is the so-called Gang of Four's Design Patterns. It's great as a reference book and looks good on your bookshelf. However it is definitely not a light read. To truly grok Design Patterns in Java, I found Head First Design Patterns much more helpful.

After getting up to speed on design patterns, you'll understand why opening a file in Java seems so complicated at first, why Swing uses all those Listeners, and the reason why we use so many Factory classes in Java.
Conclusion
My list here is certainly not the only way to become a Java Master, but it maps out the path I followed. I'm sure that if you work through my list you'll definitely become your local Java guru.

If you have something you think I should add to this list, please email me at steve dot mcleod at gmail dot com.

(Nguồn http://solidsimplesafe.com/view/33;jses ... F54C3F12F7)

Xin được lược dịch thô thiển thế này:

Summary:
Một vài quyển sách, một số kỹ thuật và chứng chỉ có khả năng giúp bạn trở thành lập trình sư.
Trở thành lập trình sư có rất nhiều cách và đây là cách của tôi (Ông tác giả này cũng hơi trơ trẽn cho rằng mình được như ông ở ảnh trên)
Đọc cuốn Joshua Bloch's Effective Java
Nói chung là quyển này khá hay. Có thời gian thì cũng nên đọc.
Học lấy cái bằng SCJP
Dù sao học hành tử tế vẫn hơn, có cái bằng SCJP cũng chứng tỏ bạn có nền tảng tương đối tốt.
Lại đọc cuốn này: Martin Fowler's Refactoring: Improving the Design of Existing Code
Cuốn này giúp anh em code kém code tốt hơn một tí và biết tại sao ngày xưa mình lại code ngây thơ như thế.
Học và làm chủ các khái niệm phức tạp trong Threading
Anh em học và làm java nói chung đều yếu, kém về khoản Threading này. Khi nào hiểu và vận hành tốt lúc đó mới có thể tự tin làm dự án phức tạp.
Trải qua nhiều dự án khác nhau
Nói chung nên làm ở nhiều dự án khác nhau
(Lại đọc sách) Design Patterns
Đọc sách về Design Patterns giúp thiết kế và giải quyết các bài toán tốt hơn.
Kết luận
Trên đây là một vài ý kiến của Tao (Tôi/ Em), Ông nào có ý kiến gì thêm thì gửi về steve.mcleod@gmai.com

Không có nhận xét nào:

Đăng nhận xét