It happened fast, but these things usually do. I had a couple of nice interviews and was hired to work on developing car cluster user interfaces (the instruments behind the steering wheel that show you how much gas you have, the speedometer etc etc). In modern vehicles the instrument cluster has become a mix of digital and mechanical elements giving more in-depth information with menus to navigate through it all. I dropped everything I was doing and headed off to a new job.
Things went really well, I moved out to the area my second week on the job (first week in a hotel), and spent my time after work learning the crazy structure of the towns naturalized roads which run in every possible direction, stop and start spontaneously at dead ends and change names up to 4 times along the length. At work I met a great group of people from all over the world who I ate lunch with each day and my training was progressing at a good pace.
There was a lot to learn. First there was the new development software which contained more interlocking unrelated methods of data handling than I have ever encounter in a development software before, to the point of qualifying as down right eccentric... you know, like some of the art asset development programs, but with code instead. Some of the features included are visual flow chart programming state machine for major functions, a module and widget structure for specific functions, a Small Talk variation scripting language, a semi visual scripting language that was suppose to be used unless what was needed was too complex and called for the Small Talk scripts, a view that mirrored the widget structure but was built independently, the event and message system, the external event system, the global properties system and pretty much a piece of every other development engine I've ever used all smashed into one program, except it had no sprite support... overall it's a bad program, just a complex one and it was interesting to work with.
Then there were multiple document management systems, several layers of version control, the system for posting work tickets and the methodologies for development. In addition, rather than working on one project, I worked on two with very different internal structures. My managers generally just handed me a work ticket and left me to figure it out. I did get some guidance in the first couple of weeks to get me started and after a few more weeks of "Ooops, we forgot to tell you .... fill in the blank with things like how to document changes, how some systems in the development software work, some things that needed to be included in the work order but weren't, how to fill in some fields in the work ticket, how to upload some kinds of changes to the system, when to upload secondary version control files etc." All in all though we worked the kinks out together one at a time, and by my 5th week or so I had gotten the hang of most of it. All that was left was convincing someone to go over the event system with me, and this module thing in the lower right corner that I wasn't sure what it did.
The first bit I found out was that the module thing was just a filter system to help sort project files and that I needed to associate new global properties with a module when I made them. A few days later, thanks to a fellow engineer I found out that the widget system didn't automatically sort itself into the matching names in the module thing and that had to be manually done as well (I'd mostly been fixing bugs and hadn't made many new widgets). All that was left was the event system, and on my last day of work I finally got it explained. I was so happy that day, with the event system explained everything fell into place and I knew how the whole development package worked at last. I was starting in on a big optimization update and would be doing some real engineering at last to make everything work under the new systems. A few final stylistic preference questions later and I felt like I
understood what my managers were after in terms of coding style. I headed out to a meeting at the contractor who had subcontracted me to this car cluster developer,and after the meeting was told the company making car clusters didn't want me to come back... I was fired.
After being told I was doing great, thanked for my work reguarly, told not to get too ODC over refining details, not to worry if I made mistakes because that was the best way to learn, told that my animation work was the best seen so far in realizing the designers vision (the designer told me this), and conversations with fellow developers on the team where they clearly stated they were impressed with how fast I had picked things up, and how early I started getting more complex assignments, you can imagin the sort of shock that came from finding out they didn't want me back.
The contractors had also been shocked and had hoped I would know what had gone wrong because they had heard nothing but good prior to this as well. What was worse, I was never given the chance to go back and talk to people. No communication, no good byes, nothing. The next day, the contractors that I had been hired through got my things for me and an explanation of why I was fired. Looking through the list was a number of things listed as reasons for termination that I had never been told were bad things. Somewhere, somehow people forgot to tell me a couple of rather impotent details. I had been under the impression that they wanted me to loosen up and leave more polish to the peer review portion of the development where the work order could be passed back and fourth between two people as they refined the update (thus ensuring two people knew how it worked and letting them learn from each other). Listening to the reason for termination, it became all too clear that the opposite was true. I was to have a fully polished completed piece before I submitted it to the peer review process, and that I should never hear from the person assigned the peer review and heaven forbid we pass it back and fourth. Had someone shown me the complaint, it would have been no problem at all to change my development to independent and pre-polished. Unfortunately, no one did.
According to the car cluster company, I had been told of these problems, and perhaps they thought they had told me, everyone was so great that I worked with that I simply can't believe they intentionally would lead me down the wrong path and hide expectations from me while claiming the reverse.
In the end I think it amounts to simple human errors. It can be hard to tell someone they aren't meeting expectations, but as someone who has been in the leadership roll before I know that you only hurt a person by beating around the bush or avoiding discussing the problem and just hoping it will go away. No one can fix a problem if they don't know there is one, and often what you, as the manager, may think is the reason for the failure will be inaccurate and by ensuring the employee is aware of the problem may come to find out that it was a simple misunderstanding and just like that the problem is solved. Subtle hints are not the way to go, sit the person down and tell them face to face this is a problem, it needs to change.
My mistake in this job was assuming that my managers would follow this practice. With two young managers, it was not only foolish for me to make this assumption, it was down right stupid. Two managers always means you will get some conflicting messages, and the chance that they will think that each one has addressed an issue when really neither of them has is a serious added hazard (until they learn to address all problems together in a formal meeting).
There is one big take home message I learned in this little fiasco: When you start a new job, make sure you sit down every week with your manager and ask them exactly where you fall in terms of meeting their expectations, and keep it up for the first 6 months to a year. Yes, traditionally the manager should be the one starting these conversations, but managers are people too, and it's not easy to be the bringer of bad news. As an employee, you MUST cover your butt and make sure you start the conversation, even if everyone has nice things to say, go digging for the bad before you get bitten from behind.
All in all, this experience has been as educational for me as it has been tragic for them. It's tragic that no one would speak to me face to face, that not only did they fail to inform me of the problem prior to letting me go, but that they couldn't even tell me to my face that they were letting me go at all. It's unfortunate that they may never realize that I misunderstood what they wanted and that they let go a perfectly good freshly trained developer for faulty assumptions (and now they have to go and find another one to train). It's tragic because if they don't realize their mistake, they could make it again, and that if they do realize their mistake they will have to live with it. I for one forgive everyone involved, because I truly believe it was an honest mistake, my only hope is that they can learn from it before it happens again.
I learned a great deal from this entire ordeal. I learned my skills apply really well to user experience, not just games. I learned multiple new document management software, version control software and systems, and EB Guide. I learned what it's like to not be the lead on a project. I learned what it's like working in a big company. I learned I can handle a full time job just fine. I learned to push for communication directly and to directly ask for an evaluation of expectations, and I learned that a person doesn't necessarily have to do anything wrong to be fired.
-----------------------------
Now I begin a new search for work. Less than a week after loosing my job I had my first interview. I may have been a bit low still and missing my normal levels of confidence, but the people were very nice and very supportive. They even read my blog before the interview, something I don't think has happened before. It's a great group that produces product distribution and accounting software, many of them began as game developers. I really owe them a big thanks, interviewing me at that time most likely helped to shorten my recovery time, and talking with them has inspired me to get back into more raw in depth programming. I was reminded of the Nero-network I designed years ago, and that I should look into building it properly in a serious programming language. Perhaps I can use it as a project to learn some more direct programming outside of a development engine. Granted it's still too complex to built the entire thing in a reasonable amount of time (given that it doesn't really have any practical uses beyond academic intrigue), but I might make a simplified version, or maybe just a normal Nero-network generator.