How contributing back to the technology community can pay you back you in kind.
So I, like many of us in the computer industry, silently or otherwise, suffer from Imposter Syndrome.
As a tester with some technical skills learned well before my Uni years, I felt I wasn’t good enough to write production level code, like the developers.
I came across problems in my day to day work, and rather than ask for help from colleagues who might oust me for being a fraud,I would often run to the internet and seek advice from Dr Google.
He would offer me a course of Stack Overflow, countless blog repos and GitHub repositories chock full of goodies just waiting to be discovered.
As I progressed through my career, the places where we thrived were the places that openly fostered learning, and trying new things. Stepping outside of your comfort zone, and allowing you to fail, to make mistakes and improve.
It began to make me think, how can I help others in the community, what would I write.
The imposter syndrome snuck in again. Who would read your posts, they would all laugh at you. You would totally choke in a presentation. You’ll be fired.
I’ve got a mortgage and I like old cars, so I totally need my job.
So the years went on, and I didn’t write anything publicly about tech. It was really weird because those who know me, will know that I am happy to talk about anything.
In my younger years, I was heavily into forums, first was extreme pc overclocking. I would strap things like refrigeration units to my processors, run various tests and post screenshots and pictures.
As I got older and began to purchase and modify old cars, I would document my adventures, and as I gained knowledge around various subjects, or I completed a particular thing, I would write a Knowledge Base post, to others to follow and contribute too.
It was an amazing experience, I met some of my closest friends who will be with me for the rest of my life, some I will meet in another life.
People know me in the car scene not because they’ve met me, but the information I put out there helped them in some way.
Sure lots of people disagreed with my posts, some did it in other ways, some helped contribute to make improvements and suggestions, but it never caused me an issue. No-one said Saf, you don’t belong here, you don’t know anything about cars. (That bit is true, I still don’t, but I try 🙂 )
So I started contribute to the testing community. I signed up with the Ministry of Testing, and not long after they had a competition to win a trip to Test Bash in New York. I had never been to America, my curiosity was picqued.
The entrance fee? One post on why you want to attend TestBash, and one blog post about your adventures at the event.
So I rolled up my sleeves, and wrote my first tech post that was going to get judged, by testing peers who really have the authority to say you are rubbish, you shall not pass.
I WON >.< Ermergerd!
My employer offered to fund the flight as part of our individual tech budget, so I found myself on a flight to America.
I also started using some open source software for the first time, as I had been tasked with building a testing framework for an API blueprint we could use to roll out across teams. I posted this tweet from the plane
So I had to write a blog post now, I had won the competition and couldn’t possibly flake out
I moved onto to a new role, and was involved in a greenfield transformation project.
This involved using wire mock alongside docker to produce mock services, which are used to agree Consumer driven contracts between service producer & consumers.
Mocks were then built to allow autonomous development between squads, and avoid blockers in delivery.
Tests were written against the mock services, which would be run against the developed service, with downstream/upstream services mocked out, to perform component integration testing, and early integration testing is run against each PR initiated via team city.
A shell script would write the test results to each GitHub PR, along with slack notifications, providing all members of the squad, full and early visibility of test coverage and progress.
This proved to be efficient and invaluable, however some of the day-to-day constraints to exploratory test data, proved to be an issue in our test automation, namely around data provisioning.
It was complex, and it seemed difficult for me to sell the concept wider than my smaller engineering teams, who totally got it.
We had one major legacy provider, and we had a reactive relationship, whereby changes would just happen without us knowing.
I felt quite powerless to make the kind of organisational changes in thinking about quality.
I went on a stress control course, it was absolutely amazing.
I felt like Manny from Black Books after eating the little book of calm.
They told me to concentrate on the things I can control, don’t worry about the things I can’t, so I sacked off my job and went to play with old cars for a living
So after a few months had elapsed, I realised I missed being around people, and missed the buzz. I got a call from a former boss, who was now at InfinityWorks who said come along and see how you get on
That was a massive change for me moving into a consultancy role, and it escalated quickly as to how amazing it would be for me, as someone who had been test and quality focused, to being able to actually get involved in every aspect of delivery.
I am eternally grateful for the freedom I was provided here, as it has allowed me to reach heights that honestly would never have been possible in my traditional roles.
On my first account, I ran a whiteboard session about quality and testing with our engineers and one of them mentioned Pact.
As I began to look into it, I realised it encapsulated the work I had done in my previous role around a CDC testing framework, and I loved it.
It didn’t do quite what I wanted it to do however, so as it was open source, I was free to fork it any make whatever changes I wanted. I raised so many issues and fixes that I got recognised in a tech blog by one of IW’s top engineers about open source work at InfinityWorks, read the post here.
This was such a massive boost and properly kicked my imposter syndrome to touch.
I joined the Pact slack channel http://slack.pact.io/ which was a lovely home with lots of people all talking about consumer driven contract testing, and the challenges when moving to distributed event based systems. I had lots of awesome discussions, and met lots of new people, and funnily enough met a fair few people I had worked with in the past.
Ministry of Testing have their own slack group too (Join here — https://www.ministryoftesting.com/slack_invite) , where you can ask any question, or find great people always willing to help and talk about all things test. Just don’t forget about the XY problem
Our client has a big debate over whether to stick with Selenium or move to Cypress. I had never heard of it before, so ran some side by side evaluations and thought it was pretty slick. I wouldn’t be advocating running out and switching all your scripts over, but I loved their focus on developer experience, and not creating a black box UI testing tool.
Their documentation is incredibly good, they have fantastic recipes, blog posts, GitHub examples, so I thought I would pay some things to the Cypress community too.
I wrote some blog posts on how to address a couple of issues and workaround arounds for Cypress — see here for one
This came back to provide me big props at work, as a customer on another client account was struggling, had come across my blog post and then got to have me drop in on a video call to help him out.
I helped the Cypress team get Edge working when it switched to Chromium, and helped beta test Firefox, because multi browser support was a big sticking point for a-lot of people. I personally don’t think its an issue, and I advocate doing most of your checking activities without spinning up your browser, see this post for reasons why
Try not to take things personally, both when using open source software, or maintaining it. There are usually many things going on in peoples lives and it only takes a few extra moments to be courteous. Your post might help another person and it’s always nice to get appreciation for something you’ve created, and may have even long forgotten about. Even if it doesn’t it will remind yourself of something you did a few years back, which reduces our cognitive load, and can help reduce stress.
I thought I would pay back in kind so started creating some tools for Cypress and Pact (You can check this out via https://npm-stat.com)
Don’t forget to link up with people in your local community too.
So I’ve just checked NPM stats today, and combined there is just over 24.5 million downloads of packages. Kind of weird that I was scared to show my code to people for fear of being found out, and my code is out there, it’s not very good but its doing something, and I’m still in a job, so phew!
It’s not just me at InfinityWorks who is passionate about quality and testing, and we have implemented Pact on several client accounts, we’ve ran training sessions with clients, our consultants and our academy superstars. This allowed us to be listed as Pactflow partners which brings the potential for commercial success. This wasn’t my aim when I started off making contributions, but is a mega win for mine, and the rest of our great engineers efforts.
So that all brings me I suppose, to the point of this post.
I spent a load of my spare time giving back little bits of the community, because there had been so many times I have received help myself and been hugely grateful.
That time has a cost, so instead of working on cars, or spending evenings with the family, I’ve been beavering away at a computer.
Karma works in mysterious ways and every single thing I have done in the community, has resulted in positive outcomes, for me individually, for others, for my company, for other companies.
I got offered the dream job, to work with a company, who are aligned in my wants to create beautiful developer experiences, so that teams can safely deploy changes, and spend more time ensuring they are building the right thing, rather than spending time keeping the lights on.
The company is Pactflow and I will be taking on a Developer Advocate / Community Shepherd role (which is quite a nice label to help my tech identity crisis).
I’m so excited about the future and can’t wait to work with Pact’s awesome pool of open source maintainers, contributors and users and the Pactflow team.