News for hackers. Stuff that matters.
Re:Things Great Engineers (Almost) Never Say by mgkimsal on Wednesday October 10, 2012 @09:50AM (#4636280)
"“I will need ______ (tool/condition) to complete this task” – The masters of development will have the ability to improvise and adjust on the fly to arrive at a solution in non-ideal conditions. When you hear of engineers being compared to MacGyver they are speaking of this very rare skill. Greats will figure out a way based on minimal resources and will be aware of alternatives to their first choice of tool."

I see the opposite as a problem - not being aware of standard solutions for tools, and reinventing the wheel yet again without even bothering to go look for something that might exist already. Praising this 'macgyver' skill reinforces in people's minds that it's perfectly fine (perhaps desirable) to "roll your own" all the time. The extra couple hours or days you spend up front understanding tools that tens of thousands of other people already know will pay off down the line when you hit configuration, scaling, performance, security or other problems vs your home grown 'solution'.

This has continually been something I've run in to the past few years, and it reminds me of my own 'roll your own' justifications from 10-15 years ago. The only defenses I have are back then there was far less available open source tools (or even closed source) for many of the problem domains I hit back in the mid 90s. Today that's far less of an issue in most situations, and I'm far more sensitive to the maintenance burden imposed by a 'roll your own' mindset (because I've had to maintain my own code from 10 years ago!).

It's one thing if the primary options are off the table due to budgetary issues (hit me recently as well), but in most cases I find it's people not being aware (and not researching) to see if industry standard options exist.

Re:Things Great Engineers (Almost) Never Say by sophacles on Wednesday October 10, 2012 @10:28AM (#4636437)
I think there is a difference between "I will need..." and "Ideally we should use...". In the former, there is an implication that the only solution is the tool stated, while in the later, there is an understanding that the solution is possible without the tool, albeit not the best.

My reading of that statement was not that good engineers won't use the right tool for the job, but rather will use the best they can, and deal with imperfections. Almost as a rephrasing of the old adage: "'Tis a poor carpenter that blames his tools".

There are often factors outside the control of the engineers that dictate certain things that can and cannot be used. Sometimes they are political and sometimes they are more technical. The ability to get things done in spite of externally imposed limitations is something that should be praised. Even something as simple as the choice of platform can be a cause of not using the ideal solution... say there are only X, Y and Z allowed languages - using the cool library for language W is off the table, even though it is highly regarded as the correct and best solution.

Re:Things Great Engineers (Almost) Never Say by mgkimsal on Wednesday October 10, 2012 @12:32PM (#4637050)
I thought I touched on that. If a decision was made aware of the options, and a suboptimal choice was found because of specific constraints (budget, technical, whatever), document that and move on. You're doing the best you can with the project constraints. Not being aware (or even doing the research) and ending up with suboptimal code when it wasn't necessary is the problem.
Re:Things Great Engineers (Almost) Never Say by pflats on Wednesday October 10, 2012 @10:00AM (#4636330)
I agree. It also points out to me my biggest complaint with calling programmers "software engineers". A Professional Engineer (i.e. licensed, capital P and E) would never say, "Oh, you don't have an arc welder? No rivet gun? Well, I suppose we could hold that bridge together with solder and a few toggle bolts."
Re:Things Great Engineers (Almost) Never Say by frou_dh on Wednesday October 10, 2012 @10:14AM (#4636384)
This seems like a topic where the often dubious "engineer" title as applied to programming is actually meaningful. Engineer has professional and business connotations that set a corresponding bar for rolling-your-own being a justifiable course of action. Contrast that with programming that is primarily motivated by creativity or curiosity. There, rolling-your-own can still be the right thing to do even if you're aware of a pre-existing thing that's likely better than what you will come up with.
Re:Things Great Engineers (Almost) Never Say by fecak on Wednesday October 10, 2012 @09:55AM (#4636309)
Author here. That is a very interesting point. My point was that great engineers will know which tool is optimal yet will be able to identify a new solution. I could certainly see situations where perhaps an ego causes someone to always think he/she can build a tool better than the ones that already exist and function fine. It's over-engineering.

Excellent point.

Re:Things Great Engineers (Almost) Never Say by mgkimsal on Wednesday October 10, 2012 @10:06AM (#4636358)
Sometimes ego, sometimes just lack of experience. In my case, initially it was primarily lack of experience, then I went through the ego stage, and now I do what I can to use pre-existing stuff, and I've done this long enough where I know there's likely options I need to research/explore before making a decision.