John Allspaw, author of the books Web Operations: Keeping the Data on Time and The Art of Capacity Planning: Scaling Web Resources, wrote and excellent post on being a senior engineer. By his definition, a senior engineer should be a "mature" engineer. Mature not only in the mastery of technical skill but also personal characteristics as well. In summary, don't be an arsehole, be empathy, share your knowledge, and grow together with your peer.
Sounds very optimistic, right? Unfortunately, we do work in a chaotic technical environment. Sometimes you will work with stackholders who just want to watch the world burn. Ok. I better stop right now, otherwise this will turn into endless ranting.
Back to the post. There is this part about trade-off and the important of working code is better than elegant code. Being a maintenance programmer in most of my career life and all the technical debts inherited, I have to say, although reluctantly, this approach works. Nobody cares much how you do it, they just want you to automagically solve their problem, if possible, within time and cost. These days, instead of striving for elegant code (my self-righteous, over-designed and bullshit view of clever code), I will try to get it done fast and almost right. Yes, almost right (simple and sufficient enough).
Am I a senior engineer? Yes, in term of age. Mature engineer? Not yet, there is room for improvement and is a long journey. The first step towards this goal is be useful and be helpful.