I thought I would talk a little about something that has really helped with the anxiety (that I didn’t expect to feel) that happened when I started the internship at Antimatter. I feel that the opportunity to work for them, even at this low level, is so rare that I think I got myself a little worked up wanting to show them that I am serious about the work and skilled enough to add value to them.
There were a few reasons why I think the anxiety started. It’s important to understand that I am typically not an anxious person. I steadily break problems down, and then solve them. I have good self discipline and I don’t usually panic. But, there was a perfect storm of factors at play here that I think caused this problem and I will explore those in a second. The main issue was that I perceived that it was taking too long to complete what I felt were basic tasks. I found myself stewing on things and not reaching out for help. I was also experiencing difficulty hunting down solutions to problems because if I did find something that looked like a solution, I could barely understand the other components that made up that solution. I felt very vulnerable. Silly really as I look back. I was losing sight of the fact that I had been brought on as a programming intern and not the new Technical Lead, Lord of All the Bits! I fell into that trap of expecting more from myself than I was actually capable of giving and then getting frustrated when I couldn’t deliver. Did it to myself.
Why I had the problem
- Being new to C++: I finished long course on Udemy that was teaching me how to code in C++ recently. Very recently actually. I finished the course on the 24th May and the internship started on the 3rd of June. So that meant that I was in the studio, expecting from myself that I would be able to code properly 10 days after finishing the course.
- Unreal’s C++: This is C++ on steroids. Unreal is built on C++ and uses some really cool but complicated and thorough tools to make the magic happen and if you wish to use C++ for Unreal projects then you really need to know about these features and conventions. I didn’t know about those things and that gave me another issue.
- Unreal API: You have just arrived in a new town and someone says ‘hey, pop to the local shop and pick up some…’. Ordinarily, not a problem. But you just got here and don’t know where the shop is. Suddenly, something straight forward and simple is made complicated and difficult just due to your lack of knowledge. This is how I felt coming from Blueprint to C++. Basic things that would have take 40 seconds in BP took 3 hours and in C++, which I must say caused an enormous amount of stress.
- Version Control: Using Perforce and collaborating with 20 odd people from all over the world was an experience in itself too. I have had very limited experience with version control having used Git but this was on another level.
- The codebase: Oh my. The code base for the project that we are working on has been put together by people that really know what they are doing and is very granular. It uses assets I didn’t know about in novel ways (to me at least) and just working out the structure behind the code I needed to come off was very challenging.
That has been pretty simple actually. First I just made sure that I spoke about how I was finding it and that I knew that I was being too hard on myself. I needed some reassurance that I was not there to ‘change the world’ and just there to get a bit better at coding! Then after I realised that they expected me to struggle, I came up with the idea of the Can’t Do It timer. When I get stuck and feel that I am not moving forward, I put the timer on. If I solve the problem or make significant progress, I stop the timer. If I don’t, the timer will do off and when it does, I am duty bound to reach out to someone for a hand. Sometimes its the guys in the room and sometimes its the programming lead, who is abroad. Whoever it is, I talk to them.
How its going now
So much better! It’s made such a difference to the way in which I am tackling things. Also, I find that the lessons that I learn from reaching out solve other problems of course and that in turn stops me having to reach out so much. I have also started writing the solutions down in a Workflowy doc so that I should not have to ask about that solution again.
I have had a couple of days now where I have made great progress and I feel that my skill level is growing. I see more of that in the future and I am really looking forward to the time where I am more engaged in ‘how should I do this thing’ and not so much ‘why is this thing not working’.