Last Friday marked an important milestone for me – it was my last day working for ISDC. After 10 years with ISDC I have decided to put an end to my job there. I think it is a good moment in my life and in my career to try something else, to try to work as an independent programmer / software architect. For those that are interested, I’d like to tell you what I’ve been doing in recent years and give a hint of what will come next.
I’ve started in the .NET Department as a junior developer and I’ve exited as a software architect. A long way. I had the opportunity to work with most of the Microsoft technologies, to switch projects and contexts quite often. This helped me a lot in learning and expanding my experience. I have also found in ISDC great people to work with and to learn from. I have found the right models and good mentors. I am grateful for all that. I have also given a lot back. I have pushed for doing things the right way, close to the highest level of the industry standards. I pushed for quality and I had an important contribution in increasing the technical quality delivered by the .NET teams. I remember being characterised as the quality guy that not only talks the talk, but actually walks the walk. I was the one that introduced Unit Testing in .NET teams and worked hard to make it part of the development process and a common practice in all of the teams. I also was one of the key members in some of the most difficult and important projects we had.
In the last years I have focused on starting projects. It starts with envisioning the technical solution that fits the requirements, and continues with working close with the project management to build the right team and to define and implement the strategy that may lead to reaching project goals in budget and time. In the beginning I was also leading the development of the application infrastructure that sets the project on the right path from the technical perspective. I think this defines quite well my software architect role for a project in ISDC. It is not the same as the architect in a product company or as the Enterprise Architect. It focuses on one project. It involves making difficult decisions, making tradeoffs and explaining to all the stakeholders the consequences of their choices. It’s a worth having experience.
So where to next? I like this graphic from The Future of Work by Jacob Morgan. It shows nicely how I’ll try to work next. I find myself standing right where the half-grey half-green guy is (though ISDC did some of the things better than this illustrates).
As an independent I would like to use my experience to help various teams or companies to start projects on the right track or to get out from a nasty situation related to software development. I think that I can bring a lot of value by coming in, work with the team to set things on a right path, make sure that the team can take it over and be independent of me and then gradually step out. I don’t see myself staying for a very long time in a project. I may stay close, help whenever something new comes up, but if I do my work well the team should do fine without me after a while. Sometimes my involvement may be only to give training or coaching on certain topics or technologies.
Beside my previous experience there are two more things that make me believe I can do this. First is that I’m not entirely new to it. Since 2013 I only work with a part time job. This year I had a three days/week job, so I had two days to work as independent consultant. I’ve already helped some teams in different companies with training, coaching or to start new projects.
The other thing is that I’m not alone. I am part of iQuarc. This gives me a great deal of assurance. I know I will always find the kind of support, advice or help that I need from my colleagues. At core, we all have the same level of expertise and at the same time we have complementary skills. We share same values, principles and passion. Together we can make a great team and we can successfully respond to many kinds of requests.
So, what will change? Now, I have all the time for this. I’m all in. I’m available for hire. Here’s a brief summary of what I can do for you:
- Custom software development. I love writing code, so I’d also like writing code for you. I can take small or big tasks. It does’t really matter. I can work in a team or by myself, remote or on-site, as necessary. My experience is with C# and related technologies / frameworks.
- Software architecture. I have experience in designing small and large applications. I can design the entire project, not only the technical part. This may include a complete strategy from requirements to deployment with needed staff for each phase of the project.
- Reviews. If you need an external party to review your code or your design I’ll be happy to do so. I can do code reviews at different levels, from looking at the big picture, at the way the code is structured and the way dependencies go, towards lower details on how classes and functions are written or tested. When reviewing code or design I can focus on specific quality requirements like security, performance, maintainability, scalability or other that may be of interest for you or I could do a more general check.
- Training and coaching. In the past years I have developed and given two standard trainings: Code Design and Unit Testing, in which I address a wide range of subjects about coding. I can visit your company to deliver lectures and workshops. Beside these topics I could easily spin out workshops on others, like estimations or time management, depending on your needs. I am also a strong believer on learning on the job, so I could join your team only to coach you on a specific technique or a specific issue, working on your project. We can also pair while doing so.
- Development process. Along the years I have experienced different ways of organising software development teams. If you need help with this I can do so. We can see together whether Scrum fits your context or not and how to tweak it. I can also help with Continuous Integration, Continuous Delivery, TFS, Git etc.
- Round table. Sometimes people simply want to have a meeting with someone to validate certain topics or ideas. I’m happy to visit you for a meeting with you and your team where we can discuss your questions, sketch together on a whiteboard, look at code, etc. in an ad hoc fashion.
This list isn’t exhaustive, so if you have other ideas for how you think I may be able to help you, please contact me.