A little fun for a Friday; here’s one of my favorite programmer cartoons!
One of the things that programmers do a bazillion times during their career is come up with a name for something. Every variable, every sub-routine, every class, every method, every instance, even the program itself and all its supporting files: they all need names. In some cases the naming is obvious and easy, but in others it’s complicated. You can end up creating a big ball of mud if go about it casually.
So one thing you want to start doing is being intentional about naming things.
I don’t like the term Software Engineer. Real engineers have licenses and certifications and prescribed educations. No such exists (currently) for software makers. It is still a new craft in our society (it goes back only to the 1950s or so), and we haven’t caught up to how complex and demanding it really is. Anyone can use the term Software Engineer, so it doesn’t have the meaning it could.
Software development can be hard to describe or compare because it depends so much on the use of abstraction. One can visualize a continuum of professions based on how much abstraction they tend to require from their workers. Software tends to be on the far end of that spectrum. Not only do programmers deal almost entirely with abstraction, but often with multiple layers of abstraction!
Over the years I’ve come to believe in four basic principles computer programmers should adhere to. They reflect four paths of continuing education programmers walk throughout their career. The bottom line, really, is that you’re going to be doing these things a lot; it will serve you well to learn to do them well and with intention.