Well, I started out my programming career by finding a program that I used regularly, that was incomplete and had bugs. So, I fixed various bugs and made various enhancements to it. (A 4.x version of Directory Util for the Amiga, someone at a users group meeting referred to my program as 'duV'...and that became its name.)
I also spent some time rewriting other programs in other programming languages. Like in high school for extra credit, I translated a BASIC programming class into a PASCAL programming class. The following semester the teacher taught PASCAL programming. I then started translating the same programming class into C, while I was learning it myself. I hear the year after I graduated high school, they were offering C programming classes. In college, for no useful reason, I spent time translating a collection of FORTRAN subroutines into C (and RPL).
But, in my first job, I ended up being the guy to translate FORTRAN programs into C. The company I was with had decided that Unix and C (and X/Motif) would be the direction to go in with its Engineering software. But, the company had started out with time bought on a Honeywell mainframe and FORTRAN, and early versions of the software were FORTRAN on x86. Plus research codes being developed at various Universities were FORTRAN. Reimplementing our algorithms in C was one thing, but not so easy when we needed to integrated algorithms written in FORTRAN by other entities. And, this was well before ADA was the required programming language with the DoD.
Though I got to do a DoD project where I had C++ classes generated from the ADA design tool, and I filled large portions of the member functions from the older C program...and newer algorithms that started out life on bar napkins.
Later in my programming career. I worked fixing bugs in other people's programs, including some written in languages that I was learning as I was fixing. Of course, new product development is much more lucrative. And, companies go through phases where they need to streamline their new product development....so software maintenance types get the door.
First two jobs, I started primarily as a software developer, but gradually doing more and more system administration. Second job, I was officially laid off as a software engineer, but kept on for a while long as a full-time system administrator. And, now that's my current job.
But, I still find myself occasionally poking around inside other people's codes.
The Dreamer