Forgot your password?
typodupeerror
Java Education Programming

After Learning Java Syntax, What Next? 293

Posted by timothy
from the nice-hot-bath dept.
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."
This discussion has been archived. No new comments can be posted.

After Learning Java Syntax, What Next?

Comments Filter:
  • by SerpentMage (13390) <ChristianHGross&yahoo,ca> on Sunday February 21, 2010 @09:35AM (#31217942)

    How about writing code????

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

    • by weicco (645927) on Sunday February 21, 2010 @09:40AM (#31217978)

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

      That or you could become a project manager.

      • Re: (Score:3, Funny)

        by GPSguy (62002)

        FInd something that needs writing. Write it. Debug it. Test it and debug it again.

        Disclaimer: I am now a project manager. You can slow down the disease but you can't stop it.

      • by paeanblack (191171) on Sunday February 21, 2010 @02:20PM (#31220242)

        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.

        • The best thing he could do is stop studying Java for awhile and actually study algorithms or AI or graphics or whatever he's interested in. Picking up the syntax of a new language in a month is trivial, but unless you know how to do something with it you're doomed to write "Cat" and "Horse" and "Animal" classes forever.

    • Re: (Score:3, Insightful)

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

      I agree with this... pick a project, dream up some application and build it. If you have something in mind that's great but if not just do something simple like maybe building a tick-tack-toe or checkers game, or building a database application for your DVD collection or something along those lines. It doesn't have to be an app that you'll use but getting your feet wet with a real project is invaluable to the learn

      • by SnapShot (171582) on Sunday February 21, 2010 @11:22AM (#31218584)

        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.

      • Re: (Score:2, Insightful)

        by sorton9999 (958384)
        I agree with writing actual applications to hone your new knowledge. My first real applications in java were a calculator and a CD collection application. I wrote these without an WYSIWYG IDE. It helps to really see how things work if you don't use a GUI "builder". If you want to get ideas for good projects you can read "Java Cookbook" published by O'Reilly. It provides some programming example projects that can be expanded upon. Finally, read a good algorithms book (can't think of any examples, sorry
    • It may be too early in your education to know what you want to do in your career, but I would start looking in to areas where you can specialize. Client/server architecture will always be a skill that looks good. If you want to go this route, look into learning Java Enterprise Edition. UI design is good to know, but with abundance of WYSIWYG editors that are available now, writing UIs is becoming less of a skill. UI design theory is still pertinent even if the coding skills are going the way of the dodo. S

  • What's next? (Score:5, Insightful)

    by GrahamCox (741991) on Sunday February 21, 2010 @09:36AM (#31217944) Homepage
    Program something for real. Be goal-oriented. No amount of working through exercises teaches you programming for real.
    • Program something for real. Be goal-oriented. No amount of working through exercises teaches you programming for real.

      Seconded.

      Once one get all the basic and theoretic concepts (tree, lists, classes, whatever), the bast is to start tackling some real-world problems.

      Book-wise:
      - One might be interested in books which show how some practical problem and real-cases got solved in Java code (Can't point to a good example being not a Java programmer my self, but probably O'Reilly has some interesting books).
      - Info about useful classes and libraries might be useful too (because once you start coding your self, you'll eventually ne

  • Or, you know, write some code.

    • by certron (57841)

      Definitely write some code. When you are done with that, though, give a look at Common Lisp: http://www.cs.cmu.edu/~dst/LispBook/ [cmu.edu] Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky, or http://www.gigamonkeys.com/book/ [gigamonkeys.com] Practical Common Lisp by Peter Seibel. Then, learn to use Clojure to tie the two (functional programming and JVM bytecode + platform) together.

  • by antifoidulus (807088) on Sunday February 21, 2010 @09:38AM (#31217960) Homepage Journal
    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.
    • by chthonicdaemon (670385) on Sunday February 21, 2010 @10:26AM (#31218242) Homepage Journal
      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.
    • by sqldr (838964)
      Then tie your brain up in knots trying to do it in OcaML :-)
  • by FShort (91112) on Sunday February 21, 2010 @09:38AM (#31217962)

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

    • How does that improve your coding skills?

      Priorities, man!

    • by deniable (76198)
      Be especially careful of the polymorphic ones. You don't know what they'll encapsulate. If the last guy wasn't on the ball you could inherit some real problems.
    • by fwr (69372)
      The parent is marked 5: Funny, but honestly this is the first thing I thought of. If he is a night-guard, he should be doing his job and paying attention to whatever he is supposed to be guarding. It may be a plain looking warehouse door, and nothing exciting. They are not paying him for exciting work, nor are they paying him to read books and do other work while on the job. They are paying him to pay attention to what he is supposed to be guarding, and to be ready if he must take action. Personally, i
  • Best way to learn: (Score:5, Insightful)

    by DavidR1991 (1047748) on Sunday February 21, 2010 @09:39AM (#31217964) Homepage

    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.

  • Buy an Arduino or something similar (msp-430) and see how much work it is to actually toggle a LED at a certain frequency, or drive an LCD connected via I2c or something. It's a whole new world. You'll have to learn C (probably) and maybe a bit of assembly language.
    Linux journal had a nice introduction article [linuxjournal.com] on embedded programming.
    I've been doing embedded development work for the last 20 years, and am still enjoying it. It pays pretty good, and you'll be far less interchangeable with someone else tha
  • by ytm (892332)
    Write a program that tries to help to solve one of your everyday problems. It mustn't be the best in general, but it should be as good and as well suited for your own needs as possible. It could be something for you personal finance tracking, something for entertainment, a better interface for data that you can download from the web (dictionary? thesaurus?). The most important thing is that the problem must be interesting enough for you to finish the task so you should be able to at least get the software
  • Just reading books on language to learn, only takes you so far. Work on some projects. This helps you to gain understand the intricacies of the language. It helps you understand where you can use certain features of the language efficiently too. Writing code is the best way to learn the language imo.
  • Effective Java (Score:5, Informative)

    by sproketboy (608031) on Sunday February 21, 2010 @09:42AM (#31217990)

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

    • Re: (Score:2, Insightful)

      by pkuyken (801014)
      I'd second this. (And would have modded it up had I had some mod points.) Even a beginning developer can draw some very useful information from Bloch's Effective Java. While you probably won't understand a large part of the details, reading through it will help give an idea of things to avoid and things to use. By going through the book, even if you don't remember all the details, hopefully enough will stick so that you can reference back to the section if you ever have questions regarding a particular
  • by PCM2 (4486) on Sunday February 21, 2010 @09:47AM (#31218018) Homepage

    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.

    • by cptdondo (59460)

      Talk to the instructor. If the OP is that far ahead, and the instructor is worth a shit, then s/he will work with the OP to do independent study and more credit.

    • by dkf (304284)

      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).

      I can recommend the O'Reilly Java Examples nutshell book (especially if you try to understand why the examples work) and Mark Grand's books on Software Patterns in Java.

      After that, well, you're at about the point where your best approach involves getting practice trying to do real things (or at least solving problems somewhere like RosettaCode [rosettacode.org], where many of the problems don't yet have Java solutions). I don't know how well that sort/depth of study mixes with a job as a security guard.

    • by fishexe (168879)

      The submitter says he works as a security guard. As such, sitting focused at a laptop writing code might not be an option.

      I recommend writing programs on a legal pad or in a notebook. That's what I did for several years when I didn't have a laptop.

    • Re: (Score:2, Insightful)

      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.

      Are you kidding me? It is possible to write programs without a laptop or any computer at all. I used to do it when I was bored in Middle School which was 98% of the time. All you need is your brain, some notebooks, and a bunch of pencils.

      First, think about the overall design of the program. Sketch out the general structure using pictures, flowcharts, pseudocode, English, whatever. Figure out the data structures and algorithms needed. "Code" from the top down. When you get to interesting or challenging

  • Read more, code more (Score:4, Interesting)

    by Dun Kick The Noob (904001) on Sunday February 21, 2010 @09:48AM (#31218024) Homepage

    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

  • by AdmiralXyz (1378985) on Sunday February 21, 2010 @09:49AM (#31218032)
    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 [sun.com] 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.

    • Re: (Score:3, Interesting)

      The algorithm textbook that he is using is a great read provided he does the exercises at the end of each chapter. The great thing about the exercises is that they challenge the reader to tackle the algorithm from a different perspective. So, if an algorithm is demonstrated using a recursive method, the book asks the reader to rewrite it using an iterative method which is an excellent way to learn.

      I actually read halfway though the book skipping the exorcises, figuring they were too easy and I was wast
    • by Hairy1 (180056)

      Order is wrong. Believe it or not most people would rather eat their own hand than learn algorithms or the standard API by heart. But I do suggest writing real code.... that is not just an exercise, but actually find yourself something someone needs solved and solve it. This way you will quickly pick up what is needed to accomplish the task, which will involve algorithms and API.

      I would suggest a more complete treatment of algorithms later in your development when you can begin to appreciate where they fit.

  • As an instructor, I always tell my students: the only way to become a good programmer is to write programs, more programs, and even more programs.

    Make up ideas: write a program to keep track of your music, write a game program, write a program to track recipes. It almost doesn't matter. The important thing is to make the programs a bit challenging. Want to track your music? Store the objects in a file using Java Serialization - a great reason to learn about serialization. If you already know about that, t

  • If anything, it will prove that you truly know Java syntax. A score of 100% can't hurt.

    • by (H)elix1 (231155) *

      The Sun (now Oracle?) Java developer's certificate does show a fair bit of proficiency with the language. You really do need to have more than just a passing familiarity to get it. For me, one of the most challenging parts was things that were technically legal (and would work), but were very far from anything I would call best practice. The second bit was the breadth of the API it covers. I've been doing server side Java since servlets were born, with a heavy concentration the application server/EE sid

  • now learn what to do with it.

    Learn JEE. Learn some hibernate, learn struts, learn about containers, and servlets, and beans. Learn about JDBC and relational databases. Learn JPA and see how great it is and how crap it is. Then actually do something with it.

  • Is this your first language? I'm a Java developer but I believe all Java developers can benefit from knowing another language. Personally I wish everyone knew a little assembly. I've met Java developers that couldn't keep kilobytes, megabytes, and gigabytes straight because they never learned about the hardware their applications ran on.

    Syntax is one thing, designing code is another. There are several design pattern books you might want to look at. There is the Head First Design Patterns book and the tradit

  • My top 4 (Score:5, Informative)

    by Ianopolous (1080059) on Sunday February 21, 2010 @10:06AM (#31218154) Homepage
    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!
  • The only real way to learn a programming language is to use it in a real project. Come up with something you've always wanted but can't find and make it happen. That's the great thing about programming. You'll learn more doing that than you ever will from a book.

  • Other Things... (Score:5, Insightful)

    by Mongoose Disciple (722373) on Sunday February 21, 2010 @10:10AM (#31218178)

    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!

    • by Rockoon (1252108)
      100% agree. If your goal is to get HIRED as a programmer, then its databases databases databases.

      Nearly every programming job out there required database programming. Sure, a lucky few get to bang out libraries, or write games.. but for every one of them there are HUNDREDS of programmers working for private firms writing custom programs which manipulate in-house databases.
    • Those are all good points. I'd add:

      - Learn to use a version-control system (I'd start with Subversion). This is something you'll need for every project with more than one developer (and it's also handy for solo projects).

      - Learn to use Ant. When you're done, learn to use Maven.

  • Why not look to a site like rentacoder.com and try to pickup a small project? You can do it to make money or you can simply do it to gain experience writing software for other people. This could be a great way to start building your programming resume if you decide to become a full time java developer after completing school. If you were able to successfully complete a few projects before graduation they'll certainly become interesting talking points on your resume and help to set you a part from the oth

  • anti-patterns (Score:2, Insightful)

    by Nightshade (37114)

    The best stuff to read after you think you've got the basics are anti-patterns which show you what not to do. A lot of that stuff can be quite eye opening to read. One of the best books on that topic is Effective Java by Joshua Bloch. Also, search the web for sites like this one: http://www.odi.ch/prog/design/newbies.php [www.odi.ch]

    Also, not a book per se, but if you do write some code it's possible to learn more by analyzing the code with tools like findbugs [sourceforge.net] which will show you a list of things wrong with your code.

  • Find some small projects, and write them in Java. Then do this process again in a few other languages: I suggest JavaScript (bonus points if you do the OO stuff in JavaScript without using classes, and don't worry so much about browser-compatibility), Haskell, and either Lisp or Scheme.

    The point here isn't so much to learn these languages for their own sake, though that's a nice bonus. These languages will force you to think about programming in very different ways than Java tends to teach people. This is n

  • ...now that you have one of the tools for your toolbox.

    As you appear to be realizing, learning a programming language is like having a particular type of hammer. Each computer language you learn is another type of hammer. You don't have to have more than one hammer, but since some hammers are better some types of construction than others - the more hammers you have (within reason) the more flexibility you have in building things.

    Congratulations on absorbing some of the aspects of Java, keep shining that h

  • Java Puzzlers (Score:5, Interesting)

    by IamTheRealMike (537420) <mike@plan99.net> on Sunday February 21, 2010 @10:34AM (#31218306) Homepage
    This might be a bit heavy for somebody as new to programming as you, but Java Puzzlers [javapuzzlers.com] 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.
  • Build a JVM [acm.org] in it.

  • Design books are good, but I think you may have trouble getting much from them until you go through a few real programs and see what problems can occur that design patterns can address.

    One great book if you really want to understand Java at a much deeper level, is Thinking in Java [mindview.net] by Bruce Eckel. It's really a great place to start, to understand how to use the language the way it was meant to be used - and that in turn will make your life easier, sort of like not putting your shoes on the wrong feet even t

  • Grab a piece of open source code that interests you and walk through it. In fact, in contradiction to what some others have posted here, it's better to read other people's code -first- before starting to write it yourself. You'll end up with a much better appreciation for the language and the structure of a program.

    You want to look for both 'patterns' in the small ("What does this little chunk of code do?") and structure in the large, e.g. class layout, etc.

    Too many people out there produce 'write-only co

  • Seriously, check out the job boards. During your investigation you will see what real skills employers are looking for in a JAVA developer. You'll find all kinds of interesting terms to decipher and while you are decoding those you will be introduced to other supporting technologies that support a JAVA development environment that employers are also interested in. Then you can also learn about those.

    You are obviously going to find a lot of great info here in this /. article and you should pay attention to m

  • Effective Java, Second Edition, by Bloch. This book is quite unique and can save you a lot of journey time as you travel the path from "beginner" to "expert". I wish it had been available when I started. Caution: it can make you grow a beard and mumble about the advantages of respecting the .equals() contract.

  • by codepunk (167897)

    A programmer without sql knowledge is like a fish out of water and not very likely employable. SQL knowledge
    and working with databases is a must.

    • by jjohnson (62583)

      This. As a practical matter, knowing SQL and database design is about the strongest additional skill you can add.

  • Writing software is about solving problems. If I were you, I would try to come up with some project that you can build. Coming up with an idea, refining it, and then going through the actual process of working out the inevitable kinks in any technology stack--that's the best thing you can do. Build something big, something where every component forces you to learn some new sub technology. You are now in the Java business. Java is your hammer. Find some problem to solve.
  • Buy "Effective Java" by Joshua Bloch. Even if you're not quite ready for it yet, read it and make it's rules your own.

  • Java is a simple language, composed of many, many frameworks. Now that you have the syntax down, it's time to start learning some of the frameworks you'll undoubtedly be exposed to when working on projects. Some good ones to familiarize yourself with are:

    Being well-versed in these will up your Java street cred by quite a bit.

  • by TwinkieStix (571736) on Sunday February 21, 2010 @11:36AM (#31218668) Homepage

    If you want to work in the real world, writing software, you're going to have to speak to other engineers about what you are doing at a level of abstraction higher than "for loop" or "switch statement". You'll want to talk about algorithms and even more commonly, patterns. You may already be familiar with "tree" and "linked list" so you're off to a good start. But, in the future, you'll find yourself saying: "This is a visitor", "this is a controller", "this is a command pattern", etc. The current "bible" of these patterns is known as the Gang of Four book:
    http://www.amazon.com/Design-Patterns/dp/0201633612 [amazon.com]

    That one is a hard read. I understand that a more digestible book is this one:
    http://www.amazon.com/Holub/dp/159059388X/ [amazon.com]

    Two other routes you will want to go down is that of algorithms, like you already mentioned, and refactoring. Algorithms are the most common next step in College, so it might be wise to do that before patterns and refactoring, but I don't think either is a prerequisite for the other. But, knowing what "Big O notation" is, and understanding why a divide and conquer sort is so fast is helpful in your career.

    Finally, refactoring seems to be the hidden art of writing good code. So few programmers really understand how to refactor bad into good. This advanced topic will be what sets you apart from the other engineers you compete with for a job. This one is a good "bible"
    http://www.amazon.com/refactoring/dp/0201485672 [amazon.com]

  • The vast majority of Java jobs out there are for J2EE/Java EE, which is server side Java.

    There are a gazillion Java web frameworks out there. Two of the most popular are JavaServer Faces (JSF) and Struts 1.

    Struts is old, it has been around for about 10 years or so. It is not glamorous anymore, but there is so much code written in it that you pretty much cannot avoid working with it.

    JSF is Sun's (Oracle's?) attempt to have a standard framework. You may read a lot of hateful posts about JSF, but personally I

  • Because good data structures and their associated algorithms are important, your next step could be to pick up a decent book on them such as Algorithms in Java by Robert Sedgewick. He also has the equivallent books for C and C++.

  • Java has been open sourced, so you can learn from the people who wrote it. I've found this to be a worthwhile use of time. Knowing what's under the covers, and seeing how professional Java developers implement things can be a valuable learning experience.
  • Niris,
    I have helped teach several people how to program. What you really need to next is apply what you have learned and solve a problem. Ideally, solve a problem that you know something about. Or solve a problem where you have some subject-matter expertise.

    I'm not sure if you actually like being a security guard or not. Maybe you do. Maybe you don't. But you are probably familiar with the subject matter. Write a program that will solve a problem related to the subject matter. Using problems that ar

  • I think that in order to make the leap into writing real programs, you need to be able to apply OO to a bunch of common situations, and that's what design patterns are all about.

    You can either leap in at the deep end with the Gang of Four's book, 'Design Patterns' or try something a bit more accessible, like Larman's 'Applying UML and Patterns'.

    The latter book is what helped me jump out of a severe procedural rut, and finally grasp OO.

  • Savitch's book is superb as a textbook. You won't find many other books that are that good. The two things I'd suggest learning about are data structures/algorithms and design patterns. For the former, there are a lot of text books, but the good ones are advanced and expensive (for instance, Cormen, Leiserson & Rivest, *Introduction to Algorithms*), and the inexpensive ones are poorly written. You might try the O'Reilly book "Algorithms in a Nutshell*. For the latter, there are a number of books - a
  • A quick look through the posts shows a number of people mentioning algorithms which is important, but before you get started you may need a better understanding of the different types of data structures and their efficiencies.

  • All too often, Java programmers have no idea what it means to be running within the JVM. They don't understand how the garbage collector works (just that it does, but it doesn't always does it?). They don't understand the differences between the different gc models. There's very little understanding of what the difference is between the various generations in the generational garbage collector, or what the difference is between native heap and vm heap.

    Also, understanding how the JIT compiler works, how t

  • As I a little project I've built out the site http://javabat.com/ [javabat.com] ... it's about having lots of little online problems for code practice. arc Big architectural ideas are important, but javabat just helps you build the basic but critical loop/logic/array/string skills. There's also a big section on recursion.
  • First of all, congratulations on taking charge of your life and deciding to learn a new and potentially valuable skill!

    Java is a decent place to start, but Java is quite a lot like scripting. You never get down to the hardware, almost everything is done for you. By know you should understand the basics of looping and branching so do yourself a favor and see just how deep the rabbit hole goes.

    Now here is what I suggest. Go find an OLD computer someplace, perhaps a 386 or something like that and get a copy

  • To understand how much of Java _actually_ works, you have to understand the software it's written. Start with "The C Programming Language" by Kernighan and Ritchie.

    When you feel more secure about both languages, and have increased your employability by a factor of 3, I suggest you learn how _not_ to do several of the extremely bad practices common to Java programmers, such as redefining functions of the same name locally, and making the same function name do different things with different capitalization.

  • I could probably come up with 50 book recommendations for you, but to keep things simple:
    • Get a better feeling for OO design. I'd suggest "Head First Design Patterns"
    • As many others have suggested, grab a copy of "Effective Java, 2nd ed". Read a few items now and then, it'll improve your understanding of the language tremendously.

    As you read these books, come up with a hobby project where you actually implement something.

  • After Learning Java Syntax, What Next?

    Hmmm, depends on what your goals are as you pursue your studies. The best thing (usually) is to write code that is sufficiently large and complex. However, that usually only happens at work or when taking classes beyond the 3000-level (assuming a good school and instructors.)

    For n your case (studying part-time while working on a non-programming job), there are a few things I would recommend you to pursue (which I would recommend to any full-time or part-time student.). These I recommend based on my Java e

  • Now you must unlearn it.

    Specifically, you're going to need to learn how to use verbs again [blogspot.com].

    Try php. It's got a great function library and you can build webpages quickly and easily.

  • You sound like a quick study. Go buy a copy of "Introduction to Algorithms" by Cormen, Leicerson, and Rivest (yes, *that* Rivest). It's a very, very good book. But, make no mistake, any book on algorithms that is easy is a bad one, and this one, while clear, is difficult because there are some algorithms, some very important ones, that are hard to understand. Pick up a used copy from Amazon.

  • Ant (Score:3, Interesting)

    by devman (1163205) on Sunday February 21, 2010 @03:21PM (#31220950)
    Learn to use Apache Ant. When I was in school they didn't cover Ant at all, it wasn't until I got in to the "real world" that I encountered Ant.
  • Effective Java and Java Concurrency in Practice. These are a must have for any serious Java programmer.

One man's constant is another man's variable. -- A.J. Perlis

Working...