0% found this document useful (0 votes)
119 views

Learn Java in 21 Days. Effective Java. Clean Code. Gof Design Patterns

The document provides a lengthy list of steps to thoroughly learn the Java programming language and related technologies. It recommends starting with books on Java, examples code, and personal projects to learn programming fundamentals. It then lists additional tools, frameworks, methodologies, concurrency concepts, and distributed systems to master along with certifications and open source projects. The goal is to gain extensive expertise through continuous study, practice, and sharing knowledge with others.

Uploaded by

Tran Xuan Quang
Copyright
© © All Rights Reserved
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views

Learn Java in 21 Days. Effective Java. Clean Code. Gof Design Patterns

The document provides a lengthy list of steps to thoroughly learn the Java programming language and related technologies. It recommends starting with books on Java, examples code, and personal projects to learn programming fundamentals. It then lists additional tools, frameworks, methodologies, concurrency concepts, and distributed systems to master along with certifications and open source projects. The goal is to gain extensive expertise through continuous study, practice, and sharing knowledge with others.

Uploaded by

Tran Xuan Quang
Copyright
© © All Rights Reserved
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 2

If you need to learn the language, you better read and study books like:

1.

Learn Java in 21 days.

2.

Effective Java.

3.

Clean code.

4.

GoF Design Patterns.

Then read example code for every framework your hands can get into and
making your own projects should be the priority. You cannot learn a new
framework unless you have coded in it, so go ahead and make it work.

5. Then re-read the books.


6. Then read the Java class library.
7. Then re-read the books.
Then learn some tools like Eclipse, Ant, maven, Gradle, Git, Hg, Tortoise Hg,
learn to use the debugger, learn to use the profiler, learn about refactoring.
Store all your code in github and bitbucket.
Learn more frameworks. Learn Hibernate. Learn Spring, the mother of all
frameworks. Read the Spring source and memorize it.
Rewrite all the frameworks you just learnt from scratch. This is to make sure
you learnt them well. If you forgot some part or can't make it work, you are
allowed to peek into the source of the framework. You will learn a lot by doing
this.
Then learn some methodologies like ISO-9000, CMMI, PMI, Six Sigma, RUP.
Then unlearn them and learn agile methodologies like Scrum, eXtreme
Programming, Kanban, Lean Development. Write some blogs about all your
discoveries. Share the fun with others.
Then learn how to create threads and manage them. Create several
multithreaded programs and make sure they run faster than the single
threaded program. Then learn about the synchornized keyword in order to
make them run slower, but deliver correct results.
Then learn about ReaderWriter locks. Use them and measure how faster they
are than threads managed by simple synchronization. Write a paper
explaning your findings.
Learn about reentrancy and ReentrantReaderWriter locks.
Learn about WorkManager and how to use threading without actually
controlling the threads.
Read about CAS and non blocking synchronization. Write programs that show
that non blocking sychronization is way better than using locks. Learn about

the ABA problem.


Learn about convoy formations.
Learn about the why the double checked locking was broken. The "DoubleChecked Locking is Broken" Declaration
Learn how it was solved by changing the Java memory model in Java 5 by
extending the behavior of volatile (explained in the same link).
Then get all the Java certifications from Oracle.
Then read the Java EE spec, in its many incantations until Java EE 7 and
memorize all its differences from version to version.
Then learn Vert.x, Hazelcast, Cassandra, Kafka and create apps than run
1,000 times faster. Read the source of those until you understand it. Then
memorize it. Then rewrite all of them from memory.
Then teach all of the above to the younger generation of
programmers, because when you have done all of the above you will
be more than 100 years old.

You might also like