Blog articles tagged "developerlife"
According to Phil Karlton there are only two hard things in computer science: Cache invalidation and naming things. I have experienced on multiple occasions how important the latter one is: Finding the right name for something and (perhaps evenly important) sticking to that name.
As someone who has experienced both sides (being a manager as well having been managed myself) I see some behaviors popping up again and again that I very much oppose and clearly identify as actively hurting the productivity of any team.
During my career I was very fortunate in that almost all of my managers were people that I enjoyed working with and more than once looked up to.
But all good things eventually come to an end and not that long ago I encountered the exact opposite of what I consider a good manager.
A few days ago I stumbled upon a discussion on Twitter of whether or not a local development environment should be kept identical to the production environment:
The original assumption in the tweet is by itself interesting: Did we actually have that rule? Keep the development environment identical to the production environment? Did it ever work?
From my personal close to 20 year experience in software engineering I never had the situation where a development environment actually mirrored the production environment.
And I would even go as far as to say: That’s a good thing!
Let’s dive into why I think that is.
I have been developing applications in Java for the last 15 years.
I know the language, I know the API, I know all the important frameworks and at one point I even felt arrogant enough to talk about the Java internals at conferences.
But for BetterDoc I had to use Ruby as my main programming language.
I still try to sneak in a little bit of Java here and there, but Ruby is what I’m doing most of the time.
It feels a little bit like learning how to crawl again after having been an athlete.
It’s a mixture between excitement, frustration, and pure embarrassment.
The story I want to write about in this post falls into the last category: pure embarrassment.
Like many other professions software engineering has its own language, its own vocabulary and its own conventions.
However as software engineers in order to do our job well we need to collaborate with people outside of our own profession - which means we have to find a way to communicate efficiently so that we all understand each other.
As a software engineer having the right equipment (a powerful machine and high quality peripherals) is not simply a “nice to have” but an essential requirement. These are your main tools with which you’re doing your job - and everyone should want you to do that job as best as possible.