Last year, I made the move from QA to Development. I had been a QA for a number of years and due to a number of reasons, I felt like I needed a change.
While I knew the change was going to require dedication and effort, I didn’t quite realise how hard it was going to be.
I made a few mistakes in my transition. This post goes over those mistakes and then looks how I rectified them. I want to highlight my pitfalls to hopefully help anyone else thinking about changing roles, so they don’t have to make the same mistakes I made.
My technical dev skills before moving into Development.
I was fairly confident with my skill level before moving into development. I knew I had a lot to learn, but I didn’t think twice about my ability to pick those skills up.
I have a BCA majoring in Information Systems and E-commerce. Due to work commitments I wasn’t able to dedicate enough time towards a Computer Science degree, so I decided that the next best thing was a Bachelor of Commerce and Administration, where I was able to take a few programming and database papers to gain a certain level of coding knowledge.
I was heavily involved in UI automation at Xero. I was able to design solutions that would test big applications. This is where I picked up most of my coding knowledge.
The number one resource I used to upskill was Pluralsight. This is a fantastic resource for anyone at any level looking to upskill in any programing language. Pluralsight offers courses in many different programing languages for beginners to advanced, I use Pluralsight a lot to upskill. If you are interested in learning more about UI Automation I wrote a blog on Getting Started with UI Test Automation on my testing blog site.
While I had some knowledge in coding activities, it was heavily focused around test automation. At the time I thought these skills were enough to easily transition into a development role.
The first bit of training that I was involved in when making the move was a training bootcamp designed and lead by my team lead.
Just like an exercise boot camp, this was a 2 month intense focused training camp, the C# language was split into sections, we would spend 5 to 6 hours a day, 4 days a week and go through exercises, articles, watch videos and have discussions, around the C# section for that week. We would dedicate time by ourselves outside of this to also do some extra reading and watch videos on the subject.
The boot camp was a good introduction into the different C# concepts and principles, however going through this boot camp I started to realise how little previous skills in development I actually had.
The bootcamp had finished and a few months had passed, reality started to set in for me. I wasn’t picking up the skills needed to be a successful developer. While I was improving, I was still struggling to understand some of the more basic concepts.
I had discussions with my team lead, was development something I still wanted to pursue, or would I prefer to move back into a QA role.
I hate failure and I was feeling like a bit of a failure at this point.
I needed to take a step back and work out why I wasn’t picking things up as fast as I should be.
GOALS….. Or lack of. After taking the step back and looking at how I had succeeded in the past, I realised I hadn’t set any clear goals for myself. I was turning up to work each day and hoping to improve, while I was improving slightly, it wasn’t at the rate I wanted or needed.
Writing down your goals and tasks
I found and started using an application that allowed me to write down my goals, then split those goals into actionable tasks. Trello is a tool we use at work and fit my purpose perfectly.
I would add tasks into my “ToDo” column, these would include chapters of development books that I wanted to read, side project tasks, coding exercises that I wanted to complete, pluralsight courses that I wanted to watch.
As I started working on and completing each task, I would move them from left to right across my board to the ‘Done’ column
My trello board also included a column labeled documentation - blog, I want to start documenting and blogging about my development journey. I would add blog post ideas into this column.
I have an ideas column. I was finding that I would have these good ideas during the day, these might come to me while chatting with work colleagues or while reading twitter, if I waited and wrote them down at the end of the day, I would often struggle to remember a certain level of detail about the idea. Having a place to write these down, allows me to quickly write the main concepts and points of the the idea and remember them.
Using a board such as a Trello board has another big advantage and that is the ability for collaboration and the ability to share tasks and ideas with a mentor.
Finding a Mentor
Finding and having a mentor is going to really help when moving into another role such as development.
No matter what programming language you pick, it’s going to look big and scary, it’s important that you break it down into manageable sections. This can be hard for any junior developer to do on their own. This is where a mentor can help, they can work with you to break down the language into smaller chunks, they can help you focus on areas that are more important to understand first.
When finding a mentor there are a few important points that you need to think about
- Someone you can trust
- Someone willing to give up time to help you improve
- Someone you feel comfortable asking questions to.
Someone that you can trust goes without saying, if you can’t trust the person, then they should not be your mentor.
You need to make sure that the person who is going to be your mentor understands the time commitments. Being a mentor requires a lot of time and effort, if someone isn’t prepared to give up that time, then it isn’t going to work. So having those discussions up front at the beginning will really help.
There are some people that I find more comfortable asking questions to than others, when finding a mentor, it’s important you have someone that you feel comfortable asking any questions to.
Finding a Side Project
One of the biggest things that help improve my skill level was finding a side project. This advice came from my team lead and while I didn’t pick one up straight away, as soon as I did I saw my skill level rise rapidly.
Before starting off on a main project, I started off on a few smaller side projects, such as creating a simple .NET core console app, interact with DynamoDB (AWS) work with and interact with 3rd party APIs.
After working on a few smaller side projects, I started on my main side project. The side project that I am currently working on is a Slack Chat App bot. We have a betting syndicate, where two people will bet each week and if the win is greater than what they spent and beats the other person's result, then they get to bet again, otherwise they go to the bottom of the betting list. I created a bot that will tell us, who is betting, who is betting next, store and show a leader board and a number of other things. As I have learnt different coding techniques and design patterns, I am able to implement these into my side project, where it can be sometimes hard to implement these type of changes into apps running in production, at least with a side project the only people I am annoying, if it breaks, are my fellow betters.
Extra Learning Advice
Development Books: While I learn more by doing, I still read development books, to supplement working on my side projects and give me inspiration and ideas. A few good books I have read recently are:
- Code Complete
- Clean Code
- C# in depth
Pluralsight: This is such a fantastic resource for anyone at any level looking to upskill in any programing language. Pluralsight offers courses in many different programing languages for beginners to advance, I use Pluralsight a lot to upskill.
Coding Exercises: There are many different sites around, that allow you to work on coding exercises online. The site I’m currently using is Code Wars, you are given an exercise to complete with a bunch of failing tests, the goal is to make all the tests pass. I find working through these helps train your mind look and then solve different problems. Skill level ranges from beginner to advance, so there is something for everyone.
If you are thinking about changing roles, then one of the key pieces of advice is to prepare ahead of time, work out areas and tasks that you can work on before actually making the role change to try and make it easier for the first few months in your transition.