I cannot use language X
I often hear people complain to me that they cannot use some superior programming language in their environment. Is it the right programming language to use? You sure? Great, now toughen up and use it.
You’re being told that you cannot? What is the reason given? Because “blah blah fucking said so blah blah.” There’s your problem — you subscribe to the illusion of authority and attribute it to the claimant. Abandon the illusion. No; actually abandon it to the extent of total non-existence. “Yeah but blah blah blah…” — I totally didn’t hear what you just said, intentionally. The consequences are not what you think they are.
“Oh but how come you get to use Haskell in your job?” Because I refuse to be bullied by fools proclaiming their authority with disregard for the common goal of getting the job done. Don’t give them the leverage — by way of believing it even exists — it doesn’t. I use whatever is appropriate and Haskell is often appropriate. It’s as simple as that.
HTFU and just do it properly. Unicorns do not exist. Deal with it accordingly. HTH.
October 27th, 2011 at 11:52 am
You had me until “Unicorns do not exist.”.
October 27th, 2011 at 1:43 pm
Some of us actually are severely limited in our deployment environments. I wouldn’t be too shocked of some poor folks are contractually limited to specific languages.
October 27th, 2011 at 2:04 pm
At a previous job, where we mainly used C/C++, there were some things I needed to get done internally, and I used whatever was easiest to get the job done. For me, “easiest” usually means, “someone has already done it, so why reinvent the wheel”. For a data integrity checking task, I used Standard ML of New Jersey to parse the data and spit out a report. Very easy. For a task involving generating railroad diagrams for a grammar, I was amused that the best I could find at the time was a Haskell library. The testers who got my data report didn’t need to know I used SML/NJ, and certainly the documentation people who included the graphics files generated from Haskell didn’t need to know anything about GHC!
October 27th, 2011 at 2:58 pm
Josh,
Yes, for example on a recent project, I am limited by a constraint of running inside IBM WebSphere Application Server. It is a constraint that I have accepted; a very costly one though. The next question is to determine the best approach within this constraint (and all other constraints that have been accepted). I have used Scala to achieve this objective.
I suggest don’t be bullied by stupid arguments and don’t propagate them either. Introspection is paramount. Blind obedience to false authority is an unnecessary forfeit.
October 27th, 2011 at 7:14 pm
Tony,
What happens if someone else not skilled in Scala/ScalaZ has to maintain your code? I have not chosen Scala in a few projects because of that or because I had to work with highly unprepared coworkers in tight schedule.
October 27th, 2011 at 8:56 pm
If they can’t maintain relatively tidy code, they aren’t going to maintain any code. They’re faking it by misidentifying what it even means for code to “be maintainable.” In short, toughen up princess — there are no shortcuts.
October 27th, 2011 at 9:41 pm
Hah. This is such simplistic and impractical advice.
Most coding is extending existing codebases - how do you suggest people deal with that? Start sticking a few Scala classes into a massive Java codebase and just expect the rest of the team to catch up?
There are many organizations that simply forbid specific languages. They don’t have expertise hiring for other languages, they have a pre-existing investment in some language or they value the idea that as much of their code as possible is in a single language, for easier reuse and personnel transfer. What do you do in this case? Quit? If so, you’re like the people who tell the unemployed to just “try harder,” while steadfastly ignoring the extra 5% of unemployment (if you’re in the US) that makes such advice impractical. There are actual structural issues here, e.g. 98% of jobs are Blub and only 2% are Scala - we can’t all decide to move on to greener pastures.
October 27th, 2011 at 10:03 pm
Unfortunately, some people (including me :() do not have the authority of making the final decision to use a specific language (Scala in my case). Final clients are always wanting it be as cheaper as possible
October 28th, 2011 at 12:37 am
Maybe I’m misreading, I agree with the intent but it’s not just that easy.
First of all, my boss in my 9-5 job is not a “false” authority. Yes, I might be able to just use what I want and get away with it despite being told not to, or maybe he’ll say “You got that done fast, but you’ve shown a clear inability to be a team player and that won’t work here. Goodbye.” Some people can lose their job and be fine, others can’t, and “suck it up princess” is a horribly callous thing to say without at least acknowledging that division.
Second, even if your boss lets you write what you want, what’s the deployment plan? Can you write Scala code and manage to get it running on an XBox? Will the Systems team (assuming there is one) be able to deploy your Rails app into their JVM stack? How much of their time will you waste with your decision? Yes, you could argue that these questions fall into the original question of what is the best language, but honestly you seem to ignore outside parties based on the tone of your post.
In short, sometimes “suck it up” actually means “use what’s known, not what’s fun”. Standardization sucks, but being pragmatic trumps being idealistic.
October 28th, 2011 at 2:46 am
@Tony
You have a good point regarding maintaining code. I have used other products in the past (Forte 4GL comes to mind), where I had to train my whole team on a entire suite of products. These people were fresh out of college, and had been trained on Windows systems. For them to provide on-call support with me, they needed to learn ssh, going through a terminal server, vi, bash, csh, and a language they had never heard of. One of my people couldn’t cut it, and he was let go. This wasn’t “can you handle language X”. It was “can you handle X, Y, Z, A, B, C, extra hours every other week, don’t get drunk while you’re on call” and more. I’m proud that they could step up to the plate, and I know they are better developers because of it. One of them was good enough that I turned management of that system over to him so I could transition to another team.
October 28th, 2011 at 3:30 am
This would not work in my world. We are always bounded by the customers which programming languages we are allowed to use.
Plus on multisite projects, some development sites deploy new PC images on the begining of each project with the set of allowed tools. Afterwards the developers are frowned upon what they can install.
October 28th, 2011 at 6:34 am
This is amazingly good. Proclaiming the principles, and fighting for them.
There’s one thing though for using an inferior language: other people. They will have to work with it; so, I believe, one may well be a step ahead, but not 10 steps ahead. Or else we lose.
October 28th, 2011 at 7:05 am
Tony, I do agree that changing code is not maintaining it.
November 9th, 2011 at 4:56 pm
The problem here is more corporate environments it seems. This is why I refuse to work for a company that employs more than 50 people. The amount of bullshit you have to deal with is just not worth the extra pay. I prefer to work at a small company and get actual work done rather than work in a large corporate environment and waste my own time dealing with stupidity. There is the unfortunate scenario, though, were the small company gets outsourced to by a large company of government and then you have to deal with the same bullshit. Very tiresome and something I am having to deal with right now…
December 17th, 2011 at 1:42 am
Yea, I work in financial services and you have government restrictions on what you can use and how, etc. But I can still use Haskell for computing tasks, for parsing log files or sending data to a web service.
You have to tell the government or some auditing group what you are using and how, but they don’t say, “Don’t use Haskell” or “Don’t use Scala”. And Scala isn’t a good example because Scala compiles to bytecode. So if you are using Javac/Java lang, you can just as easily use Scala.
I wouldn’t mind getting back into defense contracting to see if I could push “other” languages and what the restrictions but I imagine it is similar to what the SEC recommends.