I didn't go to college to be a software engineer. Actually, I didn't complete college at all. When I did go, my intent was electrical engineering. The problem was, I didn't have scholarships and my grades sucked because I had to work so much to pay for the classes. Oh, and I was very unfocused in those younger years. (He says as though he's grown out of being unfocused. 😂 )
Years later, I find myself making a living as a software developer. Or am I a software engineer? To some, the distinction lies in a college degree. To others, it's just a title. So what is the difference?
As I spend more time in the Engineering Department, I've begun to see the differences. I see it in others, but mostly I see it in myself. In the ways I've responded to a task or project, I can look back and determine whether I behaved like a developer or an engineer.
Here's what I mean. Both write software. Hopefully, good software. Both, when given a desired software outcome, should be able to write the code necessary to implement it. The difference that I've come to recognize though is the ability to see the forest for the trees.
On one project, I was tasked with building a solution. The design was nice, the solution didn't seem far fetched, so I set off to write the code. A few days later, I was nearly finished and thinking through the flow of information. It occured to me, FINALLY, that what I'd built wasn't even needed. The product manager that came up with the solution was unaware of something that was already in another part of the software that provided a similar interface to the data.
In that instance, I had been a great developer. I took the task at hand and wrote great code, solving the immediate problem. However, if I had put on my engineer hat, and spent a little time looking at the software as a whole, the best solution wasn't to build something entirely new.
Just because my title is engineer or developer doesn't make me one or the other. It's the way I approach a problem. At the end of the day, that's what I should be doing, solving problems. In my mind, a developer writes code to solve the immediate problem, and an engineer finds the best solution, for the immediate problem, and the ones to come.