Critiquing Claims of an Open Source Jobs Boom
snydeq writes "InfoWorld's Bill Snyder examines what appears to be an open source job market boom, as evidenced by a recent O'Reilly Report. According to the study, 5 to 15 percent of all IT openings call for open source software skills, and with overall IT job cuts expected for 2009, 'the recession may be pushing budget-strapped IT execs to examine low-cost alternatives to commercial software,' Snyder writes. But are enterprises truly shifting to open source, or are they simply seeking to augment the work of staff already steeped in proprietary software? The study's methodology leaves too much room for interpretation, Savio Rodrigues retorts. 'That's why the 5% to 15% really doesn't sit well with me,' Rodrigues writes. 'I suspect that larger companies are looking for developers with a mix of experience with proprietary and open source products, tools and frameworks,' as opposed to those who would work with open source for 90 percent of the work day."
...is the one you didn't have to write in the first place. Developers with some knowledge of BSD/LGPL code that could be used for rapidly creating complex apps without reinventing the wheel is probably in demand.
Live today, because you never know what tomorrow brings
I just got hired in Manhattan by a new company and they have all expected lots of OpenSource technology knowledge. In fact, I recently worked for Barnes & Noble and one of my victories was convincing them to dump JRun for JBoss. Eclipse is everywhere and that is free. (I use MyEclipse, though, for $30 a pop). So, this is bourne out by my experience. The fact is, proprietary software is only supported by the company. Open Source is supported by the masses. And you know which ends up being better--the masses. I remember putting a note in JRun's forums and it went unanswered for a year. Nobody uses those forums. JBoss and Hibernate are teeming with activity. Open Source is "King" (sorry Gavin).
In job hunting, I'm seeing more Open Source skills being requested in the mixes, but they are part of a mix, and they definitely tend to be in heavier demand on the front-end web dev side than on the back-end dev side.
Start a happiness pandemic
Companies want people who have open source experience - both use and contribution.
They want to use these people to implement open source projects that fit their needs, for free (beer).
They do not want these people because they love free (open) software.
Given that Java is now GPL and open-source, and lots of the popular third-party Java frameworks are also open-source, I would expect that open-source is really hot in many businesses - just that they don't know it.
When your developers code an interface to XYZ in a short time, it's not because they're reimplementing the wheel. No, they're using Axis. Or HttpClient. With hibernate, spring, struts, tiles, and so on.
But if we look at databases, you'll see a large investment in proprietary systems still, for core business data, with MySQL running minor functionality around the outside. Cutbacks simply mean that upgrading your database platform won't happen, it's already paid for, why migrate from Oracle to Postgresql!
The other big platform is MS proprietary. You all know the story. It keeps TheDailyWTF alive.
I've seen a lot of shops. And a lot of them like open source for one reason... it's cheap. Not because they're cheap bastards, but because free software often can circumvent the corporate BS associated with spending money.
Once a place has used some open source software, they tend to keep using it. And they tend to want to hire people who know how to use what they have. I wouldn't call it an open source hiring boom. I'd just call it acceptance.
Disconnect your television. Do your own research. Draw your own conclusions. They're probably lying. Don't be a sheep.
That's like saying since drag racing cars are the fastest cars everybody should be driving one.
Hey! I like programming, especially being paid for my doing my hobby! It's just like a soccer player, getting paid for doing what he loves. However programmers has the advantage that they can do their hobby at a professional level as long as the mind is good. Soccer players has to throw in their towel when they're in their thirties.
What? They are now open sourcing Steve Jobs and then making him go BOOM!?!?!?!?
Taxation is legalized theft, no more, no less.
You're making the insanely simplistic assumption that one language is appropriate in all parts of a given application/project. Yes, obviously anything that's truly resource/speed dependent will generally require a language like C or C++ to allow you to get intimate with the lower-level aspects of the given system. Which is why just about any newer language makes it simple to create native language modules and packages allowing you to take all the advantages of a tightly coded core with the convenience of writing the majority of code in a high-level language.
I don't think there's anything truly new about that concept and I certainly don't think it's responsible for any kind of 'backlash'.
Spelling mistakes, grammatical errors, and stupid comments are intentional.
C++ may be better than python/ruby/java for certain applications, but it will probably always remain in C's shadow.
Badass Resumes
I'm glad Steve Jobs finally decided to open source everything. Boom!
Soccer players has to throw in their towel when they're in their thirties.
But a good soccer player can make enough money in 10 years to cover a lifetime of work. A good programmer has to work all of his life to make enough money to feed themselves most of the time.
Taxation is legalized theft, no more, no less.
Haha, an ancient troll gets modded up to 3, Interesting, and even garners a few serious chin-stroking responses. Well done, sir.
For gods sake, do we even care on all this analysts' crap?
We do our jobs, and we try to get away with the best and cheapest version of the solution.
If it's Open Source, so be it. But bosses are increasingly interested in sustainability which means that access to the source will help you in that regard.
seen it a few times like here
Of course jobs are going to increase in open source areas. Right now, the software industry is in a period of change from 100% proprietary code to now about 25% proprietary and 75% OSS. The thing though is, for any small company, making a general purpose program is nearly impossible. If it is a proprietary system, it gets 0 marketshare due to monopolies in every single program genre. If it is OSS, it may have great marketshare, but won't make any money because your company is too small to give support. Once we find a good balance, we will see another major software boom comparable to the '90s one. But until then, we will see either failing closed-source companies, or open source companies that have yet to see a profit.
Taxation is legalized theft, no more, no less.
Good. Then all of the C++ programmers will stop claiming to know Java just because it has braces too.
Each language has it's place. Programmers from both sides should respect each other's ability. I took one C++ course. Would never claim to be a C++ programmer.
Looking at sysadmin jobs, I also see things that want Cisco, RedHat/Some *nix, MS AD, some sort of DB, this ERP app, that specific app, Citrix, scripting, programming, web development, website hosting, blah, blah, blah... Those that have a salary range, are in 55-60K
I think HR just throws all in the listing... get as many applicants as possible, sort it out later.
No comprende? Let me type that a little slower for you...
I think $90,000+ a year qualifies as a bit more than feeding oneself. Do you work in the software industry?
As the CTO at a 4 year old startup, we're only interested in people who have open source experience. In fact, we've rejected people from consideration because their programming background was mostly with closed source platforms.
We use OSS for all of the usual reasons - cost, quality, support, access to code. We want to hire people who know how to operate in that environment - someone's who's first instinct when they need to solve a problem is to check the Ubuntu repos or look on Python's Cheeseshop, not call a vendor.
--Pete
.
Tight budgets are the time when management is more willing to "take a chance" on an x86-64 Red Hat server over a more expensive Sun server. Or a free software application, with support from a company like MySQL, JBoss etc. rather than Oracle, or one of the many java app. server products. Management has been happy with the changes thusfar.
But a crappy programmer with great promotion skills can create a startup company, hype the idea, and then sell it to an investment firm before it fails for a lifetime's wages.
Microsoft Sucks, F/OSS Rocks. I get mod points now right?
A free Java implementation of MapReduce and GFS (Apache Hadoop) already works fine on 5000 computers cluster.
And there's no real reason why it can't scale further.
And the numbers are skewed somewhere... REALLY GOOD programmers I know clear about 80K. Average is about 60K. That is good, but not pro sports good.
No comprende? Let me type that a little slower for you...
(ITDegree || ComputerScienceDegree) Programmer
An IT degree can be any number of things... program management, Quality Assurance, etc. And Computer Science isn't programming either... it's really applied mathmathmatics and logic. My IT degree focused on Program Managment, and I have never used it because I'm not in software, but there are tons of well paying positions for software lifecycle management and similar jobs.
I agree that it's a waste of time to teach business programming anymore... those who are good at it will pursue it on the side anyway... but most schools don't go much deeper than basic logic and structure now anyways. CS majors look at things differently, many are into robotics, embedded systems, and places where one must work in low level languages or where the applications are extremely complex and not easy to outsource.
Finally, the only reason either of these jobs have lost their prestiege is that so many people who have no business in the field said "I like computers" to their college advisors... a person who truely knows, loves, and understands computers and programming will not hurt for work. It just takes patience to wait while employers weed out all of the mediocrity.
Sometimes the best solution is to stop wasting time looking for an easy solution.
I think the article is dead on in questioning the study.
Perfect example: the last two places I contracted at were looking to hire C# developers who had also been exposed to Subversion. Is it fair to look at a place like that and say they're now all about Open Source? Not really, no.
Open Source is getting somewhere in the business world to be sure, but the FOSS Rapture isn't quite upon us just yet.
Dude, if you need a 5000 node cluster to run it and already plan on adding more nodes, I'd say that's not a very good advertisment for java. ;)
Open source software is actually costing my institution more than a closed source alternative. The drive for moving to open source software is more about being able to maintain a solution, and customize it to exactly what the requirements are.
Another fun thing we are experiencing is the total lack of knowledge closed source solution professionals have. We're finding the people to be very silo'ed without knowledge of what goes on around them. So when you are trying to implement something, you get very concerned with cross-technical area issues.
You ask an SAP basis person to come look at a screen and they'll say "Not Functional..." and wave their hands wildly with their palms facing you. Ask the Abaper and they'll shrug without a clue.
Hell, the Abaper is supposed to be a programmer you think, but they can't even teach you the basic parts of a program; you'll be lucky enough if they even know how to do proper error handling.
You see these types of people and they frighten the crap out of you. You just stare out the window and wonder why people are willing to pay 80 or 100 dollars an hour for these.... idiots!
I can go out into a University, pay a fresh graduate 40 dollars an hour and teach them everything they need to know... knowing that they'll leave after the project and still be better off than getting consultants.
Compare that with a professional in open source technologies. They need to know how things work together, because that's all they do. They can't learn just 1 technology, they need to know multiples, and how to fit them together. As they grow in their career, they know the big picture, and that is completely different than the closed source alternative.
Shhhhhhhhh....lets just keep that a secret shall we!
Got Code?
If speed were your primary concern, how could you not go with assembly.
On the other hand, one little programming challenge on Cecric Beust's website was solved in a large variety of algorithms/languages and when implemented with the fastest algorithm, the C++ solution had to be compiled with high optimization (-03) to simply match Java's performance.
If you were to program OO using C++, it should always be significantly slower than Java due to the large number of tiny heap allocations/de-allocations. In order to compete, C++ programmers constantly have to consider putting every object on the Stack. Java's short-term heap performance challenges that of a C++ stack, which is MUCH better than malloc.
C++ is also unable to do many runtime optimizations that Java can do.
My last two java jobs have involved working on a frequency analyzer where Java ran the entire GUI (at 12fps on a lower power CPU) and embedded in set top boxes (all cable STB & cable DVR apps will be written in Java soon as per new standards). In both of these embedded cases (a former stronghold of c/c++ development), Java was chosen over C++ for a variety of reasons.
In the long run, the concepts behind using a VM and memory management have far more potential than C++. Every year, without even recompiling, old Java apps get faster while old C++ apps--well for the most part they get replaced with new Java apps, but c++ has pretty much gotten as fast is it will get.
Also, many languages are going away from speed concerns altogether. Ruby is so far out of the C++/Java ballpark that it's silly. Most Java stuff tends to be about 1:2 the speed of C++, almost never slower than 1:4 with Ruby you're talking like 1:100, and yet people are moving to it because speed isn't that much of a consideration any more--and yet anyone (well, anyone who doesn't have some personal stake in C++) will agree that speed is the ONLY thing C++ has going for it.
No, but it is "feed themselves" good, right? And really good programmers make a lot more than $80K (gross), although that may depend upon where you live, I suppose. If you're a motivated contractor, you can gross $120K a year pretty easily.
I make about 3x that working as a Java developer for an investment firm. And I can make even more as a contract dev. But that is in SF where the cost of living is very high. 60K in a rural area is probably a better salary adjusted for cost of living than I make. But 60K in the bay area is very tight and means you will either live in a dangerous area, live very cheaply, or live far away (long commute). Your choice. But if you think a programmer's salary isn't very high then either you aren't very good at programming or you have a very different idea of "making a good living" from most people. Try living on a construction worker's salary (or a junior QA person's salary) in the bay area and you might change your opinion.
"Those that start by burning books, will end by burning men."
When your main concern is speed C++ (or C for that matter) is they way to go.
From what I've heard, Goggle uses three languages in production: C++, Python and Java (not to mention all that Web 2.0 craziness on the client side.) I don't think they hired Guido van Rossum to write C++ (although he is obviously a talented C programmer.)
Some privacy policy Slashdot.
Open source developers won't actually be able to profit from companies spending less by switching from proprietary software?
Of course I didn't RTFA... why would I do that? You really are new here aren't you? Don't let my UID fool you.
Not too many IT consultants are 17...
--and yet anyone (well, anyone who doesn't have some personal stake in C++) will agree that speed is the ONLY thing C++ has going for it.
I disagree. C++ has pointers, which Java hides from the programmer. That's the main reason I prefer C++ over Java. Well, that and the "training wheels" sensation I get whenever I work with Java.
But for most non time-critical tasks I prefer Python. It's almost too easy.
well, at least not big, corporate enterprises. i believe the main thrust for this change is coming from small to medium businesses, then individuals. at least, its what im experiencing in my job.
a number of bigger enterprises (that are smaller than google, but bigger than avg joe inc medium business) are probably switching to open source due to costs and security as well, probably.
but the main drive to get one's business to internet is causing huge boost for ecommerce site production and maintenance, like oscommerce. even though its not a perfect piece of code, its very widely used, and curiously, loved.
Read radical news here
That's great logic if you assume that the programmer lives alone and inside a box under a bridge somewhere.
It's sh*tty logic if you consider that the programmer may need to get to his job
every morning, may need a safe clean place to live and may be paying for several
other people to do the same. That programmer probably also needs to pay for their
food too, as well as their medical care and also be able to account for possible
future emergencies that may include being downsized and unemployed for awhile.
Then there's retirement.
Yeah, if you have a "live for today" mentality and live in a cheap location and just live in a studio then mebbe $90k is a lot.
An experience tradesman can make $90k in a year.
Perhaps you've heard of this thing called inflation...
A Pirate and a Puritan look the same on a balance sheet.
The company I work for has a huge monolith of code all done in C#/ASP.NET. We are currently in the process of scrapping it all to go Java and Ruby on Rails.
Seems like a huge expenditure for little gain, but I guess I'll wait to see what it looks like on the other side. At least I'll have experience with both when this is over. I've got lots of open source administration experience, but little open source programming experience. I'm too spoiled with the Visual Studio training wheels. It's going to be tough to go to a shittier IDE.
I must be getting old because I remember when people bitched that C++ was dog slow compared to C. Guess that since Java has held the "slow" torch for long enough, it's time to pass it on to Python, Ruby, and all the other interpreted languages. FWIW, I like C++, but ever since Objective-C got a GC, ObjC has become my C of choice.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
Actually...
The largest "real, in-use" Hadoop cluster that Yahoo! has is around 2000 nodes, counting a dedicated name node. As far as we're aware, we've got the largest Hadoop cluster. [If there is a bigger one, we'd love to talk to you and compare notes. :) ]
That said, we do have Hadoop running on tens of thousands of machines. Just not as one big cluster.
It is also worth pointing out, that most of our clusters are multi-user, multi-application. The number of nodes is really more indicative of the size of the Hadoop distributed file system than the number of nodes given to a particular application in our (grid team's) use case.
There is a lot more about Hadoop, and Yahoo!'s particular Hadoop usage for internal utility-type computing, at http://wiki.apache.org/hadoop/HadoopPresentations .
Odd, I live quite decently on around that much a year (well more now but that's a separate point) and a large chunk of it goes into savings (or investments). It's actually quite easy if you're capable of not buying every shinny thing you see.
as well as their medical care
Then you're likely a shitty programmer because only those get hired by companies which don't provide insurance. If you're a contractor that's different but then you should be making more than a salaried person to make up for such things.
But a good soccer player can make enough money in 10 years to cover a lifetime of work.
No he can't, a great soccer player may be able to but not merely a good one. Pro sports is where the best go and there aren't that many pro sports players. There are a lot of programmers on the other hand.
I'm sure that if you're the programming equivalent of a professional sports player (best of the best, etc.) then you are making a lot more than average. You'd probably have to compare against those who make successful startups.
WTF is mathmathmatics? Is the like developersDevelopersDEVELOPERS?
I guess I must live in an open source town. I can't remember a job posting in IT that didn't require a background in some sort of open source software. The only popular closed-source programming language is .NET, and even most of those projects seem to use things like nHibernate and nUnit.
Who cares what the "enterprise-level" companies are doing? I mean, yes they are a significant part of the job market but hardly all. Just as with most other types of business, most coding and site jobs are for smaller companies.
The tendency in big enterprises is for ultra specialization, the reason being simple: that way people become interchangeable (or so they think, people are not machines after all).
Small and medium companies yes, for sure, you want somebody that is more of a Jack of all trades.
IANAL but write like a drunk one.
From the summary:
'That's why the 5% to 15% really doesn't sit well with me,' Rodrigues writes. 'I suspect that larger companies are looking for developers with a mix of experience with proprietary and open source products, tools and frameworks,' as opposed to those who would work with open source for 90 percent of the work day.
So people with a mix of skill sets are considered valuable by employers, eh? And yet, in this post, where I advocated requiring IT staff to rotate in their job functions and learn Linux, Windows, Cisco, etc. etc. etc, people jumped down my throat saying "that's too hard" or "geeks won't like that".
Interesting.
God invented whiskey so the Irish would not rule the world.
Having the skills to work on a high profile open source project tells something about your skills. This rule might not hold 100% of the time, but engineers that work in these high profile projects tend to be very good engineers.
I was thinking the same thing. Mod +1 Funny
How are "Open Source" software skills different from other software skills? Last time I checked, everyone was writing in the same computer languages as everyone else. :P
Python isn't interpreted. It's compiled to bytecode, like Java. You can even compile it to Java's bytecode and run it on the JVM if you want to.
The median family income in the US is $48,000 a year, so clearly lots of people would do just fine with one household wage earner making $90,000. In fact, they'd be incredibly thankful for it.
I'd say it's your logic that's shitty, and you should probably examine your spending habits.
If speed were your primary concern, how could you not go with assembly.
With rare exceptions (like codecs), c++ is just as fast as asm, and twice as easy to maintain. Most of your gains are from algorithm choice, anyway.
If you were to program OO using C++, it should always be significantly slower than Java due to the large number of tiny heap allocations/de-allocations. In order to compete, C++ programmers constantly have to consider putting every object on the Stack.
Or maybe a C++ programmer just throws things in there as needed. No mallocs = fast memory usage.
Also, many languages are going away from speed concerns altogether. Ruby is so far out of the C++/Java ballpark that it's silly.
Dunno about that, but python allows you to replace chunks of your script with native code, so you get script dev speed and the slow parts are a native library.
"We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
As the IT manager of a medium sized company All the developer posts I write include as one of the questions Emacs or Vi? Why are we going open source? - Moving all applications to be web based - Why? Man are we ever sick of worrying about whether that last patch is going to break all of our software. - Some of our software will not run on Vista (Damn you small specific vendors) - Tired of paying money for a Monstrous workstation when all they really need is a web browser and email. - Tired of re-imaging (yeah fuck fixing or protecting windows) desktops because some CSR decided their dead grandma was sending them porno links from the great beyond. - Tired of being tied in and locked out of our software. - No one can customize software for your business like yourself. - And last but not least. I'm the FUCKING manager and I use Linux. Actually my whole IT department uses either Linux or OSX.
Care to give us a breakdown of your setup i.e.
...
What version of Linux are you using on the desktop?
What technology stack are you using for your solutions? Python/php/Java/Apache/MySQL
What IDE / Toolset are your developers using?
That sort of thing
http://projectleader.wordpress.com
Dude try Netbeans you will not regret it!
http://projectleader.wordpress.com
If speed were your primary concern, how could you not go with assembly.
Because writing asm doesn't provide any benefits. Modern c/c++ compilers can optimize the hell out of the code which doesn't happen with asm.
If you were to program OO using C++, it should always be significantly slower than Java due to the large number of tiny heap allocations/de-allocations.
[citation needed]
C++ is also unable to do many runtime optimizations that Java can do.
This is true. But, With C++ you can control memory allocations. You can do several clever things that are not possible with java.
In order to compete, C++ programmers constantly have to consider putting every object on the Stack. Java's short-term heap performance challenges that of a C++ stack, which is MUCH better than malloc.
I have yet to see C++ code of the same algorithm that runs slower than Java code. Can you post a 1 page code sample that demonstrates this?
Also, many languages are going away from speed concerns altogether. Ruby is so far out of the C++/Java ballpark that it's silly. Most Java stuff tends to be about 1:2 the speed of C++, almost never slower than 1:4 with Ruby you're talking like 1:100, and yet people are moving to it because speed isn't that much of a consideration any more--and yet anyone (well, anyone who doesn't have some personal stake in C++) will agree that speed is the ONLY thing C++ has going for it.
C/C++ will *always* be in demand. There isn't a single language that has yet to replace C/C++ for systems programming. One reason why new programmers dont embrace C/C++ is because its hard :) I'm glad it is.
And 4x as a senior dev for an investment bank in London.
Great Windows SFTP Server!
A 5 to 15 percent figure for open source skills doesn't necessarily mean 5 to 15 percent of the projects will be open source. More likely, IT managers are getting smart, keeping their options open and making sure that they have a back door out of the lock in trap. A broader range of experience is also a sign of someone with a better background in CS rather than a one language/one tool technician.
This sounds like a smart tactic. In fact, I'm surprised that the figure isn't higher. And I'm particularly happy that the proprietary platform fanbois are getting their panties in a bunch over only 15 percent.
Have gnu, will travel.
A good programmer has to work all of his life to make enough money to feed themselves most of the time.
Only if you are working in Open Source. If you sell a proprietary, closed source application, you can make -bank-.
This is my sig.
Dunno about that, but python allows you to replace chunks of your script with native code, so you get script dev speed and the slow parts are a native library.
Except python fails with the GIL. It is essentially a mutex that is locked anytime a python object is being used. Unless those bits of native code you have don't need to worry about python objects, your python code doesn't scale.
Guess that since Java has held the "slow" torch for long enough, it's time to pass it on to Python, Ruby, and all the other interpreted languages.
It's not Ruby that's the problem, its the Rails....
The way around this is to design your app such that heavy lifting, where possible, is done in native leaf nodes; most of the time, I don't really run into problems like this: stuff is either fast enough or it's obviously doing way too much work.
"We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
The "open source" in a job posting says more about a company and its culture than free meals, foosball tables or casual attire ever did.
What on earth is open source software skill?
You don't know what you don't know.
Honestly I started to argue and then had to stop and consider if you were messing with me.
Pointers are simply an artifact left over from when it was too difficult to make a compiler produce high-performance code. There is absolutely no advantage to pointers now that compilers can be written to perform with the same speed on arrays. They are just a horrid horrid idea.
I'm actually quite good with pointers--I'm not scared of them or anything, It's not that they aren't a little fun at times, but they don't supply a single positive thing to the programming experience that can't be done better through other mechanisms with a better language/compiler. Even memory-mapped I/O could be done with an array if anyone really wanted to do so--there is absolutely no reason it shouldn't compile down to code exactly as fast as pointers.
The more information your compiler has, the smarter it can be about optimizing your code. When C was made (and C++ followed with similar syntax) they didn't really consider optimizing, just making an easy to write, easy to port compiler (a very admirable goal for the time!).
Oh, I agree about Java being a "Hand-holding" language, but if you have to work on some crappy code written by a bunch of crappy engineers that is extremely bug-laden, wouldn't you prefer it was in simpler language?
Hmm, seriously, while I was typing out that paragraph I answered myself--it's a trick question (and perhaps the one HUGE advantage to C++!) You won't find really really crappy c++ code because there is a much higher "Minimum programming ability" than most other languages.
You don't gain anything, but it does keep you in a more exclusive club.
PS: I spent years programming the windows 3.0-3.1 api with C including the giant 100 line switch-statements from hell and the debugging binaries and all... It's not like I don't understand C/C++..
>>Or maybe a C++ programmer just throws things in there as needed. No mallocs = fast memory usage.
This kind of proves a point. C++ keeps programmers from understanding OO development. Just as a quick review--when I moved from C++ to Java, I suddenly realized I had NO IDEA how to program OO in C++. It wouldn't let me.
To think in OO, you create objects without owners or lifecycles. They are shared--they kind of float around. Others may have references to your objects or not.
the way you are able to design is a level up. You can't care about when to destroy memory, and you can't be in any way reluctant to create a new class. The elegance and simplicity of OO comes form creating a class EVERY SINGLE time it enters your mind to do so. Good classes are rarely more than a screen or two long, and never have more than one concern.
This leads to a massive number of small memory allocations that cannot be stack-based (Well, of course many can be stack based, but to even make you think of that is a pretty big distraction to your design and a huge hole for bugs).
Basically I've never seen an OO C++ program.
I know that a lot of what I said makes you feel like I have no design process and my code must be horrible, but that's not the case. It's like the design process has gone up a level and left a lot of the less important concerns to the compiler which can be trusted (the reason it makes you nervous is that the C++ compiler could not be trusted to handle those details).
But whatever. I've spent 7 years in C++/C and 10 in Java. I suppose if you've spent a few years in Java and a few in C++ then we've just had different experiences, teams and design approaches.
Pure programming is more and more viewed as a commodity. Knowing your domain, having "architect" skills, and having some people skills make programmers worth much more than what most are paid today. I have an MS in computer science from a big 10 school, and my training has helped me tremendously when combined with the ability to talk to business stakeholders. I also work as an independent contractor, which allows me to make 3-5x what a programmer would make. If all you are is a mechanic, you have too much competition to command a high salary. You need to broaden your skill set to go after bigger $$. The truly gifted programmer is a truly rare person. I have only met a few in my 20+ years in IT. In most cases, the employers of these people didn't know what a gem they had in their employ. A degree in anything is a waste of time if you don't bring something else to the table.
Yeah, that's useful. Great. Just what end-users want, crappy code that still doesn't run right but now you can run it inside a different interpreter. Wheee.
+++OK ATH
Plumbers and electricians make as much as IT workers, and always have. IT just likes to think we have "important" jobs.
Ask a master electrician in the local IBEW union what they make and see how much they work and how hard it is. Then come back and tell me that complex programming or system administration is a good job choice.
The reality is, they are good jobs... but they're not any better than the guy next door with his own bathroom remodeling business.
+++OK ATH
Yeah, like open-source has produced better products that have no "mediocrity" in them... no bugs, all the end-users are happy with the Linux Desktop because it's better than Microsoft or Apple for their needs, and everything's roses coming out of my ass.
Mediocrity will remain. There is this thing called a bell curve, and only a few programmers are in the small far-right portion of it.
The rest crank out crap, year after year after year. Don't believe me? Take a job in senior technical support for 15 years. I have.
I will never want for work. Programmers just aren't that bright.
+++OK ATH
Yeah there's never been any crappy Java code on the DailyWTF.
Now that Java is open-source it makes rainbows shoot out of my ass, and my poop smell minty fresh.
+++OK ATH
That's all well and good for instances where you're using pointers as an array type. My issue with removing pointers is for when I want to implement, say, a linked list or a B-Tree. In such instances its significantly more intuitive to use pointers, and its absolutely vital to have control over memory management if you want to write a fast data structure library.
Admittedly, I don't write a lot of B-Trees these days. But if I was going to, I wouldn't be doing it in Java. And yes, I know it can be done in Java. It's just not nearly as elegant or efficient.
Borland's TurboPascal ..back when Ms Pascal costs $500+ it was $50 and SO much faster/better. It was great why is it not used?????????? This is what I was taught on and I could never figure out why it isn't used more often. Marketing etc is all I can think of.
Somewhere like say .. Savannah, GA 60k-70k is a very good living, because it's a cheap place to live, I have a nice house in historic district I bought for $167,000. If this house was in a desirable area of SF BAY It would be 1,000,000.
There is no reason it has to be less efficient is my only point.
Maybe it is, maybe it isn't.
As far as intuitive--I'm not sure I like "Intuitive" code much. I saw a lot of it in Ruby and to tell you the truth, The more "Intuitive" the language, the harder the code tends to be to read (and often, the worse the implementation--some of these string manipulation tools built into the language become the "Go-to" solution for all problems when in fact they are creating some horrid underlying solutions..)
I'd like longer, more explicit code as long as the compiler is smart enough to grind it down to the same machine language. (Yes, java ends up as machine language if you haven't been paying attention, and potentially more efficient machine language than C since it is optimized at runtime.).
I suppose we all have these balance points--being willing to give up a certain amount of understanding of the underlying implementation for simplicity and abstraction at a higher level. If not, we'd all still be using assembly (I remember programmers complaining about C vs assembly the same way many people now complain about java vs c)
As long as you know that Java is virtually as fast as C, that it's significantly more reliable and can have a much better level of abstraction allowing quicker development, choosing to stick with C is fine.
Personally there are Java competitors that are becoming just about as fast and some people claim are better abstractions (Scala), but I'm just getting too old to wrap my head around (I tried), so I'll stick with Java, telling myself that it's better to stick with simplicity and more explicit code and no cute language tricks--actually, I really believe that.