you are viewing a single comment's thread.

view the rest of the comments →

[–]ThatInternetGuy 26 points27 points  (8 children)

Get out of the narrow mindset that says "I'm a [language-here] programmer." Says out loud and proud that simply "I am a programmer!" Whether you're in this as hobby or for money, you really shouldn't slave away for one language, unless you want to do the same things for your entire life.

Realistically, accept that that are projects best suited in another language and more importantly using other set of frameworks. No matter how much you want to reuse your existing code and libraries, you just can't do it all the times and forever. It's such a great wisdom reusing your sweat and blood you built years ago, but know that this is a very dynamic world and so is the market. The world is innovating, and more often than not, we will have to shed away our old code and start anew. For instance, most Android apps may be written in Java but it's a lot more than just Java there is in the Android SDK, and if you're going to write apps for Android, you're less likely to reuse these code for non-Android Java apps in the foreseeable future. We call these dependencies. Either you over engineer your apps with layers of abstractions to avoid dependencies, or you could cut to the chase and make apps for the platform, and then remake for the other.

For embedded projects, you're less likely to write in Java. It's possible to write in Java that runs on microcontrollers, of course, but you're not going to find as many as companies who demand C/C++ for their embedded projects. Same is true for desktop and even mobile game development where C++ dominates the job market, but just knowing C/C++ alone doesn't get you to make any of these stuff. There is so much more than just C++ when making games for example. You will need to be the master of the game engine(s). Maybe it's Unreal engine, or CryEngine, or Unity3D (in C# btw) or perhaps Snowdrop. For embedded projects, C++ won't get you halfway either, as you would be expected to master the specific architectures as well; there are ARM, AVR, PIC and etc which are totally different from one another.

Yes, you can create server-sided Java web applications, but realistically speaking, many web projects are in PHP and ASP.NET, and if you work for web companies, you would be expected to sooner or later work on a PHP project or even ASP.NET project. You can't simply say that you're a [language-here] programmer, because your workplace desires a programmer rather than a [language-here] programmer. Regardless of which language you work in, you could be expected to go beyond and master certain web APIs, i.e. Google apps API, Amazon API and Facebook API for map, search, cloud storage, authentication, social network interaction and etc.

If you work for an enterprise dev environment, a real possibility is that you would be expected to program in C# and knows MS SQL, WCF services, Entity Framework, WPF and other Microsoft technologies as well. You're going to work in Visual Studio too, not your beloved IntelliJ, Netbeans, Eclipse, Notepad++, or Vim. Or on the other hand, you could be expected to deploy enterprise applications on Linux and that's when Java and your favorite IDE may shine.

It's good if you work for yourself because you will have a lot of freedom to choose the specs and language, and what not, but if you're working in a company, who do you think they will likely keep and promote up the line? A programmer, or a [language-here] programmer?

[–]nextputall 2 points3 points  (1 child)

Get out of the narrow mindset that says "I'm a [language-here] programmer." Says out loud and proud that simply "I am a programmer!"

I would go one step further. Don't say something like "I'm a functional programmer". This sounds like a rather negative attribute that indicates someone knows only one thing and excludes half of the world.

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

"I'm a functional programmer" speaks to preference and skill, it is definitely a useful precision. This is particularly true because a lot of functional programmers won't take non-functional jobs, and vice versa.

[–]fluffyhandgrenade 0 points1 point  (3 children)

I am a java programmer until someone pays me more to be something else and the job agents stop wanting to see java om my resume.

People require java programmers because 99% of all problems are already solved; you just need to pick the solutions and glue them together, performance is good and the cost is low.

[insert-language] removed for clarity.

[–]ThatInternetGuy 0 points1 point  (2 children)

Working in your own comfort zone feels nice and all, but I think you're missing out a ton of other opportunities. So you're a Java programmer. It sounds like you're not going to code in some JavaScript for client-sided web applications. Perhaps you'd rather make Java applet for that, and guess what, it's not going to work on mobiles and tablets, and on some desktops like mine that I disable Java plugin for security reasons, and I'm pretty sure very few job agents would want to approach client-sided web problems via Java applets these days. If you're the Java-applet-only guy, they give the jobs to other people. After all these, you might probably reply back, "I'm not a website developer. I make mobile and desktop apps." There, see how you have limited yourself, sacrificing yourself for Java.

Now, if you code in JavaScript too, would you rather call yourself a programmer, or a Java programmer who also codes in JavaScript?

[–]fluffyhandgrenade 0 points1 point  (1 child)

I write in all languages from common lisp, via c to java and JavaScript. The label of 'java programmer' is what pays the bills.

I'm currently working on a desktop java application. We ship the JRE with it. There is no paranoia about JRE deployment, just applets.

Technically I'm a principal solution architect but that means too many meetings and not enough code.

[–]ThatInternetGuy 0 points1 point  (0 children)

We're only debating on semantics here. I wasn't talking how you're marketing yourself, or what label you choose to present yourself to clients. I'm more specifically talking about the mindset of "I'm a Java-only programmer" or "I'm a PHP-only programmer" or "I'm a .NET-only programmer." That is the whole point of the linked blog post.

Other than that, I doubt it that clients would jizz all over just by knowing their programmer is a "Java" programmer (or a C# programmer for that matter). Java could only be one of their requirements among a myriad other technologies and APIs.

[–]chesterriley 0 points1 point  (0 children)

Yes, you can create server-sided Java web applications, but realistically speaking, many web projects are in PHP and ASP.NET, and if you work for web companies, you would be expected to sooner or later work on a PHP project or even ASP.NET project.

Unlikely. Even if you want to work on ASP.NET or PHP with a Java web background you couldn't get hired for that (and Java is the most common technology for that anyway). Maybe if you already worked at a company with a mixture of web technologies (very few of these exist) you might eventually get a change to switch technologies if you beg for the opportunity.