Community.

Image from here

Jobless Loser.

This weeks material is about making sure that we get involved with the communities and movements that our chosen specialism’s relate to.

Its true, as talked about in the content, that friends and family are not the best places from which to get support (unless someone in the circle happens to be a developer!). They are not usually connected to what we do and don’t usually understand the work at a deep enough level to appreciate the time and effort that goes into it. They then struggle to know what to say and suggest should problems arise as they don’t understand it at all. This can make for one lonely developer, something that I have experienced before.

There is another angle to this that I have encountered personally. I am ‘between careers’ at the moment. I used to be a retailer and now I want to be a game developer. I have been studying and practising game development since July 2017 without earning a penny for my family. My wife is incredibly supportive and due to the unusual levels of stress I had to endure while running my business, gave me two years in which to make that change. The ‘deadline’ is now the end of this year and I have to be earning something from development. My point is…

Its very difficult to show how far I have come in this area when the people around you don’t know what you do. Without realising it, I think that they hold me to the ‘Call of Duty’ standard of gaming and don’t realise how much learning and practice it has taken to get some guys on screen and interacting with each other. I walked my Wife through the entire process that a character has to go through to shoot one round and it really made her appreciate that there is so much going on behind the scenes. I worry that there are people in my life thinking “he should just go and get a job” and thats something that I didn’t expect this material to provoke.

In any case, there was a wealth of information in the course resources and I enjoyed the presentations by Al, talking about the various aspects of being involved in these communities generally and by Heidi Ellis, talking more deeply about how a practitioner could contribute to an open source project and what to expect from the people who run it. I must say that I have had a strange, emotional response to these things…

Contribution

Thinking about this now, I rely very much on Google to find the answers to questions that I have. There are two elements to that realisation. The first is that I regularly find myself on one of about five websites which means that the information that I need is more concentrated that I think. And the other is something that I only thought about when Al was talking about tacit knowledge. I don’t contribute to these resources at all. I wonder how many learning experiences I have lost out on because I didn’t try and answer someones’ question? The reason that I haven’t done that is fear. I am afraid that I am not good enough at what I do to have the suggestions that I make taken seriously. That’s ridiculous now that I think about it ‘aloud’ so to speak. I need to get over that feeling and do the best that I can do, knowing that at all times, there will be someone more qualified to answer that question. I need to remember that I just need to be qualified enough and even then, my incorrect advice may trigger the right answer from somewhere else. That is of value to the me and the person asking isn’t it? If I can do that, then I stand a much better chance at improving my knowledge and skill in my chosen domain. And, as a side effect, may create and develop some lasting relationships that turn allow me to engage in more spontaneous conversations that lead to knowledge I didn’t know I needed.

False Events Appearing Real

Yes it is. But it can also keep you alive… Image from here

Fear. Its a funny one. I can’t say that I have had many ideas or contributions ridiculed to the point where the experience has had any lasting effect on me. Why do I feel this then? I have just looked up at the ‘I will outwork you’ sign that is above my monitor (I know, I’m that guy) but beside it is a quote I pulled from the course material very early on. “There is always shame is the creation of an object for public gaze” Rachel Cusk. Thats it. I feel that I have shamed myself if I don’t offer up the very best solution that the computing world has ever witnessed. I feel that, had I just waited a little, learned a bit more, put in some more hours then the solution would have been better… Thats a habit I need to break. I need to feel better about what I can do now, not wait on the Mike that I am trying to build in the future. Is that perfectionism? I’m not sure, but I don’t think so.

Solving it

I will be looking at two areas for this post. I will identify the communities I wish to become a part of. This will include at least one official body if possible. The other is that I will look into dealing with this feeling I have and see what I can do about it.

I expect that once this work is complete, I will be a part of something larger than myself and the MA, and that I will be able to start looking for and answering beginners questions about the areas I am working in. The most obvious of those is Unreal as I really still feel like a beginner with C++. There I go again! That’s it, right there! I am going to try that again. I expect that I will be able to answer some beginners questions about C++ as well as those on Unreal and if I get them wrong, then someone will point that out and I will have learned something of value.

Having completed this small research project I hope that I will have better connections within the field of gaming development and that I will feel more comfortable about talking with others about my experience and about contributing where I can.

Specific

I will find at least one official body that fits within my desired skill set and join them. I will find at least three communities that I could learn from and contribute to and join them also

Measurable

This is complete once I have joined the communities and bodies I decide on.

Achievable

I am clear about the skills that I am trying to gain and just need to spend some time researching online

Relevant

Joining a body that focuses on game development and or programming excellence would likely be the most relevant activity. The same is true for identifying communities to join.

Time Bound

I expect that this will be done today or tomorrow and is not a long term project.

So, how did it go?

Well, the course led me to many good resources and I found some on my own. I have a list of what I found below. First are the official bodies and organisations. It turns out that joining them requires payment and although that is understandable (and kind of obvious really) I am not looking to pay anything at the moment. Because of that, I did not join any of them.

Gaming and more

  • TIGA – Representing the Game Industry
  • IGDA – International Game Developers Association
  • UKIE – The Association for UK Interactive Entertainment

GDC – Game Developers Conference also came up in this search and although I may be wrong, is not related closely enough to be included in the list. I have included it here though because it is a very well recognised event but is prohibitively expensive for my at this time in my career. I found many other bodies and organisations and I could easily have spent my whole morning looking for more of these but that really isn’t what this is about for me. Its getting involved at the bottom rung of the communities that I feel I will reap the greatest benefit at the moment.

At a more general level I looked at:

I have emailed Software Cornwall and expect a reply from them soon. I think thats a little overdue as someone living in Cornwall and trying to be a developer! I joined the Agile Alliance as a subscriber and look forward to learning more from their newsletter’s and spending some time on the website. This ties in neatly to one of my stated goals so I hope to get value from this.

While looking through the IEEE website, I didn’t seem to find much there for game development and I don’t really think that my vision “Make a player feel like a Ninja on the Sofa” matches there vision “IEEE’s core purpose is to foster technological innovation and excellence for the benefit of humanity.” I just want to make games at the moment. However, I have created an account anyway in case I am wrong. They are clearly a large and well established organisation.

The British Computer Society, although very broad, does have an Animation and Games Development Specialist Group but there is a fee to join that I don’t want to pay at the moment. The ISACA was not relevant to me upon closer inspection and focuses on other areas of IT.

Joining in

Having spent a little time searching online and following the leads from the course material I have joined the following communities:

As a user of the Unreal Engine, I am automatically part of this and have posted one of two ‘thank you’s’ but I could easily pay more attention to this and see if I could answer some beginner questions. A quick look around for questions to answer, instead of looking for answers myself, has informed me that there are many areas in which I could help. GameDev.net looks really good with plenty going on that I wanted to follow up on right there on the home page although I need to make sure that what I look at is relevant and not just sucking up time. Stack overflow and the sister game development site will be good places for me to spend time. I would be exposed to lots of problems and their solutions that would help grow my knowledge and improve my thinking.

GameDev.tv is the hub for Ben Tristem, a well known Udemy instructor and it’s really a marketing environment for his courses with limited value outside of that. The courses are great, but that’s not really what I am looking for. I have included it here as I am a member just because I own some of the courses.

So, I have joined all of the communities that are appropriate for me at the moment and I have much more awareness in this area now. I have created a folder on the address bar in Chrome and put links to all of the sites that I have joined, this should help me to keep track of them.

From here?

I think that I could build up my reputation points on Stack Exchange and its sister site, Game Development. As soon as I saw that I have one reputation point on each, I thought about how I could improve that! Gamefication in practice, although I am aware that’s not the only reason for the system to be there. I think too that time in the C++ section of Epic Answer Hub would be a good place to get started.

Taking a UML Course

The Pluralsight course can be found here

I have tackling the SMART goal for learning UML this morning and you can find that here. The problem that I am facing is that I need to be able to record my thoughts and ideas about how my software fits together. The need for this was highlighted is my game jam catastrophe! I think that the problem came about because when people (generally) talk about learning the code, they talk about learning a language and thats kind of the end of it. Well, I suppose that’s the beginning of it really and then once a person has a enough skill to get themselves in trouble with twisted logic and terrible dependencies, they go looking for a way to think more clearly. Well, thats where I am right now.

I have decided on two goals that I have discussed already (UML and Design Patterns) that should really help me with that problem. I am now learning the UML symbols and the various diagrams before I attempt to use it for my own designs. I expect that I will be able to sit with a pencil and some paper and put some of the thoughts that I have about how things should fit together on paper, which I hope would expose any poor or uninformed thinking at that stage rather that 20 hours into building something.

The next task that I have set for myself is to create some flash cards to make learning the names of all the elements of the ‘language’ a little easier and more thorough. From there, I will watch another tutorial that seems a touch more up to date, just to get a feel for the common things that the two presenters say, which will help me hone in on the things that are understood to be ‘standard’.

I think that this goal is progressing as expected really. I knew it would take a little while to learn and the terminology and the symbols and then there is learning how to think properly in the first place. Just because I learn some UML, I not equating that to automatically cleaning up how I think about dependencies and activities but it should be a good start. I may look at modelling the existing approaches that I am taking in Serial Link, just to see what sort of hot mess the diagram is once I’m done…

Touch Coding ;)

Dull, I know, but in there is a super power waiting to emerge…

The Problem

The problem at the moment is that although I feel quite comfortable on the keyboard when coding, I would like to feel a lot more able to hit the more unusual symbols without thinking so much. It may seem a superfluous skill but I learned how to touch type only recently and I can safely say that it has a very positive impact on my ability to complete written tasks faster, freeing up that time for, well, anything else. I also allows me to think more while I type and (in my opinion at least) better content in that work. I have a SMART goal defined for this task here.

So I want to do the same thing with the symbols, keywords and other punctuation needed for coding. I used to use the ‘hunt and peck’ method and although I was pretty fast, I had to look from the screen to the keyboard and back again all the time. Its surprising how interrupting that is, now that I don’t do it. I know already, from the little bit of past experience that I did get while failing my degree as a child and before writing that wrong in my old age (ha!) that the H&P method is even more inconvenient when trying the think about logic, keep your position on the screen and then find the pipe for that ‘or’ statement you are trying to write. I just want that sort of hassle gone if this is going to be a career for me.

Is it right? who cares?!

I do.

I want to be very clear that this is not about writing code faster so that I can write programs faster and ‘get through’ more stuff just to say ‘I’m done!’. I know already that would lead to sloppy, buggy stuff. The proof of that pudding is here in the other goals that I have set up for myself.

This is more about just reducing the friction of interacting with the keyboard. I am also thinking of coating all the keys in Teflon…

In the Past…

I learned about how to drill words, fragments of words and commonly used and combined words. Having seen that work really well before, I will be putting together a test sheet that covers all the things I want to learn. I expect that after drilling that document 15 to 20 times for about 15 minutes per session that my speed and accuracy will improve when I am coding.

I never spent long on drilling this stuff while I was learning to type and I won’t spend long on it here. The reason is not that I don’t want to spend a long time, it’s that this is the type of skill that is best built up over time with low exposure but very frequently. So something like 15 minutes per day, everyday, is a really good start. If I have time for more, I would do a morning and afternoon session rather than just do the time straight through.

Already doing?

I have already begun using the symbols and punctuation for programming while not looking at the keyboard and I know where they are, they just don’t flow naturally at the moment. I think that should I be able to improve this skill that I will simply be able to write code faster and remove an obvious barrier in the ‘Understand problem, conceive a solution, code the solution and test it’ chain. I have other SMART goals for the other areas in that chain.

The Docs themselves

I have now created 2 documents that I will test myself on and drill until I can see an improvement in the completion times and less tangibly, how I feel as I type them out; Are they still difficult? Which symbols and keywords am I still tripping up on? From there I will derive the next documents that focus on areas of weakness that I identify. REFLECTION BABY. I should be taking the tests tomorrow.