I'm a M.Sc from the Computer Science department at Aalborg University in Denmark. I've studied game development at DADIU, as part of my specialization in games on my master's degree and specialized in HCI. Currently, I work as a Project Manager for TimePlan Software in Denmark. I dedicate a lot of my spare time to grow in this role, while I also do investments in my own company. I don't see myself working on game projects in the near future. I have been working on BZSmod since 2007 with level design, programming, and project management. BZSmod has been a great platform to learn and develop my skills related to software development. BZSmod was released with its development files in November 2022, and we support anyone who wants to fork the mod or bring fixes to BZSmod. I blog a bit on moddb when it is related to the mod or personal experience which I find useful for the game community. To read more about my study experience and other projects, see www.ringhauge.dk

Report RSS My first year as professional software engineer

Posted by on

Company names has been removed to avoid LinkedIn from publishing this blog entry as "an article has been written about <major company name>". This entry is targets the audience at moddb and represents my personal experiences in a field outside my research topics and game development topics, which provides a view and thought for many users on moddb but not my professional network on LinkedIn
---

It has been a year since I started working for a company with embedded software in the machine industry (welding machines). It might sound quite far from HCI and game development, but BZSmod was part of the portfolio and reason that I was hired.

In this blog I will share some of my experience and bring my two cents for programmers based on what I learned in the transition from student to professional hire.

First off it is important to emphasize that my success and gain from BZSmod which aided me in getting the job, is not related to gaming, animations, sprites, and physics but rather due to C++ being close to C and my experience with network development, user interface, continued integration and interaction with the OS.

This shows how it can be important to look at the content of your works and skill set from a different perspective, to avoid limiting one self from good opportunities. Using a mod as an incentive to grow your experience and portfolio can be a good way market yourself and provide self-confidence at a job interview.

I was once interviewed at a different company working with embedded systems, the interviewer was quite found of the .NET framework due to its "standardisation" which couldn't be obtained in C++. I assume the interviewer didn't know of C++/CLI (https://msdn.microsoft.com/da-dk/library/68td296t.aspx). I didn't get the job :)

Good experience makes it possible for you to determine if the workplace (and your future boss) is the right one for you. Keep in mind that you can negotiate salary, but you can't negotiate your colleagues.

I have always been a fan of C and C++ and still encourages it, because you are forced to understand how the system works close to the core. I find it much easier to implement my learnings from C in C# than the other way around. This is because C# and .NET provides a handy toolset that makes difficult things easy to implement such a network communication and garbage collection.
But when .NET isn't used, the tools are unavailable and you will have to come up with the 400 line code that only required 10 -25 with .NET and because .NET is nicely packed in API's you might have a hard time in figuring out what happens behind the scene.
Also, don't forget the memory management. It is very easy to be lazy in C# and you have a lot of ram for a desktop application. However, that is not the case for embedded systems.

Train your skills and avoid being too shallow when learning about new features. Knowing what the code does makes it easier to debug your software and identify the root cause of a problem. Working with pointers and looking at the memory can provide some experience that even can help identify race conditions. Pick the right tools (language) for the job. C and C++ are not the right tools for everything.

Getting a job will give you more money, not more time - at least if you value your job.

Understand that side-projects might have to be reprioritized, especially if a project doesn't train you in a job related manner. This will be trivial if you enjoy your job, if not then consider looking for a new job.

My longest week logged 50 hours this year, and I used an additional 10 hours in traffic. Needless to say, my wife wasn't particular found of the situation. I'm very committed in my job and I aim for high quality and well tested solutions. As a result I have been provided advanced tasks and responsibilities and these provide new possibilities for me to learn and to enhance my position.

Good quality is valued and creates trust. Trust leads to more responsibility and new challenges. Meeting new expectations enhances your position.
Low quality has the opposite effect.
Testing before delivery can prevent you from providing low quality and can be used as a resource in the decision making, this can improve the solutions and potentially save time.

I had the chance of recruiting a developer to our team, as we were in dire need of additional workforce.
The developer is on my friend list, we studied together.
Working together is a different kind of challenge as the hierarchy isn't flat and decisions might have to be taken or enforced even when in conflict.

Before you hire a friend, realize that you might get into a conflict over work related matters and plan how you will handle those situations to avoid them from affecting your friendship.

Epilogue:
A lot has happened during the last year. The company just release their new flagship Sigma Select, which I have been working on. I had some new leadership experience and collaboration as I'm one of the main developers that provides support and handles for testing the machines by using SeqZap. It provides a good deal of experience by taking part in strategic meetings and learning from our Software Architect's approach to technical solutions.
I have the benefit of having some well educated and experienced colleagues who can mentor me when approaching new challenges. This has provided me with an aid in understanding complexities in our systems and reduced the learning curve greatly.

It has been difficult to find time for developing BZSmod, but it is a sacrifice I can endure. I want to finish BZSmod properly instead of rushing it and at the moment I have prioritized my workplace. I'm looking forward to acquire some more spare time after I move in 2018 and finishing the project.

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: