software fundamentals are exciting?

I came across a nice list of fundamental axioms of development on reddit this morning that made me a little pumped. Pumped because I'm in the middle of a big transition at work that in a lot of respects has me starting over with a new team and a new mandate.

I'll be focusing on solutions, custom work and a view towards short term revenue vs long term research and development for products. Given the economic climate, it's a shift I can understand and on a personal level one I'm looking forward to. I am saddened of course to be leaving the product I've spent the last four years working on, but at the end of the day software is software and this is going to be a big challenge for me.  

Here's the list (http://www2.computer.org/portal/web/buildyourcareer/fa035) highlights for me :
EF1. Efficiency is more often a matter of good design than of good coding. So, if a project requires efficiency, efficiency must be considered early in the life cycle.

Q4. Trying to improve one quality attribute often degrades another. For example, attempts to improve efficiency often degrade modifiability.

T1. Most software tool and technique improvements account for about a 5- to 30-percent increase in productivity and quality. But at one time or another, most of these improvements have been claimed by someone to have "order of magnitude" (factor of 10) benefits. Hype is the plague on the house of software.

T1 I believe after having fallen for the tools pitch more than a  few times. At the same time though I think one of the differences in the "great programmers are 30 times more efficient than mediocre programmers" comes down to mastery of the tool set. Watch a proficient developer fly through their code and it's easy to see. On the other hand I've seen excellent "users" who fly through a terrible design and become constrained by EF1.

Anyway, for me this is reminscent of the pragmatic programmers list, which as obvious as a lot of it is really made me focus on the core of my craft. See Jeff Atwood's site for a quick reference if you have not seen this list before :

http://www.codinghorror.com/blog/files/Pragmatic%20Quick%20Reference.htm

While I'm at this, I've had some accumulated Martin Fowler wisdom around estimates and scoping that I've been meaning to post about. Working in custom solutions will mean writing a lot of proposals and giving fixed cost estimates which is going to be a new game for me...

Martin Fowler: Estimates
http://www.martinfowler.com/bliki/ThrownEstimate.html   <-- Technical debt, casting quick estimates
http://martinfowler.com/bliki/XpVelocity.html    <- Nebulous Units of Time

and on dealing with fixed scope....
http://martinfowler.com/bliki/ScopeLimbering.html  <-- dragging clients towards a more agile process
http://martinfowler.com/bliki/FixedPrice.html
http://martinfowler.com/bliki/FixedScopeMirage.html