Tag: strength

ProjectXyz: Why I Started A Team For My Hobby Project

ProjectXyz - Why I Started a Team

Who Needs A Team?!

I’ve been building RPG backends for as long as I’ve been able to code. I think my first one that I made for my grade 11 class is the only RPG that I “finished”… It was text-based and all you could do was fight AI via clicking attack, buy better weapons, level up, and repeat. It was also 10000 lines of VB6 code and so brutal that I couldn’t add anything to it without copying hundreds of lines of code.

Since then, I’ve had the itch. I keep rewriting this thing. I keep taking “Text RPG” (super cool and catchy, I know) and rewriting it. I had my first visual representation of this game called Macerus (here’s another rewrite for unity), which is actually how I landed my first co-op job. But every time I’d get so far, I’d decide I needed to rewrite it because I had messed up the architecture in some way and refactoring would be too much work.

My latest attempt is called ProjecyXyz, because I can’t come up with names. And funny enough, I just Googled it while writing this article and there’s actually a company with the same name… So maybe I’ll have to get more creative. ProjectXyz is supposed to be a very generic RPG game framework that allows new systems, mechanics, and game content to be dropped in, in addition to being independent of a front end for rendering.

It’s also something I’ve been making on my own. Because I’ve been making RPG backends on my own for years now. So who needs to have a team, right?

Too Much Pride For A Team

I think initially I wanted to do this all on my own because of pride. I also don’t think it was something I was conscious about except for the fact I looked at this project as my baby and something I could control the development of. I wasn’t consciously telling myself “I have to do this on my own so that I’m better than other people” or anything silly like that.

But why would I go ask others for help? They don’t code like me. They don’t have the same investment into this idea as me. They aren’t as passionate. They might have their own ideas for how to do things too! How could I have someone like that working on MY project?

Those are all pretty naive reasons for considering to work alone though. Sure, this is my pet project and I’m going to likely feel more attached to it than anyone else. That’s probably expected. It doesn’t mean that I can’t find people that are super interested in working on something like this. They could be totally passionate about learning different aspects of creating an RPG backend.

As for having their own ideas… That’s probably one of the BIGGEST reasons in FAVOUR of having a team! It’s easy to get scared about having other people put their ideas into something you feel like is “yours”. It might have taken a few years of working in the industry (currently just passed 6 years of working at Magnet Forensics), but it’s actually very common for other people to be contributing ideas into code bases you’re working on. It happens every day. Sometimes you have design meetings or code reviews or general architectural discussions and your idea ISN’T the one that’s picked. That’s cool! As long as everyone is striving for extensible and testable code, we can make changes if we need to going forward. You don’t need to make every decision and sometimes it’s much better that way. Other people are smart too ๐Ÿ˜‰

Passion is Key for a Team

While the “team” I started isn’t an official team, it’s the first time I’ve been very open to having people directly contribute to my pet project. I think one of the most obvious reasons I became comfortable with this is because I found someone that was very passionate about exploring this space.

My colleague and I were talking about some of the concepts in ProjectXyz and where I wanted to go with it. Immediately he expressed interest in map generation and how that’s always been something he wanted to explore. How can maps be procedurally generated? Can we take this concept and generate maps on the fly? What are memory and runtime constraints? How do we represent this information in code? What about persistent storage?

I could immediately tell he was very curious about how a system like this might work. After several conversations with him about how he was starting to hack up some ideas and doing research on different algorithms, I knew he was passionate about it. We discussed working on some of these things together and contributing to the project code that I have, and we’ve been going back and forth for a few weeks now sharing ideas and his progress that he’s making for map generation. I’ve been hands off only really acting as a sounding board for him.

I think having someone passionate like this is critical for a small team. There’s going to be many barriers when working on a challenging project, and it’s easy to get bogged down and lose motivation when you’re stuck. Having additional people that are passionate about seeing progress in your project means you have some support for pushing through those hard times when you might lose motivation. If my colleague comes to me and says “I’ve been stuck on this issue and maps wont generate how I want…”, then I’m more than happy to sit down with him and talk through his algorithm and maybe where there’s an issue. I’m invested in seeing his piece come to fruition. Similarly, if I’m working on something like dynamic item generation for the game and I get stuck, I know he’s there to do the exact same thing. We both want to see this thing working how we intend.

So passion is important for a team. But is it sufficient? Is it the only requirement for adding a team member?

A Team is Built on Trust

Trust! Trust is a huge part of establishing a team because you need to be able to rely on each other. As mentioned, my colleague is passionate about working on this and has an interest in map generation. But what if I had never seen any of his code before? What if I didn’t know if he’s had practice with writing extensible code, testable code, following good design practices, etc… What if?

To be honest, I probably would be pretty nervous about him contributing code. It might be a huge barrier for me. I’d want to review his code and make sure it wasn’t “polluting” my pet project. I’ve re-written this code enough times that I really don’t want to have to think about rewriting it again! If I was nervous about someone contributing code I was going to need to re-write from scratch just to have an extensible design, it might not even be worth it having them contribute in the first place. It might actually create MORE work in the long run. It sounds selfish, but if the goal of adding someone to the team is to provide a net positive effect, then having to re-write code that isn’t up to par might be a deal breaker.

But that’s not the case here. I have multiple years of experience working with this colleague closely on various projects. We align to coding practices but still have our own twist on things. We value the same things in “good” code (extensible and testable). We use many of the same design patterns in similar situations. I’ve seen enough of his code to know that most of the time my comments about it are “oh, have you considered” and not “… you need to rewrite this”.

I can trust that what he wants to contribute will be aligned to my vision. I also can trust that new ideas he introduces are probably awesome new perspective that I hadn’t thought of. I also trust that if we disagree on something, we’re open to discussing it and coming to a resolution. So trust in this case certainly removes the barrier to entry to adding additional people to my hobby project.

Should You Form a Team?

While this was a pretty general article, I just wanted to get you thinking about opening up your hobby project(s) to other people to contribute. This is something I wish I would have considered more seriously early on. Maybe I wouldn’t be re-writing my project for the millionth time!

Some general points:

  • You’re not a “worse” programmer for getting other people contributing. Good programmers need to be able to work with others!
  • Other people can have good ideas too! Sometimes, they’re even better than your own ideas ๐Ÿ˜‰
  • Other people may have more knowledge or interest in areas that need to get work done that you just don’t want to do! Perfect!
  • You’ll want to try and find people passionate about working in the area your project focuses
  • You’ll want to find people that you feel like you can trust so that you’re comfortable with them working on “your baby”
  • Getting help doesn’t mean your code must be “open source”. You can still share private repositories together (i.e. consider BitBucket!)

So what do you think? Is your hobby project kind of stale because you’ve hit enough roadblocks and it’s time to get some more firepower to tackle it?

Share your thoughts below about your experiences with forming teams for your hobby projects!


Double Down On Your Strengths!

Double Down on Your Strengths - https://www.publicdomainpictures.net/en/view-image.php?image=130306

Double Down: Why I’m Working This

I haven’t written in a while, and despite setting a goal for myself to start writing more, I’m not going to kick my own butt over not getting around to it. Actually, if anything my priorities and goals have been evolving over the past while and it’s been a great growing opportunity. Previously, I wanted to start up writing again to work on my ability to self-reflect. In all honesty, other factors came into play and this started to happen more naturally without forcing myself into writing more.

Now that my goals are changing again, I’m realizing that I need to come up with some creative solutions for addressing them. For total transparency, one of my hobby goals is creating a brand for my show car, Ignantt. It’s a fun hobby of mine, and in order to keep it going I’m looking into sponsorship opportunities to take things to the next level. Sponsors are interested in your social media reach, and rightfully so. They want to make sure they can reach a wider audience by working with you.

I’ve been active on social media for my vehicle’s brand, but I’m interested in accelerating this. One option I’m exploring is paid promotions, but like many people, I’m a little bit skeptical and I feel weird about spending money out of my pocket to do this. Social media marketing is certainly not a strength of mine, but I would love to work on that.

So that’s where my creative strategy comes in!

Focus on Weaknesses or Double Down?

I read a lot about focusing on your weaknesses to become better and more balanced, and that concept makes sense to me. It’s going to take trial and error in addition to consistent effort to become better at something. Time. Resources. It’s just the nature of the beast. I’ll give you a few examples:

I’m interested in strength training. When you’re looking to improve a lift, whether it’s your bench press, your squat, your deadlift, or any other lift, you need to actively train that movement. As a novice, you’ll quickly see strength improvements. However, as your body adapts these improvements slow down. If you’re trying to increase your one rep max and progress is stalling, it might be a great opportunity to train strength in other rep ranges that you’re lacking in. The side effect of this can be that your one rep max strength breaks through a plateau. Maybe you have a weak body part you need to build more strength in, and as a result, fixing this imbalance allows you to continue to progress in your strength. These are all examples of working on a weakness to become stronger in another area, and in this particular case it’s physical strength for a lift.

I’m also interested in bodybuilding. Similar examples apply here as with strength training because bodybuilding has a lot to do with symmetry and balance. Got big arms but tiny legs? You won’t do great on stage until you bring up your lagging legs because judges are looking for symmetry between your upper and lower half. Arnold Schwarzenegger was known for blasting his small calves until they were no longer a weakness. It’s about balance in bodybuilding, so turning your weaknesses into strengths is important.

Double Down to Reduce Risk

So why might I suggest that you double down on your strengths instead of just hammering away at your weaknesses? Well, in this case I’m looking to reduce risk in terms of time and money while taking a more slow and steady approach to working on my weakness. My blog for development and leadership has been more successful in terms of generating online traffic and ad revenue. It’s nothing crazy, but it’s been proven more successful than my other blogs or sites. For me to invest more time and money into this blog is actually minimal effort, minimal risk, and it’s also aligned with some of my other goals (which I’ll follow up about). In fact, instead of feeling like a forced scenario to write, I have some topics I’d like to write about because they’re recent learning experiences.

My thought process is that I can continue to use this blog to:

  • ย Generate a small amount of revenue
  • Experiment with content creation in an area I’m stronger in and have more experience with
  • Use my learnings to carry into a different area/domain but with similar goals

Generalizing My Double Down Strategy

While I absolutely believe balance in many things if very important, I think there are opportunities where you can double down on your strengths to help improve in other areas.

This boils down to:

  • The area I’d like to improve in is something I’m lacking experience in and as a result, could be risky to heavily invest resources into
  • I have an area I’m strong in that has potential carry over to my weak area
  • My strong area can be used as a buffer to minimize risk (i.e. potentially use ad revenue from one to pay for ads for the other)
  • Focusing on my strength is aligned to something I enjoy, so it won’t feel forced to work on it

Double Down Summary

While this may not make sense to do all the time, I think the timing works really well for me. I’m going to write a follow up to discuss particular examples of how I plan to execute this and how they relate to building the brand for my vehicle.

Can you think of any areas that you can double down in to improve another area in your life?


  • Subscribe to Blog via Email

    Enter your email address to subscribe to this blog and receive notifications of new posts by email.

  • Nick Cosentino

    Nick Cosentino

    I work as a team lead of software engineering at Magnet Forensics (http://www.magnetforensics.com). I'm into powerlifting, bodybuilding, and blogging about leadership/development topics over at http://www.devleader.ca.

    Verified Services

    View Full Profile →

  • Copyright © 1996-2010 Dev Leader. All rights reserved.
    Jarrah theme by Templates Next | Powered by WordPress