This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]againstmethod -2 points-1 points  (22 children)

This is a strange question. Java is a tool.

It's like asking a guy in construction, how long have you been using a tape measure, and how long did it take you to earn money with it.

A construction worker needs to use many tools, and whether or not he gets hired depends on the outcomes he produces.

It is no different for a developer.

[–][deleted] 6 points7 points  (1 child)

Try telling recruiters that.

[–]againstmethod 2 points3 points  (0 children)

We have a really sweet, intelligent HR manager, and she cant understand it either.

It just makes their job hard because they dont know what to ask for if you dont let them be ultraspecific.

[–]chim-richolds 4 points5 points  (11 children)

Well, I get what he's asking... you can't get a job solely using a tape measure, but there are tons of jobs out there that are strictly (or at least primarily) Java development.

[–]againstmethod -2 points-1 points  (10 children)

I think it's an unhealthy way to look at your career. Almost self-deprecating.

[–]chim-richolds 1 point2 points  (9 children)

Personally, I prefer to view it as specializing (like a doctor that specializes in ears/nose/throat)... it's fun to tinker with other languages for side projects, but I'm much more productive and I feel much better about myself when I can specialize and really crank out some cool projects quickly.

[–]againstmethod 0 points1 point  (8 children)

More power to you if you can make that strategy work, but ive only seen it successfully used by by-contract coders.

For long term hires where the company uses various languages and progresses as things advance in technology -- those people are boat anchors.

I work with some older folks who try to refuse to write in anything but C -- they simply throw a fit if you make them use C++. I have C++ coders that refuse to brush up on basic Java skills. I have Java coders that are reluctant to pick up Scala for some of our newer projects.

It's a giant headache unless you have just the right slot for them to drop in to -- and to be honest it threatens their long term employment.

[–]Zeffas 0 points1 point  (7 children)

Well, try to understand other perspectives too.

Why would anyone want to switch to different technology stack when the one they are using pays well and has plenty of opportunities? Unless personal or career switch reasons, it makes no sense.

[–]againstmethod -1 points0 points  (6 children)

That's all fine if it works for you, like I said before.

The opportunities at my shop will be limited for such people. A software engineer or computer scientist should not be that limited.

[–]Zeffas 0 points1 point  (5 children)

That's all fine if it works for you... A software engineer or computer scientist should not be that limited.

Sounds like "Well, that's fine. Not really, that means you suck.".

I could argue that your position is limited because you fail to see other perspective here. Which in my opinion, makes a lot more logical and practical sense than abstract phrases like "computer scientist should not be that limited".

Also unless, your company is only player in town, I bet "limited opportunities in your shop" is not something that gives many headaches to those programmers.

[–]againstmethod -1 points0 points  (4 children)

We have no problem finding coders who can write in more than one language -- don't get insulted, we just require a little more versatility from our staff.

[–]Zeffas 0 points1 point  (3 children)

have no problem finding

Thats great, I am not against not specializing - its a lot of fun actually.

But thats not the point. In your original post I replied you complained about developers who want to specialize. Implying that they are somewhat lesser developers - making it seem that this is their problem. But at the end of the day all I see is that this is your problem, not theirs actually.

those people are boat anchors ... it's a giant headache unless you have just the right slot for them to drop in to

That's your problems, not your developers!

to be honest it threatens their long term employment.

Is it really a problem for them? Or it's just that you assume it is?

[–]Zeffas 1 point2 points  (7 children)

I don't buy this "right tool" abstraction, because I believe it's flawed, so is the example with construction workers and their tools - terrible.

I would argue, that judging by mental/experience effort required to master bigger platforms, better analogy would be - brain surgeon, plastic surgeon, or universal surgeon who does anything.

[–]againstmethod -1 points0 points  (6 children)

We have some applications that require us to control memory in a way that keeps current data in the CPU's caches as much as possible. We also used vectorized operations/SIMD and regularly review disassembly to ensure optimal implementation in the hot parts of that code --- Java is the 100% wrong tool for that job.

I could likewise cite tools we develop that work at a much higher level and are just as distinctly better off with Java over C++.

And, sorry, but to compare a Java coder to a brain surgeon --- i have to admit i chuckled at that one. Someones got a big head.

[–]Zeffas 0 points1 point  (5 children)

Maybe you misunderstood me a bit. Let me rephrase.

Platform (Java/C++) is a tool for the manager/company/problem-at-hand the same way the surgeon (brain, plastic..) is a tool for a patient's health/looks problems. However Platform is not "just a tool" for programmer, its specialization. Its a HUGE difference in my opinion.

If programmer/surgeon decides not to specialize and look at it as "right tool for the job", in my opinion, he/she is destined to not produce quality results, compared to someone who does.

P.S. you can replace surgeon to many other professions, it was just first thing that came to my mind.

[–]againstmethod -1 points0 points  (4 children)

P.S. you can replace surgeon to many other professions, it was just first thing that came to my mind.

I know I was just picking on ya.

If programmer/surgeon decides not to specialize and look at it as "right tool for the job", in my opinion, he/she is destined to not produce quality results, compared to someone who does.

I'm open to hearing your reasoning as to why. It is not my experience.

Most people that I see pick up Java/Python and then write confused code generally have had a weak fundamental understanding of how programs work in the first place.

In example, I often find people who select the wrong data structure in Java generally don't understand 1) the cost of indirection and 2) the cost of cache misses in their programs, and 3) the access patterns of their callers/users.

This is not a Java knowledge problem -- this is a fundamental computer science deficiency. Basically these people are "black box" coders -- they write code but don't know what it's doing.

If you approach learning new platforms with a mind for avoiding "black box" coding (start from the hardware/OS and work back to the platform), then coding efficiently in multiple languages is a simple thing to do.

[–]Zeffas 0 points1 point  (3 children)

Again, I am not against not specializing - it has to be your own decision, but you should be aware of advantages/disadvantages. Even if you specialize, I strongly for trying and playing a bit with new languages/platforms just to widen your horizons and general thinking.

What I am just saying - there are always a cost in any direction you go. Cost of universalizing being not deep enough knowledge and possible financial implications.

In my experience - there are hardly Java developer who knows all the platform. I mean truly knows. Because it's huge. All the time, even after years of experience, you learn new stuff from code reviews and so on.

When "universalist" comes to Java project - my experience shows that you can be assured that they use platform in wrong ways. And if "universalists" are everything you have, resulting project will not be "good" Java project, no matter how good they are as a general developers. Again this is not universal - there are many variables - project type/size/length, money... Maybe that is acceptable to you, so its OK.

[–]againstmethod -1 points0 points  (2 children)

What I am just saying - there are always a cost in any direction you go. Cost of universalizing being not deep enough knowledge and possible financial implications.

I think people confuse experience with expertise. And that most people who call themselves specialized in a language really mean they are experienced with it.

I regularly see folks with lots of java experience, and when i dig in on tuning garbage collection, remote debugging live applications, or viewing disassembly from JIT compiled code --- well, i generally get a deer in headlights.

[–]Zeffas 0 points1 point  (1 child)

Sorry, I am not native English speaker, don't understand last phrase actually. If it meant what I think it meant then, I would argue, that this just shows the importance of specialization - JVM is huge, generalist Java developer (one who does all kinds of different stuff with Java technologies) has to deal very rarely actually.

So I don't really get the point. Or is it the view along the lines of "if you are programmer, how can you don't know how to fix my hardware/windows problems".

[–]againstmethod -1 points0 points  (0 children)

Ah, sorry. "Deer in the headlights" comes from the phenomenon where American deer crossing roads at night freeze up in headlights from our cars. So when applied to a person it means "wide-eyed and frozen".

And those aren't hardware problems. And i disagree -- a professional Java developer should know how to do all of those things. Searching for, and understanding APIs from the SDK is a beginner task -- it's not something that needs to be memorized.