Hacker News new | ask | show | jobs
by awjr 4021 days ago
Do people really only programme in one language? The simple act of connecting to a database and retrieving data by definition requires knowledge of 2 languages. What I think people do do, is silo themselves onto specific technology stacks (e.g. Microsoft solutions).
8 comments

I'm shocked you're asking that question. Most programmers are vocational and work for corporations. Most corporations try to force standardization. As a result, most programmers are significantly stronger in one language/platform than any other (whether they have any experience in others or not, which they usually will).

As a dumb example, when XMLHTTPREQUEST hit the streets, it was a paradigm shift in enterprise, but a pretty easy one for web developers to add to their toolbox. Years pass.... When everything became javascript, that was much harder, especially for the .Net folks who came from a VB6 background rather than a pure HTTP/TCP/CGI background. Lots of companies are still in infancy with adoption of modern front ends, mostly because their programmers are not polyglots and actively resist learning new things... and you can't just abandon hundreds of legacy apps through hiring better educated, modern web developers with the limited budget most companies have.

A few years ago we made a decision to shift from a .Net (+MSSQL+JQueryUI) stack to a Java stack, mostly for licensing cost avoidance after MS raised the price of SQL Server dramatically with 2012. More than three years later, >90% of our internal apps are still .Net and only a handful have been released on our new preferred stack (Java/PostgreSQL/Bootstrap/Angular) and probably only 10% of the programmers are competent enough to work independently using the new tooling.

This sad state is an area where there's a lot of naivete among young programmers and startups. The corporate world just doesn't work in remotely the same way. ... ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.

Oh, it's a mad, mad world.

Shocked? Really?

While I'm certainly stronger in one language I'd say it's quite normal to use at least 3 programming languages daily. As a Unix guy it's even more. If I just want to write a Python hello world I need to know some Python, some Bash, some Vimscript, some Terminal I/O. Many of my projects also have Makefiles, additional bash scripts (which includes SED and AWK besides Bash). Interaction with databases, APIs, JSON or XML or INI configs, HTML, etc is also common. And let's not forget that most systems that have grown over the years have a few DSLs to interact with their tools.

So before I finish my first coffee I've probably used 6 languages already on a typical work day. I think most coders in my company are fluent in at least 10 programming (&related) languages. And while our software development team is certainly better than my last gig I still hope it's not the top of what software dev teams can be.

And your most prevalent point is that company enforces some language usage. It's often not the same if you switch. So if you have more than 5 years you probably can increase the typical programming language fluency about 50%.

Also your example about switching stacks. Your first stack had .Net, C#, SQL, JS and JQuery. Now you at least sometimes also use Java, and whatever Bootstrap/Angular require.

I know exactly what you mean and I agree, but your scenario doesn't cover most enterprise web developers, who likely live in Visual Studio or Eclipse/NetBeans/IntelliJ 95% of their day, especially if there's strict separation of duties and they aren't allowed to directly touch the DB server/admin console.

I got fed up with this state of affairs a few years ago and stopped looking for .Net or Java developers and started looking for self-described hackers, assuming that would increase the odds that they had some passion for programming and could/would/had pick up whatever tools they needed for the job. It has worked well.

As an aside, though, especially in countries like India, Brazil, Mexico, Chile, Bulgaria, Poland, and others which are low cost recipients of outsourcing dollars, "software factories" are common, and in places like this it absolutely is common for an individual programmer to literally spend their time all day, every day doing the same one type of thing. Imho, the higher the CMMI number, the worse this gets (the pinnacle is the "just write a function to pass this test. No, it doesn't matter what it's doing or what this software is for. Just pass the test.", where developers on the front line are plug & play cogs who don't even know what they're working on).

Interesting. Haven't thought about this kind of businesses and you're right, there might be many more such developers than people like me.
> ironically, a lot of "progressive" corporations end up creating mini-Innovation teams internally with their best & brightest, who are told to "act like a startup" and end up basically creating 75% of all the new stuff ... until it requires an interface to a legacy system and the devs outside the team refuse to cooperate out of fear.

I've been in exactly that situation, working on a small 'startup' team inside a large, traditional organisation. The friction between the 'old' and 'new' camps was heartbreaking.

You need to have a Baord level champion who can steamroller any silos and get stuff done.
Eventually, we got exactly that, a leader the Board would actually listen to and respect.

This was after I'd moved on, but I'm led to believe that things have improved greatly since that change.

I don't live in startup world, but some stuff comes over the transom and lands on our desks. In a given month I might work in PL/SQL, T-SQL, JavaScript, VB.NET, C#, and maybe Perl and Python. Am I stronger in some than others? Absolutely.
Formally defining is always tricky. For example, I hate seeing "C/C++" and would assume by proxy of the equally absurd but rarely used "C/Objective-C" that I have magically become a C/Objective-C/C++ programmer.

I would consider a polyglot as able to express a full domain of ideas in multiple languages. (For example, knowing latin for biology or religious recitation doesn't make you a normal polyglot, while being able to use it at the breakfast table does.)

So, only if you are one of the few who regularly enjoys the thrill of forcing SQL to do your general computations, would it count in my book towards making you a polyglot in the context of general purpose computing. Similarly, how you choose to use shells would determine whether they count and whether they are each distinct.

I know people who only know one language - some Java, some ActionScript... I think it can be easy to get comfy and not bother learning new languages. After all, Blub is enough for what they do, why would they bother spending time learning a new one?

The irony is that one of my Java friends told me that he could pick up any language on a need basis, and that I was ignorant for not knowing design patterns such as Factory, Visitor, Observer/Observable, etc.

There are one-stack programmers that use only Java/C# with an ORM and all the SAP ABAP developers. Some seem to prefer such jobs, I am not one of them, but to each his own.
I wish I could just use C#, but unfortunately there is no way to avoid JavaScript these days.
Scriptsharp allows you to write in C# and compile to JS
Also if you're willing to give F# a try (and every .Net developer really should at least try F#) there's FunScript as well.
I don't work in web development, and write 99.99999% of my code in C++. Every now and again I have to write a config script in batch, but other than that yes
I never understood how it could be otherwise.

Back when I was learning, I had Timex 2068 Basic and Z80.

Then at technical school, each class had its own programming language.

Followed by CS degree, with loads of programming languages.

First job, TCL, C, C++, JavaScript, C#, Java, SQL dialects.

Every single job afterwards required proficiency in multiple languages, even JVM/.NET (interaction with OS, languages that target those runtimes).

cough Sinclair Basic ;-)

Timex's Basic really only added a few extra commands (on err, stick, delete, free, reset and sound IIRC.) Everything else was identical.

Most of the time I had the 48+ emulation eprom inserted actually. :)

However the demos for the sound chip were great.

Some people are not only limiting themselves to one set of technologies, but are actively hostile to anything that's not a part of their comfort zone. I'm sad when I think about it.
I know a really smart guy who refuses to do anything other than Java. Baffling. I get that he really loves Java, but there's so much other cool stuff out there!
For instance?