Master Of One

John Forstmeier on December 06, 2018

Personally, I like to keep things in my life, both personal and professional, as simple and minimal as possible. This is particularly notable whe... [Read Full]
markdown guide

Only tool I have is logic. Everything else is superficial details and that includes the programming language, editor, process, and whatever else is the latest hype.

I think the best ways we have of solving problems are math and science (not downplaying the humanities but math and science are what I know best). Computers and programming in general continue to lag. I never feel like the programming language augments my ability to think and solve problems. More often than not the computer actually gets in the way because the solution I have in my head doesn't map cleanly to the programming language no matter how fluent I am in said language.


// , The humanities generally benefit from the application of math and science, not only because it gives them a way to actually do something outside of the much maligned but necessary Ivory Tower, but also because the smorgasboard of ideas from the humanities benefits from a process of weeding out. Prepositional logic is an example of this.

And on that same note, what you're calling a programming language might be more akin to a notation than a language.


Some tools get in your way more than others though. I mean, if I had to choose between C and COBOL to write some game-related vector mathematics, I'd know which one to choose, and I don't think they'd both do the job equally as long as I have the right logic in my head.

I get in my own way often enough, I certainly don't need tools to help me with that ;)


// , Many are the asinine tools.

"Please only use the Approved hammers, made of plaster."

"Buh, but, they're made of plaster!"

"That's why they're approved, didn't you read the signs?"


I can 100% agree with this. There may be cases where you simply have to use a new tool, but I always hate to do so. Another dimension to this problem that you haven't mentioned is configuration. I have over 1k lines in my .vimrc and have automated quite many editing tasks; I have a heavily customized bash prompt that shows me all the information I need, etc.

As developers, we never stop learning, even about the tools we've been using since forever, and using a new tool means starting from zero. This means both a drop in productivity and in comfort. (And an uncomfortable developer is more likely to introduce bugs [source: my experience])


I’m settling into the idea that I can mostly just write Ruby as long as that’s what I’m happiest doing.

I still dip into other areas (I’ve had fun working in Swift lately), but I’m not stressed if I don’t master 100 different languages.


Agreed. I'm not against (and do enjoy) learning other languages, I just like to make it a very deliberate inclusion.


I have the exact oppisite problem I have to try everything new even though I dislike it almost every single time. The exception is I have to have vim keybindings. Languages I generally like build tools ides editors and especially frameworks tend to make simple things complicated and yet I am compelled to waste at least have my time setting them up and trying them out in hopes they might just be a little better than what I am currently using.


😂I feel ya! When it is apparent that a new tool is needed, I spend a ton of time trying out a bunch of different alternatives until I'm certain I've exhausted all plausible alternatives.


I'm envious :(

In just the past week, I've worked with Java (backend and Android), perl, javascript (ES5...bleh), and Objective-C (iOS), while also doing code reviews for python.

Nearly each one warrants its own editor, Java: IntelliJ, Android Java: Android Studio, Objective-C: Xcode, default: vim.

Not to mention the half dozen different markup languages: xml, json, yml, hjson...

It's not only unfortunate that I'm hopping between languages all day, half of them are effectively obsolete, so it's not even worth "going deep" on any of them.

I will say, that it does get incredibly easier to pick up new languages after you've learned a few, and I think it's a skill worth developing at some point because in some situations you will be restricted to a language at some point.

All that said, having a "native tongue" language is incredibly important; I mean a language that you primarily think in and are 100% comfortable writing on a whiteboard or (god-forbid) notepade.exe and would be your go-to in a hackathon.

For me that's Java, since I'd estimate 90%-95% of the code I've written in my life has been Java.


Yikes! That's a jumble! At work my toolset is a little broader than what I would like but that's largely due to the mix of developers and our historic codebase - in side projects I like to keep it spartan.

And I agree, it's been incrementally easier to pick up each new language after knowing additional ones - I still really want to dive into something like a purely functional language just to learn it but not really to apply it.

A "native tongue" is hugely important; mine is Go but at work I tend to use Java more (although I can't stand the POM.xml for Maven lol).


I tend to try and master (Or at least become “very comfortable” with) the stack I’m working in.
My language of choice for backend is C#, .Net Core as the framework, sql server as the DB and azure as the clouds service provider. Front end has recently been Blazor which has been super fun to tinker with.

Recently have gotten into React Native and am trying out a serverless back end API and Cosmos DB as a a mean of getting into noSQL.


Interesting choices. Do you see yourself trying to use these across projects?


In a projects scope sounds good.

But in order to know which tool is good and how to use it you have to be a master of many.


I feel like the master of many is a more ideal situation since that can take a long time to actually achieve.


Exactly, I think it is an Eutopia. You cannot choose the right tool and be master, you usually are limited to a set of technologies and frameworks in which you can deliver a good enough solution.

That's a good point. The way I look at it is that (when we're looking at general programming languages in this case) many, if not most, can do what the others can (with varying degrees of difficulty, etc.) so picking one and sticking with it can be beneficial, or at least it can be to me.


With limited time and resources one can't master everything. So I'm happy whatever I've in my hand.


Is this in the context of professional work or side project type stuff?

code of conduct - report abuse