This was the brainchild of Mike Walsh, who asked, "What do you wish you knew when you were starting?" I was tagged by Michelle Ufford, so here are my answers.
"To Lead Is to Follow" - I've written about this before, but just understanding that at some point you've got to stop tweaking the design and move forward with the implementation. Early on in my career I was eager to find the "perfect" design. I can still remember a leadership challenge at Air Force Field Training. We basically had to get aircraft from one location to another, plan for refueling, etc., all within a particular timeline. I was sitting there trying to figure out the right algorithms to do all the calculations (that idea of building a solution for all cases). One of the other members of my team took a stab in the air and generated the timings from there. The team saw that they were a couple of hours off, adjusting the time by that much, redid the calculations, and solved the exercise. I remember being upset because we had only solved that one particular case and not all cases. But the exercise called to solve that one case. We are judged on our ability to execute. Sometimes that means accepting that a design isn't perfect and moving forward.
Understanding the Business Side - My eyes were really opened when I took a course at Black Hat by Chris Conacher on enterprise security. The course was on evaluating risk, developing security measures, etc., but approached from a business perspective.We can get so focused on the technology side that we totally miss what business sees, and more importantly, what it needs. Too often when I was younger in the industry I didn't have the business in perspective. It's something that's changed as I've gotten older. Books like The Career Programmer: Guerilla Tactics for an Imperfect World, by Christopher Duncan, have reinforced this view. Understanding and communicating with the business side is something I've put into my SQL Server security presentations like Fortress SQL Server because I've come to realize how important those things are.
Learning to Learn Continuously - I was always good at learning new things. But one of the things I believe in is continually learning. And that means going beyond how to read a book or a web document and understanding it, but knowing that you need to know that knowledge before you need it and knowing how to go find it. A wonderful friend of mine, Chad Silva, taught me the importance of learning constantly when I was a "butter bar" in the USAF and he was a young airman (and this is why you young officers should pay attention to your enlisted, even your junior enlisted). It's one of the reasons I'm in a senior position today. But don't just take my word for it. I'm reading Beyond Code by Rajesh Setty (finally getting around to it) and he includes this quote when he talks about the same thing, which I think is applicable:
“The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn.” - Alvin Toffler
What is new and relevant changes so quickly. Therefore, to improve your standing in this field, you've got to be able to learn constantly. It seems like an ever increasing slope, but that's one of the things that makes working in IT a blast: there's always something new on the horizon.
I tag, in return: