Win a copy of Getting started with Java on the Raspberry Pi this week in the Raspberry Pi forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Paul Clapham
  • Tim Cooke
  • Jeanne Boyarsky
Sheriffs:
  • Rob Spoor
  • Devaka Cooray
  • Liutauras Vilda
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Tim Moores
  • Mikalai Zaikin
Bartenders:
  • Piet Souris

Practicing Java

 
Greenhorn
Posts: 5
Scala Netbeans IDE Ubuntu
  • Likes 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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?
 
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • 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
     
    Marshal
    Posts: 78431
    374
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Code Complete by Steve McConnell??
     
    Sheriff
    Posts: 17616
    300
    Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • 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.
     
    Farmers know to never drive a tractor near a honey locust tree. But a tiny ad is okay:
    Low Tech Laboratory
    https://www.kickstarter.com/projects/paulwheaton/low-tech-0
    reply
      Bookmark Topic Watch Topic
    • New Topic