Developers, Speak Up!

“I was always dumb in that way. I never knew who I was
talking to. I was always worried about the physics. If the idea looked lousy, I
said it looked lousy. If it looked good, I said it looked good. Simple

I've always lived that way. It's nice, it's pleasant
if you can do it. I'm lucky in my life that I can do this.”

-Richard Feynman
Los Alamos From Below: Reminiscences 1943-1945 - Caltech

Feynman said this after he pretty much told, physics legend
Neil Bohr, off. During a discussion, Feynman said following about Bohr’s idea

"No, it's not going to work. It's not efficient.
. . Blah, blah, blah."


"That sounds a little bit better, but it's got
this damn fool idea in it."

In the above mentioned Feynman's words, there is a good
lesson for everyone; especially for those of us who call themselves Software
Engineers. When you are providing input to someone about architecture, design
or anything CS in general, be very honest. If someone tells you how to do “software
things” and you think the specified method is flawed, speak up. Always be
worried about computer science and software engineering like Feynman was about
Physics. Just because someone has 15-20 years of experience, doesn't mean that
every idea they'd propose is going to be great. Don't argue for the sake of
argument but if you see a problem, point it out. There are more than enough
people in the world who would think that having a flash button is far better
than a static gif because "you can feed text to it via a parameter and it would
become whatever button you want it to be". Might sound cool but generally
speaking, this is definitely not a good enterprise design idea (instantiation
cost, compatibility etc). If a senior developer wants to put config settings in
the database, and you see that they don’t belong there, question it. If that
person also loves technology, simplicity and good design, they would concur
with you once they see their mistake. Otherwise, you’ll always have the option
of singing “I told you so” when the thing starts crumbling. Without courting
with your ego, fight till you can and make your case from a technology
standpoint. Do not sign off on a technical design just because the next person
did. It’s important that you practice your judgment in software design; such
people are definitely an asset to every software team.