It's been a full year since I joined Microsoft as a Premier Field Engineer (PFE). As I sit in my hotel room preparing for my session tomorrow, I thought that I should take some time to give my 1-year retrospective and explain what it is that I do in my team.
Before I start, I want to say a special thanks to my wife and kids for being so understanding and supportive. My wife is the real hero holding everything together and looking after our 2 young daughters as I travel up and down the UK with work visiting customers and educating developers. She's also great supporting and encouraging my community involvement, OSS contributions and public speaking. I wouldn't be here without you, so thank you for all you do.
My job description
On March 7th 2016 I joined the Modern Apps domain in Microsoft Services to work as a PFE. My full title (a proper mouthful) is "Senior Azure Developer PFE". So what is it that we do in my team? Let me explain.
PFEs are like developer consultants and trainers all wrapped up in one. If you've worked as a contractor in the UK before then you may have already done bits of this. PFEs help developers find solutions to problems. These problems may be architecture or performance related and can be about systems running either on Azure or on-premises or hybrid. Although we are Cloud Developer PFEs, we are very flexible on the engagements we run. This makes the role really exciting and full of exciting opportunities (though some of them may not be so exciting). As we speak with developers and customers about their problems, we are always on the lookout for other ways we can help them. Every engagement comes with a true opportunity to add value.
I will use an imaginary delivery to demonstrate how this works. Let's assume that I have an engagement to talk about CI/CD and deployment automation. Throughout the day I will also try to have a conversation about other aspects of the development process such as monitoring and performance issues. This, in effect, may lead into a conversation about AppInsights. Many times all it takes is talking with developers about problems or even design decisions and then provide them with options and tools that they can use to address these issues.
We also do a lot of training. This can come in the form of workshops, chalk and talks (C&T) and live product demos. Instead of walking into an engagement and write the code for our customers, we teach them how to use the tools in their disposal to solve their problems by themselves. And this, the knowledge transfer, is a crucial part of our role.
Finally, we get to work on various Proof Of Concepts (PoCs) in collaboration with our customers to either showcase a product or prove that a proposed solution would be applicable to the problem at hand. In some cases we may even have to come up with 2 or 3 options in order to provide a more comprehensive answer. PoCs are great for helping us stay in touch with code and use/consume our products first hand.
My role is awesome
This role is a dream come true and the past year has been an absolute blast. I have had more than 40 different engagements, 2 of which were long-term projects. My onboaring in the team was somewhat unconventional and I truly hit the ground running. I had my first solo engagement 4 days after joining the team! I completed my onboarding training in parallel while working on customer engagements. This is not the norm though and we do have a proper process for onboarding new PFEs. I liked mine cause it meant that I got to experience what the job would feel like early on and I was hooked!
Every engagement we take on (yes, we get to choose what we work on) gives us an opportunity to get in-depth knowledge on a subject. The subject may be something we've already worked on or something new that we want to "ramp up" on. Every service/technology and tool comes with training material. If there's no material, we create by working with the Product Group. Working for Microsoft means that we have an excellent pool of internal training and videos and even direct access to super knowledgeable communities and the Product Group (PG). Then, it's a matter of making time to learn the material and practice the demos.
Every engagement also brings opportunities to work closely with customers and be part of some amazing work. We get to see first hand what different companies work on, how they use our products and what challenges they come accross. What's more impressive is that our input can also impact how these projects turn out. Some of our PFEs have worked on very large scale projects for some of the biggest companies which makes me feel very proud to be part of this team. Although PFEs get to engage with customers alone, we're never truly alone. We have a massive team of really clever people behind us and we always work as a team. It's very common to have multiple teams from Microsoft engaging with a client on various levels (O365, Secure Infrastructure, Big Data etc etc). The scale of involvement is humbling and impressive at the same time.
The good stuff
This role has many benefits and for me it's a perfect fit. I learn about new things in exponential rate. It's highly unlikely that on a sinble day I won't get the chance to learn something new! This is both impressive and extremely scary. As you learn more you realise that there's a mountain of knowledge that you still know nothing about. It's easy to panic and get overwhelmed. The solution is to focus on the stuff that really matters and make it relevant to your customer deliveries. Within Microsoft we have an endless amount of training material, brown bag sessions, lunch and learn events, meetings and conversations taking place. Even if there's nothing running live, there's an inordinate amount of pre-recorded sessions we can dig into. Add free access to Pluralsight and Lynda and you get to see what we're up against. However, you get to choose your niche, build a solid foundation and then and then you can start exploring other areas that may interest you.
PFEs are by nature remote and we get to truly manage our time. How we get to spend our every day is down to us. If you ever worked remotely you'll know how this feels. You need to be very organised and self-motivated to ensure that everything happens on time and that our work exceeds customer expectations. This is one particular aspect of the job I really enjoy and it definitely keeps me interested. The remote aspect of the job may not be for everyone, but as a team we have found a few ways and channels to keep everyone engaged and in the loop (teams, email, monthly meetings, offsites, skype etc).
Travelling is also part of the job. It's not constant but this is a customer based role and as such you have to be on customer sites for most deliveries. Occasionally our customers may ask for a webcast due to the fact that the development team may be spread across various geographic areas but most deliveries are made in person. I get to travel more frequently due to the fact that I'm based in Scotland and some of my customers are in or around London. I'm now a silver member in BA and I have special status with many hotels and car rental companies which improve my overall travel experience. The percs are only an aftermath and not the end goal. I.e I don't do it for the points! Finding the balance is tricky, especially since I have a young family and I want to be at home as much as possible.
My manager, colleagues, team and company are all great. Every single person I've met and had the chance to work with is driven, knowledgeable and inspiring in some way. I learn so much with every interaction and it feels great to be in an environment that values contribution and collaboration. The One Microsoft spirit is visible every day and whenever I need help or advice I know exactly where to go. The Open Source spirit and ethos is also great and even though it's still early days and we still make mistakes, we at least try hard to improve.
The job comes with many challenges as well. The constant pace of learning can get to you and it's important that you don't overcommit. Getting time to recover and take a break is important. Travelling and time management are equally important or you can end up spending most of your time on the road. The tools and internal processes could be more polished and slightly less cumbersome but for the size of the company, I'm happy with the "red tape". Microsoft is continually reinventing itself and every process goes through many iterations and improvements and it's nowhere as bad as working for a bank where 70% of your time is spent on process! Understanding what you're good at and what you want to further develop is also a challenge due to the vast amount of choices. Remember that too much choice can also be a bad thing and MS is a place where the sky's the limit. You just need to find which part of that "sky" is yours and path to get there can vary wildly. Finally, this role will definitely force you to go through a self-discovery journey where you'll quickly find out what it is that you're good at and what you need to work on.
Even after a whole year, it still feels that I've only just got my feet wet. It still feels that I know nothing and I'm still as excited if not more about my work and the chance to help developers, companies and the community to grow and solve problems never seen before. I look forward to what's to come as the team expands and we get to work with new customers and products.
P.S - we always look for passionate developer so if you would like to join my team or one of the other equally exciting teams at Microsoft, feel free to drop me an email with your CV