Slashdot Mirror


After Learning Java Syntax, What Next?

Niris writes "I'm currently taking a course called Advanced Java Programming, which is using the text book Absolute Java, 4th edition, by Walter Savitch. As I work at night as a security guard in the middle of nowhere, I've had enough time to read through the entire course part of the book, finish all eleven chapter quizzes, and do all of the assignments within a month, so all that's left is a group assignment that won't be ready until late April. I'm trying to figure out what else to read that's Java related aside from the usual 'This is how to create a tree. This is recursion. This is how to implement an interface and make an anonymous object,' and wanted to see what Slashdotters have to suggest. So far I'm looking at reading Beginning Algorithms, by Simon Harris and James Ross."

18 of 293 comments (clear)

  1. How about the obvious... by SerpentMage · · Score: 5, Insightful

    How about writing code????

    Learning the theory is good, but writing code is very important..

    --

    "You can't make a race horse of a pig"
    "No," said Samuel, "but you can make very fast pig"
    1. Re:How about the obvious... by weicco · · Score: 5, Funny

      Learning the theory is good, but writing code is very important

      That or you could become a project manager.

      --
      You don't know what you don't know.
    2. Re:How about the obvious... by SnapShot · · Score: 4, Informative

      If you can't decide on a project, yet. I'd recommend two books: Java After Hours (perfect for a security guard) and Wicked Cool Java. They're both the same basic format, each chapter exposes you to a new library. Wicked Cool Java covers more ground, Java After Hours is a little more detailed for each project.

      --
      Waltz, nymph, for quick jigs vex Bud.
    3. Re:How about the obvious... by paeanblack · · Score: 5, Insightful

      That or you could become a project manager.

      The best thing he could do right now is to put Java on hold and learn to solve the same problems in a different language. Something with sufficient study material yet with a very different history than Java would be best, like Lisp or Perl.

      I don't think there is such a thing as a good monolingual programmer. The ability to compare different approaches is just too valuable, and the best time to pick up that skill is before you start seeing every problem as a nail. If the OP would rather go into project management, becoming multilingual would be less critical, but still valuable.

  2. What's next? by GrahamCox · · Score: 5, Insightful

    Program something for real. Be goal-oriented. No amount of working through exercises teaches you programming for real.

  3. Implement some of the exact same things in C by antifoidulus · · Score: 5, Interesting

    While I do regularly program in languages like Java that have automatic garbage collection, but in my experience you need to actually do some time in a language(C being the most common) that does not do this for you. While this is anecdotal, I've found that people who have never actually programmed in a low level language tend to regard object allocation and deallocation as "magic" and thus write poorly performing code.

    By implementing a lot of the same things in C you can get a much better feel for what is actually happening underneath the covers.

    1. Re:Implement some of the exact same things in C by chthonicdaemon · · Score: 4, Insightful

      Another layer of abstraction is easy to dismiss as encouraging sloppy thinking and "magic", but C encourages this in the same way with anything allocated on the stack. Dynamically typed languages get some heat for not forcing users to decide on the type of their variables. By writing the same program in many different languages, you get a much better feel for what is part of the problem itself and what is part of the stuff you need to do for the computer. From hand-crafted machine binaries (preferably avoiding any operating system "magic") to a quick shell script, it's all a question of where your problem space is. I'm all for learning multiple languages, but abstraction is really a good thing, so I would add "implement the exact same thing in Python/Ruby/Lisp" to that as well.

      --
      Languages aren't inherently fast -- implementations are efficient
  4. Obviously... by FShort · · Score: 5, Funny

    being a night security guard, you should start looking around for all those anonymous objects skulking around the building.

  5. Best way to learn: by DavidR1991 · · Score: 4, Insightful

    Pick something simple to build (i.e an application) and build it. You'll learn huge amounts just from filling the gaps in your knowledge in order to achieve what you want.

  6. Effective Java by sproketboy · · Score: 5, Informative

    Effective Java by Joshua Bloch. Will give you some deep insights into the workings of the language.

  7. He seems to want reading options by PCM2 · · Score: 5, Interesting

    I see a lot of posts suggesting that he start writing real programs. That's good advice, but it might not answer the question. The submitter says he works as a security guard. As such, sitting focused at a laptop writing code might not be an option. He seems to just want suggestions for books to read. As such, I reckon a book on algorithms wouldn't be a bad direction to head (provided he's got enough math to follow along).

    The only problem I see is that if he's taking these classes for college credit or working toward completing a certificate, he's going to be really bored with the later classes when he actually has to take them if he reads all the books beforehand. Either that, or he'll know enough to be dangerous and he won't pay sufficient attention to the guidance from his instructor.

    --
    Breakfast served all day!
  8. Read more, code more by Dun+Kick+The+Noob · · Score: 4, Interesting

    Read more if you want, MIT's open courseware is great, donate if you can, i do. they are good refreshers.
    There are pretty standard student projects, (like game of life, notepad, msg servers,)
    You might want to move into more advanced topics, like javax or concurrent stuff like RMI

    Algorithms are great to learn but sadly Ive had little chance to use em in real work, would'nt put too much stock in them for returns.
    In any case, any algos you need most likely you will learn on the job, if something slows too much.
    They are however fundamental if you want to be a proper engineer.(In my opinion anyway)

    If you want real world experience, go look at the freelance websites and just copy down the specs and attempt yourself.
    Dont need to bid, but these provide a snapshot of EASY projects in real jobs.
    I also have some 100% real world work projects assigned to me if you want to do for free........ just kidding

  9. You've got one third of it by AdmiralXyz · · Score: 5, Informative
    In my experience, there are three things you have to do when learning a new language, after you get the syntax:
    • Learn some common algorithms, and how to implement them in that language. Sounds like you've got yourself an algorithms textbook, which is great. Just make sure you're understanding why they work, not just going through the motions.
    • Learn the standard library of the language. Obviously Java's is enormous, and there's no way a human being could possibly keep it all in their head, but you should check out the Java API and get a sense of, "what things are available to me in case I need them?" Java in particular makes it very likely that something you're trying to write already exists in some form, and there are a lot of programmers who waste valuable time reinventing the wheel every day because they don't know enough about the standard library (the flipside though, is that, just like algorithms, you need to make sure you know what you're using. Way too many programmers throw in a java.util.LinkedList without knowing what the hell it is)
    • Experience! Write real code! This is the most important thing of all. The best experience comes from working in a group on a larger project, although of course that's not always possible. Try writing some larger programs on your own, making sure you keep your good design principles (use interfaces, abstraction, modularization, etc.) from start to finish. When you feel you're ready, there are plenty of open-source projects on Google Code in Java: download one and tinker with the source until you understand it. Hell, join the project if you're ready.

    Good luck, and godspeed.

    --
    Dislike the Electoral College? Lobby your state to join the National Popular Vote Interstate Compact.
  10. My top 4 by Ianopolous · · Score: 5, Informative

    There are several very important books: 1. Effective Java - Joshua Bloch. This is by far the most important one. 2. Java, Concurrency in practice - Goetz 3. The art of multiprocessor programming - Herlihy and Shavit. This is much more theory oriented, but essential to become an excellent multithreaded programmer. 4. Java Puzzlers - Joshua Bloch and Neal Gafter. This is quite a fun book - lots of Java Conundrums Enjoy!

  11. Other Things... by Mongoose+Disciple · · Score: 5, Insightful

    My assumption is that at some point you'd like to try to make a living as a Java developer. If that's not the case, please disregard this post.

    How much do you know about databases? If the answer is nothing, you'll want to get up to speed on at least basic SQL. Pretty much every Java project you ever work on in the business world will make use of a database. 80-90% of the syntax is pretty standard from database to database, although nearly every professional Java project I've worked on used Oracle.

    While not every Java project is a web project, it wouldn't hurt to have a basic understanding of HTML, CSS, and at least one web server commonly used to host JSP such as Tomcat or WebSphere. Even if these pieces don't end up being your job, the basics are helpful.

    There are all kinds of popular Java frameworks meant to solve different problems. Try to get a basic sense of what's out there and what each of the leading options is good for, e.g. that something like Hibernate is used for data persistence and something like Java Server Faces is more of a presentation technology. (Or whatever's popular now; I haven't worked a Java project in a few years and I'm starting to get out of date.)

    Probably you also should start to learn one or more of the common Java IDEs. Eclipse is near ubiquitous, but you may prefer one of the other options.

    Good luck!

  12. Java Puzzlers by IamTheRealMike · · Score: 5, Interesting

    This might be a bit heavy for somebody as new to programming as you, but Java Puzzlers is a great book for Java devs of all skill levels to read. It's a series of small programs that screw up in ways you wouldn't expect, often related to bizarre gotchas in the design of Java itself. Newbies might not understand every puzzle, but generally it'll give you an appreciation for the fact that no tool is perfect, and insight into what sort of bugs you might find yourself writing in the real world.

  13. Re:Do we really want him writing code? by ammorais · · Score: 5, Insightful

    I agree with you about the shitty code out there. I simply can't agree with anything else you've wrote.
    Why do you assume that only people with Computer Science background should be writing code? Your post also just assume that because he is a security guard, that he just should write code that would never see the light of the day. That's plain stupid you know.
    The submitter already told me two thing with his article. First is that he truly loves programming, and second is that he is able to self study any language without the need of a course where he could ask many questions about issues he didn't understood.
    That's more than I find in many people with a computer related education. Your computer science background can teatch you important concepts, and the right way to do things. It can be a valuable and important background. It can't teach you how to be creative with your algorithms, and how to be smart enough to write complex programs.

  14. Re:Do we really want him writing code? by daveime · · Score: 5, Insightful

    What a load of tosh. So you need a CompSci degree to be a professional coder ?

    I've just finished a 9 year employment with a company that was based not on degrees, CVs or other paperworks, but on the basis of a successful 6 week freelance project back in 2000. I should point out I'm completely self taught, no formal training whatsoever.

    Coding has nothing to do with language or syntax, but upon having an analytical mind. Breaking down a problem into it's bare elements, and knowing how to make those elements work together is everything. There's plenty of CompSci grads who can parrot off the functions and procedures available in NET or JAVA, but haven't got the first clue how to apply those to the problem at hand.