So today I was challenged. Challenged to talk about my achievements at the company I work for. Why is it a challenge? Simply because I don't like to brag about my personal achievements when know how much I still have to achieve. But in this case this is different, as I would like to have a chance to look back and review what are the achievements I managed to generate in the company (Note: compensations are not linked to this :).
Three years ago, joining the company, I was going to be a web developer with database background. I found myself in a code base entirely .NET 1.1 with VB.NET roots taking place in classic ASP with VB script, a lot looking like a procedural recreation in a object oriented environment, doing a lot of things I've never done before. Being a C# developer mostly, I set a technical mission to convert the whole company to C#. That conversion took a while along with porting to .NET 2.0. We got there.
Components where the second step I took in that direction. Since we are dealing with web UI and it has quite a limited amount of standard UI elements, I pushed towards innovating and creating new web controls that would allow us slicker UI and UX along with re-usability. This had a price. Not sure if I managed to convince anyone to create those, but developers do use it heavily on the daily basis and raise issues and concerns that push all of us as a development team to think through and design better. This probably leads to another achievement - a move from innovator to early adopter.
I used to be a cutting edge innovator. Not the best thing if you ask me. Jumping into a new technology without being concerned about business side is too risky and frankly speaking doesn't give you any credibility in eyes of other developers/management. So I changed to become an early adopter instead, i.e. through my personal passion and example show and prove that certain things I believe in are worth adopting.
As my knowledge about what we were trying to achieve was expanding, I started to work on the idea of an internal framework. A few leaps and a lot of bugs with assistance from all of our developers this became a reality. Nowadays most of the applications we build are based on it.
The next major influence I had was the layered design. No, I haven't re-invented the wheel, but I showed the way. And I pushed it all the way till we've got it. This was a great experience with the whole team. Just by doing that we opened so many worm-cans, there was enough for a while to keep us busy. Now looking back it makes me feel good to realize that the team didn't kill me for doing it :)
Another step in the right direction was to get away from the standard plain ADO.NET - a step I am still taking. Working with meaningful objects rather than with object-representation of tables and views was more appealing to me. So I initiated the migration. We ended up having our internally developed Entities Framework. This step allowed us to realize something I was about to learn - back to the core principles.
Still hungry for better results I pushed our boundaries to go from plain vanilla web forms to an MVP implementation. Slowly it caught up. Today I think there's no developer on the team that does not realize the importance and effectiveness of simple core principle - separation of concerns. Talking about core...
Gladly I can state that the biggest achievement throughout these 3 years was the realization that we didn't do proper object-oriented code. I lucked core principles, better understanding of patterns, refactoring. This is where I started to look for alternative, search for the answers. This is the point in time where I introduced the management and the developers to the design patterns, principles, agile methodology (pushing this was an interesting experience we are just starting to experience). Self awareness as professional developers started to raise. I feel definitely satisfied about that.
This could go on for a while, but I don't really want to keep going. No point. Rather I would like to re-cap the most important achievement the team allowed me to put in place:
- Pushing the professional boundaries
- Turning to better object oriented development
- Accent on core principles, patterns and idioms
- Move towards the agility (even we are not, the bug is there)
- Awareness of constant improvement required by each one of us
To summarize this - we've went a long way and a lot was achieved. Looking back should not prevent from moving forward. Achievements can become your personal "bullies" blocking from going towards more significant achievements. This is why it's good to remember that you have achieved a lot, and yet have to achieve a lot more.