• Post Reply Bookmark Topic Watch Topic
  • New Topic

Developing good coding and design skills in Java  RSS feed

 
Mohamed Shakeel
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am a Java programmer with 4 years of experience. I work on the J2EE web development , Web Services for the enterprise, Spring. Though i have been working on development of applications in Java and J2EE, i feel that the writing good quality code, designing solid object oriented code that is reusable, maintainable and scalable is not something i havent developed proficiency in yet. It is not about the technology but more about design and quality of code and having them hammered in me. Would appreciate any advice / suggestions from J2EE veterans in this forums who have taken this path on how to develop this skill. What is the path that i should take? What are the books that i should read? There are a lot of books in the market but i cannot read them all. So i want to read the ones from which i can get the maximum return. I want to develop these skills in the next few months because 4 years in the industry is a high time and i feel i am way behind.
 
Campbell Ritchie
Marshal
Posts: 56525
172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to the Ranch

Such skills are basic to any object‑oriented programming. Have a look at the “Head First” books published by O'Reilly.
 
J. Kevin Robbins
Bartender
Posts: 1801
28
Chrome Eclipse IDE Firefox Browser jQuery Linux MySQL Database Netbeans IDE
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Mohamed Shakeel wrote:I want to develop these skills in the next few months because 4 years in the industry is a high time and i feel i am way behind.

I disagree. I think your expectations are a bit too high. At four years of experience I would expect you to be an intermediate developer at best. At this stage you should still be mentored by a senior developer to learn the advanced topics. And you aren't going to become an expert in these topics in a "few months".

I agree with Campbell on the Head First books. I also suggest you read this article.

And welcome to the Ranch!
 
Junilu Lacar
Sheriff
Posts: 11477
180
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
These are the things I encourage developers who I mentor to study:
1. Design principles: SOLID, DRY, SLAP
2. Refactoring
3. Test-driven development, with focus on testing behavior (not just methods) and design of the API, assigning responsibilities, and proper name selection
4. Working collaboratively with other developers, doing pair or mob programming.

Authors to read:
Joshua Bloch
Martin Fowler
Robert "Uncle Bob” Martin
Joshua Kerievsky
Kent Beck
Joel Spolsky
and whoever these guys recommend reading
 
Campbell Ritchie
Marshal
Posts: 56525
172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I like Joel Spolsky too, but there are people who disagree with him no end.
 
Junilu Lacar
Sheriff
Posts: 11477
180
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Campbell Ritchie wrote:I like Joel Spolsky too, but there are people who disagree with him no end.

I don't agree with all his opinions but Avoiding Leaky Abstractions are one thing that I take to heart when designing.
 
Mohamed Shakeel
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you Junilu Lacar, Campbell Ritchie, Kevin Robbins for your suggestions and the warm welcome They were helpful. I will read the books suggested. My objective is to understand how a seasoned object oriented programmer would think when faced with developing a new solution - the different options he would consider in defining the system level interactions, layering the application, class design , defining interfaces, defining the methods, defining domain objects, data transfer objects, choosing patterns for problem at hand, various factors and trade offs that he would consider in doing each of these. What is your opinion on Applying UML and Patterns and Patterns of Enterprise application Architecture by Martin Fowler in realizing these objectives?
 
Aaron Shawlington
Ranch Hand
Posts: 50
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Just read up on those patterns, and then (this is the important bit) get a deep understanding of WHY? Why is my favourite question ever. Just learn what people are doing and then ask yourself why over and over again until you start finding yourself giving your own opinions to other people. At that point you'll have trained your brain to think like a good developer - rather than to just mimic what good developers do.
 
Campbell Ritchie
Marshal
Posts: 56525
172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You're welcome
 
Junilu Lacar
Sheriff
Posts: 11477
180
Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Aaron Shawlington wrote:Just read up on those patterns, and then (this is the important bit) get a deep understanding of WHY? Why is my favourite question ever.

And ask "Why?" FIVE times -- 5 Whys
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!