So I work for a software design firm where we build small-to-medium sized web applications (using PHP) for various clients and stakeholders. I’ve worked for this firm for well over a year, and I enjoy what I do (mostly). Prior to joining this firm, I was a solo developer, so having to develop software as part of a team is something new to me.
Here’s my question:
What is it about our industry that makes it so dominated by otherwise very intelligent people, who feel compelled to take fairly ordinary, simple tasks, and turn them in to complex, convoluted, time consuming nightmares?
Why is it that when it becomes a complex, convoluted, time consuming nightmare, they will still keep singing its praises?
Here’s an example. I’m currently Lead Dev on an smallish web application for a client in the health industry. The app needs to allow users to set certain goals, rate themselves against those goals, allow mentors to log in and leave comments and feedback, etc. It’s basically a form with maybe 100 fields, sitting behind a log in screen.
My support dev, (new to the company), couldn’t believe that I didn’t use an Object Relational Mapper (ORM) to handle my database querying and data modelling. When I asked what the benefits were of using an ORM as opposed to not using one, he described benefits that were at least ostensibly clear (less data replication, easier data portability, etc).
I weighed the pros and cons and decided I was willing to let him try and “wow” me with this new method of handling data, so I left it up to him to write the main data file that these ORMs eventually use to generate databases, classes, etc.
Fast forward 7 working days, and he’s barely got the ORM configured, talking to the framework, and executing some basic data inserts and retrievals. This afternoon we had a meeting so that he could demo his ORM work to me, and he couldn’t even tell me how this particular ORM handles slightly more complicated tasks such as join queries or updates (as opposed to inserts). This was the meeting where I thought he was going to show me a fully-fledged ORM “making life easier” for us and the project. But I shouldn’t be concerned, because joins and updates will be “easy” - he just has to go and spend even more time figuring out how to do them.
Given that’s he’s spent 7 full days on just trying to learn and configure the ORM, I couldn’t help but think to myself: In 7 full days, I could have not only written every SQL query needed by this app 10 times over, but I could have basically completed the entire application (minus the page styling, which we palm off to a designer). But when ever I try to hint this sort of thing to the support dev, it’s just met with lines like “But can’t you see how much better this is?!”. And he’s not even trying to have a lend of me. He genuinely believes what he’s saying. He must be seeing something that I just can not.
On a prior web app in which I worked as co-developer, I let my more experienced colleague take the helm and lay out the core application structure… “Fully OO” he tells me. Fast forward 2 weeks, and we’re still struggling to get the thing ready for the first round of testing, as we struggled to navigate our way through the endless bound of objects, classes and inheritance that was going on.
It was at this point that it occurred to me: “This web app is basically 5 forms with some business rules thrown in. If I did it all in pure procedural, and laid the code out in a way that I deemed to be sensible and modular, I could have it working in less than a day”. I went and explained this to my boss, who gave me a day to prove it. So I did. I built it. In a day. And demo’d it. I was immediately promoted to lead developer, and the project was a success.
But here’s the thing. My co-developer on that project, to this day, continues to tell me how much “better” his application structure was. Because if we did it his way, the application would be much more “scalable” and “reusable” and just “better” (we have run in to no scaling or reusability issues with the app since). And he’s not trying to deceive me. He genuinely believes what he is telling me.
I don’t want to sound like some sort of programming genius, because I am not, in fact I am miles from it. But it just feels like every time a new project comes up, it’s like some of the other developers engage in a contest for who can come up with the most insanely over-complicated way of producing the solution that they can conceive.
It’s frustrating, and I don’t like constantly having to tell my support devs (and sometimes co-devs) that I am just not interested in any fancy new cutting-edge development technology unless they can clearly describe in less than 15 seconds what the supposed benefits are.
I promise this is not a brag, it’s more a plea for help, and a request for advice on how to placate my support devs who take issue with my fast, lean programming style. Is it just where I work? Or everywhere? Or am I really the dill? Thanks.