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?"
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.
"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."
/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.
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
"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)
> 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).
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.
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.
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.
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!
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.
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#.