loading...
Cover image for Master Of One

Master Of One

forstmeier profile image John Forstmeier ・1 min read

Personally, I like to keep things in my life, both personal and professional, as simple and minimal as possible. This is particularly notable when it comes to my toolset choice while developing.

I like to use one language, one editor, one project process, etc.

For me, this provides several benefits:

  1. It helps me to focus on the task at hand without having to stop or hunt for solutions
  2. It increases my practical knowledge and mastery[1] of the toolset
  3. It boosts my creativity by working within a limited set of resources

Now I definitely understand the phrase "use the best tool for the job" but I tend to first try and absolutely wring my toolset dry before introducing another tool or dependency to the mix.

Where do you fall on the scale? Wide and shallow knowledge or narrow and deep experience?

[1] Disclosure: I'm not a master

Discussion

markdown guide
 

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).

 

// , 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.

medium.com/@old_sound/programming-...

 

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 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.

// , Then we can have holy wars based on the humanity elements.

 

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?