13

We've all probably met someone like this, that developer who just knows that his language is the one true language and won't shut up about it. How do you deal like someone like this? I don't want to offend anyone (especially since the fanboy in my workplace is the senior developer). But I want to be able to use my own choice of scripting language when I have to write a throwaway script that never makes it to the repository and no one else need know existed.

Thoughts that I had to dealing with this:

  1. Laugh it off - "Haha yeah maybe language X is a bit easier, I guess I'm a masochist!"
  2. Go with it - I'd really prefer to avoid this as I can't afford the drop in productivity associated with picking up a new language.
  3. Hide my language - Become a closet programmer and hide my monitor whenever I'm scripting or automating something.

What would you suggest for this situation?

10
  • 15
    Wouldn't it just be easiest to ignore him, and perhaps ask for even slight professionalism whenever the situation arises?
    – zxcdw
    Sep 3, 2012 at 13:08
  • 25
    Absolutely sure that you are not a fanboy by yourself since you insist to use your choice?
    – Doc Brown
    Sep 3, 2012 at 14:41
  • 11
    @DocBrown Im not impartial but I'm pretty sure that Perl (my choice) is better suited for parsing text files then VB (his choice) Sep 3, 2012 at 15:13
  • 4
    Question is, is the guy really a fan boy, aka, does he only know one thing and has poor justification as to why it thinks it's "da best", or is he really very good and chooses a certain something most of the times because that's really the best way to go? I'm asking this in a completely non-sarcastic way, as I've labeled a few ppl as fan-boys myself, before realizing that they just knew a lot more than me. Sep 3, 2012 at 15:17
  • 8
    @jozefg I hate to leave a non-constructive and possibly opinionated subject as a moderator, but isn't moving to VB from Ruby a giant step backwards?
    – maple_shaft
    Sep 3, 2012 at 16:29

9 Answers 9

14

Few things are jumping out of the question.

  • Is it really a throwaway script? If it is, it's strange that it's being discussed.
  • Are you sure throwaway script will stay as is? A lot of production stuff has been a throwaway script at some time.
  • Are you going to rewrite the script if it's promoted and needs integration in the system?
  • Is the language choice purely syntactical or is it a language from another sphere?

I kinda understand the fan-boy part, because from one side, I am behaving kinda like a fan-boy sometimes, while protecting my few languages of choice. And I've also dealt with other fan-boys who try to bring new stuff in.

My view on this situation is like this:

  • If it's a new language, it belongs in a garbage bin.
  • If it's an industry proven language, it can be used if it's specialized for the task.
  • If it's a very unpopular language, it belongs in a garbage bin, even if it's super cool and super fast.

It's because no one knows how to write safe and fast software in an unknown language, and it has all the gotchas developers have to learn. The stupid script will have to be supported over 20 years or rewritten. Over 20 years, at least 50 developers change in an average shop. If each one writes few fancy scripts in a new language, you need 50 language runtimes, 50 different expertises on the team, and the codebase has buggy code in 50 languages. And some of the languages are no longer supported on Windows or Linux. And needs that unpatched 10 years old custom server, with no spare parts available, 24/7.

Also, no one really wants to support dead languages like VB, Silverlight, D, etc., when the code-base will probably outlive the language itself.

5
  • 9
    +1 for questioning the throwaway nature of the scripts. An ex-colleague pointedly remarked that most temporary solutions are permanent. Sep 3, 2012 at 14:17
  • 12
    -1 for categorically rejecting all new languages. This is so wrong that it overwhelms the rest of the advice which is good. This is exactly the way you end up with a gigantic legacy code base in C while your competitors run rings around you with Ruby (or Clojure or whatever) because they can express the logic of what they need to do so much faster than you can. To succeed admirably instead of lamely you need to pick the winners early.
    – Rex Kerr
    Sep 3, 2012 at 16:53
  • 2
    -1 for labelling VB & Silverlight as "unpopular". You'll be supporting your unpopular languages a long time yet... tiobe.com/index.php/content/paperinfo/tpci/index.html
    – deworde
    Sep 3, 2012 at 17:22
  • 3
    D is dead? That's news to me, especially since a new version was released the other week! -1 dlang.org/changelog.html Sep 3, 2012 at 18:21
  • 4
    mentioning languages explicitly: bad idea. Sep 3, 2012 at 22:37
16

Does he decide what you use based on company policy? Appeal your case to him; if he still decides against it, shut up and do your work with the tools your boss says you should use.

You work there, not play there. Ultimately it's out of your hands.


Even if he's not your boss, I would consider all the angles here. Would you like it if he knew Fortran and one day you inherited all his code. You'd have to learn a brand new language from scratch on the fly, that's terribly stressful. Now picture his side, you might write your scripts using Cobol and he may not know Cobol.

Use something the majority of your team knows.

2
  • 6
    "You work there, not play there." +1
    – funkybro
    Sep 3, 2012 at 14:17
  • 1
    But the first step towards making the changes you want to make is to prove that they're effective in a safe environment.
    – deworde
    Sep 3, 2012 at 17:25
9

"2. Go with it"

This is the only reasonable answer. You have a great opportunity here.

  • Use the senior programmer's comments to encourage your company to pay for time and/or a course and/or certification to learn the new language. Worst case scenario: the certification and the language will both improve your resume, you may get a good recommendation for being a team player, and you can laugh all the way to a better job somewhere else.

  • I have gained valuable insights about programming from every language I learned. Even the least practical language (cough XSLT cough) had its sweet spot and was chock full of interesting learning opportunities (and paid my bills for several years). Constant learning is one of the great benefits of being a programmer.

  • All the cool projects probably use the senior developer's favorite language. Knowing that language puts you in the pool of talent who can work on those projects.

  • Someone is presumably paying you to do certain work a certain way. Any other response is probably insubordination and is likely to end badly.

The senior developer/architect normally chooses the primary language used at a shop and ensures that everyone uses that language. This way, a company builds a knowledge base in certain technologies so that one employee (you) can take vacation and someone else can pick up your code and fix it while you're gone. Also the company can bring in relevant training talent and the HR department will know which buzzwords to look for on resumes.

By learning his language and using it for work, you accumulate the political capital you need to effectively advocate for your favorite language. Many companies have an official infrastructure language and an official scripting language for reports. Prepare a pros and cons list showing where his language excels and where yours does, also where each falls short. You need to keep this list in the context of a specific application, such as the reports you are writing. Plan a time with him to privately and respectfully show him the list and discuss it with him. Write down his objections, research them after the meeting, and if you have good counter-arguments, plan a follow-up meeting.

Good luck!

2
  • 4
    but really who wants to learn VB? Sep 3, 2012 at 21:28
  • Fanboy likes VB? I'm sure you can make good money with VB, but I ran screaming from it in my career. I still don't like options 1 or 3. I'd add option 4: Update your resume and find yourself a new job. Also option 5: Update Fanboy's resume and find HIM a new job! If that's not an option, then my earlier advice on option 2 would still apply. Sep 3, 2012 at 22:47
7

Show that in a specific context, another language is a more pragmatic choice.

If the person is passionate about C++ and you're working on a web application project, it wouldn't be too difficult. In the same way, some contexts are very inclined towards functional programming and using a non-functional language would be not very wise.

Notes:

  • Avoid situations where both your and his preferred language are very similar.

    For example, I would hardly imagine a context where Java would be "better" than C#, or C#, "better" than Java.

  • Remember that the choice of a language is very often subjective and is explained more by the previous experience of a developer rather than some evidence-based elements.

    For example if I'm asked to do an application relative to financial sector, I would still use C# rather than Haskell, even if I find Haskell more appropriate and truly exciting. The reason of this choice is that I have years of experience with C#, but when it comes to Haskell, I've only read a few tutorials and never used it professionally.

6
  • 1
    Linq would like to have a word. ;)
    – sergserg
    Sep 3, 2012 at 13:06
  • @MainMa, don't say C# can hardly be better than Java. It works much faster, and has a lot of built-in functionality )))
    – superM
    Sep 3, 2012 at 13:07
  • 14
    It is fanboys all the way down!
    – Froome
    Sep 3, 2012 at 13:08
  • 2
    @superM: "faster" is so subjective that I'll not even answer to this argument. As for built-in functionality, Java's built-in functionality looks quite large for me. Sep 3, 2012 at 13:10
  • 3
    "[Language choice] is explained more by the previous experience of a developer" -- and also by a developer's current professional goals, i.e. "I fancy skilling up in X (on the company's dollar)".
    – funkybro
    Sep 3, 2012 at 14:11
3

The answer is 2) Go with it.

  1. The only way to shut the fanboy up is to become fluent (to some degree) in his language of choice.
  2. The loss of productivity is not an issue. You are doing as requested by your senior, so productivity changes must be accommodated by the project.
  3. Learning a new language will make your brain function better.
  4. Learning to be open about learning new languages will do you even more good.

It's win-win-win-win. Enjoy!

2
  • 3
    Is this valid even if the new language is VB? Sep 3, 2012 at 22:47
  • Learning Visual Basic taught me many useful things that I wouldn't have learned if I'd stuck to my languages of choice at the time (C and PL1 if I remember correctly) Sep 4, 2012 at 12:44
2

The answer is you do not deal with it. Arguing with them just drags the arguer down to their level (where they beat you with experience) and is ultimately unconstructive because they are close minded.

Ignore any arguments they give for or against their language and make up your own mind. Use the usual techniques like avoid eye contact, answer monosylabically and move onto a new subject when silence ensures. Train them to annoy the person next to you instead.

The challenge here is the fan boy associates the language with his or her identity and any negativity associated with that language is personal. Do not attack or defend. Just ignore.

1
  • You can't ignore forever. Especially when that person is persuading you to use a language of their choice
    – superM
    Sep 3, 2012 at 13:19
2

Very few things at a job are truly throwaway scripts. I wind up putting many such things on the wiki or in the repository anyway in case needed again.

Even things I think are beneath the level of sharing, my teammates often feel differently. For example, I have a rgrep alias in my .profile. It's just a find statement with a parameter since I don't have access to real rgrep on that server. A teammate got wind and wanted it on the wiki.. Yes, the one line statement. Obviously we didn't have a debate about implementation language - it had to be UNIX. But it highlights the need to do things others on the team can understand.

Another spin is that it is possible the senior developer has a reason you don't know about for using that language. Have you asked?

Maybe try making the same script in both languages once to show why yours is better.

1

You should try fogging. This means to agree with everything the fanboy says (in part or whole), but do your own thing unless explicitly instructed to do otherwise.

3
  • 1
    You are right (in principle ;).
    – yannis
    Sep 3, 2012 at 13:26
  • 3
    Be passive aggressive? Sep 3, 2012 at 18:24
  • There's a difference between being passive-aggressive and using techniques to deal with assertive people. Sure, if the assertiveness descends into dogma, then this can descend into passive-aggressive behavior. In that case, the situation is dire anyway... so the best option is to leave. ;-)
    – Peter K.
    Sep 4, 2012 at 11:51
0

Passive-aggressive options 1,3 lead to more emotional distress, so give me a 2) take it on the chin.

Some general advice for the road: 4) If you don't get any smarter listening to your senior, do your own study in language/compiler design. Pick a language and learn what thoughts went into it. What the tradeoff is between features, performance, and expressive power. What other options are there. This alone will grant you inhuman programming superpowers. Learn NBL even, it's going to be huge.

Asserting oneself by pushing opinions on others inhibits productivity and communication. People may think giving up to the emotional urge is helpful, but it's a mere band-aid on their insecurity.

Being humble and kind with advice, and improving yourself will do wonders to express your gut feelings on a technical level. You'll feel better and see things for what they are, because you'll be able to reason. Hard to get mad when you externalize criticism to a technical context.

Not the answer you're looking for? Browse other questions tagged or ask your own question.