• Post Reply Bookmark Topic Watch Topic
  • New Topic

Practicing Java  RSS feed

 
Anatoliy Kmetyuk
Greenhorn
Posts: 5
Netbeans IDE Scala Ubuntu
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello everyone!

I've been learning Java for 9 months already. But it turns out, that I can't figure out a way to master my skills of designing software architecture. I know about patterns, I know how to apply them in theory, but I stumble when trying to write a real application. Namely, I encounter a great amount of various complexities (such as how flexible an application must be, for example) and I have no algorithm for their analysis and developing appropriate solutions. This happens even when I try to write a simple app with GUI that downloads pictures from the Internet. Well, I can write this application, but in a straightforward way - and that's not very flexible.

Is there any book, tutorial or something like that, which describes a process of development of some application in a step-by-step manner, with the explanations of each step? Or some other material with a similar purpose?
 
Winston Gutkowski
Bartender
Posts: 10575
66
Eclipse IDE Hibernate Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Anatoliy Kmetyuk wrote:Is there any book, tutorial or something like that, which describes a process of development of some application in a step-by-step manner, with the explanations of each step? Or some other material with a similar purpose?

I hate to say, but you're moving into the theoretical here, so any books you find are likely to be less about Java and more about the practise of analysis and object-orientation. As someone who started out as a COBOL programmer and 'grew up' with the first generation of OO and IE writers (Grady Booch, James Martin et al), I hesitate to suggest any of the books I read, as they've probably been superceded by newer and better ones.

One of the things I would suggest is to get a good book on UML, since it's likely to be used by a lot of places you work, and the concepts behind many of the diagrams will help you with your analysis.

But at the end of the day, a lot of it comes down to simple thought:
  • Don't start coding until you really understand a problem.
  • Understand where your program "fits" in relation to others (or indeed, where your application fits in the overall business model). It's very rare to write something that stands entirely alone.
  • Learn a bit about data analysis. I've found it invaluable in helping me to spot redundancies.
  • Learn different programming techniques, eg TDD. You may not buy into them 100%, but knowing how and why they exist is very useful background knowledge.

  • And finally, don't forget to keep writing programs. Trying to cover every possible eventuality often leads to 'development paralysis', so do what you can and don't be afraid to make mistakes. If you're in a decent working environment, people will soon tell you when you've got something wrong.

    A couple of pages you might find useful: here and here.

    HIH

    Winston
     
    Campbell Ritchie
    Marshal
    Posts: 56540
    172
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Code Complete by Steve McConnell??
     
    Junilu Lacar
    Sheriff
    Posts: 11486
    180
    Android Debian Eclipse IDE IntelliJ IDE Java Linux Mac Spring Ubuntu
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Anatoliy Kmetyuk wrote:Is there any book, tutorial or something like that, which describes a process of development of some application in a step-by-step manner, with the explanations of each step? Or some other material with a similar purpose?

    There are as many books as there are "recipes" for developing applications. Asking for a step-by-step description of the development process is like asking for a step-by-step description of how a tree came into being. IMO, any purported detailed step-by-step description of a software process only gives you a one- or two-dimensional picture at best. In reality, there are many different dimensions. Non-trivial software systems are complex (← click to read more); you have to grow them incrementally. Systems should also be tested constantly as they are grown. That's why I like the book "Growing Object-Oriented Software, Guided by Tests" and any book that promotes an incremental and iterative process with an emphasis on testing and refactoring.

    One of my favorite quotes:
    John Gall wrote:A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.


    I think my base advice would be to not sweat the details too much but plant your development feet firmly on sound principles and values.
     
    • Post Reply Bookmark Topic Watch Topic
    • New Topic
    Boost this thread!