How I choose to work has changed over the years, naturally. Learning new technologies and techniques. New hammers and tools to put on my belt.
An important part of this was how I went about choosing what technologies to associate myself with. I didn’t just let people set things down in front of me, and choose my paths for me. I constantly researched and pro-actively vetted technological choices. Its been a constant daily regimine.
A notable area of focus for programmers is the choice a programming language to use for any given peice of code. And this serves, ideally, as a great example to show how these patterns have changed over the years.
Let me describe this in 3 phases.
When I was young
When I was a new programmer, my focus was entirely on what language seemed best for me.
Not simply what matched my world view, but also what forced me to absorb new ideas and concepts. What allowed for my personal productivity, but also my personal growth.
Also, at this stage it was all about what the “best langugae” was. As opinionated as I was, I never considered adding a “for me” to the end of that statement to better qualify it as purely a personal journey. I was in a world of absolutes, and languages were something I could qualitatively compare.
When I was young, I chose the best language for myself.
As I matured
As I matured and gained in experience and languages, I grew to see that there was no superior choice, across the board. Different tools are simply better at different jobs.
Its not a good carpenter that judges all of his work should be done with a hammer. But to apply the hammer to the nails and the saw to the wood.
Learning a language was just pre-emptive maneuver to ensure I could make the right choice for each task that came up. And I knew that choice would change from job to job. Each languaging becoming a table of pros and cons, with some lending to certain techniques but performing poorly with others.
As I matured, I chose the right language for the project.
Deep into my career
Years later, as I’ve touched on most major technologies my world view has shifted yet again.
Truth be told, you can do pretty much anything with any programming language.
Yes, there are still pros and cons to languages, and language agnostic techniques as well. There are differences in availablity and quality of 3rd party libraries and even in the communities that follow them.
But what it really comes down to is not how I’m going to use the language, Or even how the project is going to use the language. But, rather, how the people are going to use the language.
Those team-members I have to work with now. Those developers that may have to maintain this code in the future. Those engineers that may have to make other technology decisions based on the content of the projects and work I do.
As a Late-Career Software Engineer, I make the choice based on the people, team, and company.