On my first software development project

For those of you who are connected to or following me on LinkedIn, you might have noticed that recently, I’ve shared and reacted on quite a few updates related to TestProject and their new and open source SDKs, especially the brand new Python SDK. Why? Because I built that Python SDK, and because I’m pretty damn proud of the end result.

I’m not going to talk about how the SDK works in this post, I’ve written a series of tutorials available on the TestProject website that do exactly that. If you want to find out more about the SDK, what it does and how to get started, please read this tutorial. This post, instead, is more of a reflection on the process and what I’ve learned from working in a software development role for the first time in my career.

How did this project get started?

I’ve known and worked with the team at TestProject for a while now, ever since my first blog post was published on their website back in October of 2018. I’ve always enjoyed working with them, and together we’ve published some 10 articles on blog.testproject.io, not including the SDK tutorials. Then, late December of last year, they got in touch to see if I was interested in collaborating with them on a to-be-developed Python SDK for their test automation platform that would supplement their existing Java and C# SDKs.

Initially, I declined. Having no real experience as a software developer, plus having a training business that was growing pretty rapidly, I thought it wasn’t the right fit at that moment. However, the opportunity of experiencing first-hand what it would be like to be a developer, and moreso, a developer for a free and open source project that would benefit the software testing community, kept flying around in my head, until I was sure that saying ‘yes’ was the only right thing to do. Lucky for me, the job was still open, so I accepted, we worked out the terms and conditions, and that’s when the project could actually get started.

What did I learn in the process?

To be honest, I don’t think there’s been a single project in my career where I’ve learned (had to learn!) as many things in such a short time as with this project. Granted, I knew a thing or two about writing code, about Python and definitely about test automation, but going from there to actually creating a software product and making it available to the outside world was definitely a step (or two, or three …) up from that. Take these things, for example:

  • Writing code that is well-structured enough to allow easy unit testing
  • Packaging and publishing code to a public repository
  • Effectively applying code linting and formatting tools
  • The intricacies of Git – branching, rebase with autosquash, fixup commits, dealing with merge conflicts, … (I’m sorry for all the frustration I caused, Marat and Vitaly!)

And that’s only the general software development skills.. I’ve learned so much about Python, the way it works and what you can do with it, too, the list would just be too long to include here.

Any other lessons learned?

Oh, lots of them! The biggest lesson, probably, would be to not underestimate again the time and effort it takes to create and release a quality product. I knew this, of course, having worked in software development teams for years, but it has never been as tangible and as first-hand an experience as with this project.

Another lesson is that yes, developers do make mistakes 🙂 At least I did… Lots of them! I’m lucky to have had the opportunity to work with a couple of great testers in this project, who came up with excellent ways in which the thing I built did not work as expected, even though I thought I covered them all.

Even though I’ve been on the other side of these discussions a lot in the past (being a tester, pointing out what I thought was a bug to a developer), seeing and experiencing this from a developer perspective has been a really valuable experience. Thank you so much for that, Ran and Gil!

Would I do it again?

Without a doubt: yes! Even though test automation is where my heart -and my experience- is, I loved the experience of actually creating something, seeing it go live and reading about others using and appreciating it.

I don’t think I’ll ever turn into a full time developer (never say never, though), if only because I like delivering training just as much, but I do think it’s a great way to spend part of my working hours. In fact, the next development project is already in the works, and I hope to be able to do this even more often in the future.

The end result

If you want to have a look at the end result of this project, it’s available on GitHub here. Why not give it a spin and let me (and the TestProject team) know what you think? Feel free to leave a review, file an issue if you think something’s not right or missing, or even better, submit a pull request.

A big, big thank you once again to the entire team at TestProject for making this an amazing experience. I won’t name all of you individually for fear of accidentally leaving someone out, but you know who you all are 🙂