As part of that I'm having the opportunity to mentor two beginner/novice software developers in my school class that I'm taking and I'm being confronted with the stark reality of the large gap there is between my experience and someone who may have a year or two of CS experience under the belt. It's been very humbling as I've had to talk through and discuss things I Just take for granted. I started looking out to the internet for some support and came across an article that is very humbling to me, and even motivates me to be an even better senior engineer or as the article mentions a mature engineer.
This is more for my reference but the article is here: http://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/
The whole article was very good, and I pulled a large number of things to improve on. While I feel I fit in with many things discussed as a mature engineer or senior engineer but I also see many many areas of improvement. The part about novice vs expert though drew my attention.
The Novice:
- Rigid adherence to rules or plans
- Little situational perception
- No (or limited) discretionary judgment
The Expert:
- No longer relies on rules, guidelines or maxims
- Intuitive grasp of situations
- Analytic approach used only in novel situations
Novices operate from an explicit rules and knowledge-based perspective. They are deliberate and analytical, and therefore slower to take action, they decide or choose.
Experts operate from a mature, holistic well-tried understanding, intuitively and without conscious deliberation. This is a function of experience. They do not see problems as one thing and solutions as another, they act.
As I find myself pairing with these two I'm working with, I find myself just acting. I know there is no hard fast rules, I have seen similar situations, and I can figure out the solutions quickly and rapidly even in new contextual environments. Rarely do I rely on taking an analytical approach to the problem unless it is an extremely new situation. The rules are flexible and malleable as I adjust and change them based upon the needs of the system that I see. Yet, to try and mentor and tutor the novice or beginner I can see how this can be mind-boggling and batty. How can they derive the rules to work with / govern their behavior until they can move out more confident on their own through software systems, when I'm not playing by any hard fast rules? When I just act instead of thinking through the solutions or explaining them?
I think I'm going to have to figure out how to slow down the process, how to think more conciously about my actions, and how to explain, encourage, and motivate to success. All in all I relish this experience, despite it's challenge.