Posted on

My First Experience with Indie Game Development & Monetization

indie-game-development

Available on the Google Play Store, as well as the Apple App Store.

Lesson number one: indie game development as a side hustle is hard!

I have been programming now for several years and I’ve started to acquire a significant amount of professional experience. However, when it comes time to actually making money, I have had little to no luck outside my 9 to 5.

In this post, I’d like to share my experiences with indie game development, as well as my attempts to monetize my first game, Evil Space Cats. I’ll discuss my thought process during development, as well as our plans moving forward.




Why Indie Game Development? Go With What You Know!

After a couple failed attempts at different side project ideas, I decided to make a simple mobile game because I was very comfortable with the technology. I have been interested in front-end coding since I started engineering software and at the time I started working on the game, I had no strong experience constructing my own back-end for a project. So, an HTML5 game wrapped with Apache Cordova and packaged as an iOS and Android app became my go-to plan.

I still had fairly limited experience with games. Because of this, the first thing I did was read part of a book titled “Pro HTML5 Games”. This taught me more about concepts I needed, such as how to animate sprites. Although I only read a few chapters, the few things I picked up on game development were incredibly significant and went a long way in helping me to begin my journey.

Prove Your Concept

After the book, I immediately got to work on a proof of concept (POC). In order to ensure I saw the project through to being finished, I prioritized managing a very small scope. How I did this was simple. I thought of an easy game concept (space shooter), and I picked one aspect that I could make special somehow, like putting my own unique twist on something everyone was familiar with. In order for the game to stand out, I decided I’d focus on creating very cool and unique enemy abilities.

While I am happy with the way things turned out, in retrospect, I probably should have focused this part on empowering the player and/or adding addictive game mechanics into the design.

After the first 2 enemies were created, I was then well on my way to building the game I had in mind. I got myself a Macbook Pro so I could build for iPhone, re-themed the game so it’d stand out (Cats instead of regular space ships!), and pounded my head for 2 months worth of weekends trying to figure out how to get the sound to work cross-platform. (There are still sound bugs on certain phone versions =()




Success! ..Sort Of

After all of the above, a very ugly demo was ready for the app store!

Since then, I’ve added loads more features to the game. Google O-Authentication, a global cross-platform leader board, 2 new ships, a store, and a butt-load of bug fixes…and the game STILL isn’t “done”.

But I’m still proud of it.

For it being my first serious side-project, the reviews have been great! I have even had a handful of people contact me to give me feedback or just to tell me how much they enjoy playing the game.

Truly my favorite part has been hearing the frustration and laughter of people playing the game. Listening to the emotional response from different individuals is incredibly special.

So..Now What? How to Monetize?

Moving forward, it’s time to begin marketing the game!

I made a deal with my wife that if the game makes at least $5,000 in sales by February then I’d continue working on it. If not, I’d move on to the next project. We have a trailer that will be ready to be released soon. We’ve also planned the next small update for the game to include stronger bosses and a daily reward! I’ve purchased the domain evilspacecats.com, and I’m currently building a landing page. As the journey continues, we will keep posting blogs, gifs, and social media (follow us @evilspacecats). Feel free to reach out to us on Facebook or Twitter with questions and comments. Feedback is always appreciated!

Thank you everyone for reading this. If you liked what you read, please share and leave a comment. We will see you in the next post!

Posted on

3 Important Professional Development Traits to Focus On

professiona-development

Professional development, in my eyes, defines how we focus on an extension of our better selves. That side is driven by our inner productive core that gets things done and is eager to grow and solve problems. By feeding and focusing on our core selves, we can transform into individuals who are hard working, dedicated, and capable of taking on the world’s toughest problems.

Like everything else I write about, these areas of focus involve discipline and self reflection. We get better day by day and growth is earned. With that in mind, this post is the perfect cheat sheet on what to focus on in order to improve your professional development.




Communication and Social Interactions

In order to help ensure success in your career, you must have excellent communication and interpersonal skills. With strong attributes in these areas, an individual can stand out like a beam of light when it matters most. Obviously, this is easier said than done. Building a strong professional development persona requires working on your presentation, which is the first step into further expanding one’s communicational boundaries.

Begin focusing on how you stand and the body language you give off. Then, try to analyze how you enter and exit conversations. Remember to always wait for others to finish speaking before beginning to make your point. Also, be sure to acknowledge the other person’s point of view, and only disagree when necessary. Be eager to agree and despise disagreements when in professional settings. Improvement in these areas will put you in an excellent starting position towards building an ideal professional persona.

Be Proactive in Solving Your Employer’s Problems

I understand that many of us work to pay bills. Work is often more of a necessity than a desire. However, the longer you carry around the idea that your job is to pay bills and not an extension of your better self, than the longer you will go without professional growth. In becoming a proactive problem solver you will find purpose, you will find satisfaction, and gratitude will be thrown at you.

Remember that your employer hired you to solve a problem or fill a role in a larger system. Take a step back and look at the problems your role solves, and how it connects with perpendicular roles. Understanding this bigger picture will give you a very important perspective. From there you can take initiative to solve other problems, perhaps even improve your workplace’s process as a whole. By engaging with issues like this on your own accord, you will immediately begin to stand out from your peer’s and be able to help others solve their issues as well. If you are as helpful as you are insightful, good things will come your way.




Gain Confidence By Being Good At What You Do

When working on professional development, a lot of discussion goes into presentation. This can sometimes have negative connotations due to the idea that those who focus solely on a projected image lack the substance required to get the job done. I agree with this, as a professional without skills is no professional.

Instead of talking about being confident by faking a smile, or learning just what is necessary to succeed at your current task, spend a little extra time focusing on improving the abilities utilized to succeed at your job. I’m guessing if you’re reading this blog, then you are interested in that sort of thing. This can be accomplished by taking advantage of your down time. Try sacrificing 30 minutes of Facebook time to read more about what professionals in your field are doing. If your time outside of work is precious to you, then find ways to boost your skills while things are slow at your current position. Gaining the skills to be better at what you do is handled one small task at a time, and an extra 30 minutes a day can very likely be the difference between being good at something and being great at it.

Thank you everyone for reading this. If you liked what you read, please share and leave a comment.

Posted on

4 Reasons Why Programming is a Great Profession

4 reasons why programming is a great profession

This post is an opinionated piece. In it, I will briefly go over 4 reasons why I think programming is a great profession. If you are looking for the right career field and are considering programming, then you may find this helpful. If you would like to find out more information, then you can check out my posts about 5 challenges new software engineers face and 4 tips on professional development that will help you get the job.

Job Security

If you’re like me, the first thing you think of when choosing a career is job security.

When I initially chose computer science as my college major, I had no idea what a “program” even was. I was not aware of programming languages, how they worked, or the difference between software and hardware. In my own mind, I was simply looking for which major could provide me with the best safety net.

It was 2010, and the American economy was still struggling to get on its feet. Many people were losing their jobs, even friends and long time acquaintances. As a reaction to it all, I chose the field of study I thought would save myself from unemployment.

Fast-forward a few years and I am working happily as a software engineering consultant. There has been no shortage of jobs for developers and we will most likely fail to see a shortage of good developers in our lifetime.

Computers and technology are here to stay and will be the driving force to even greater things we as people accomplish in the coming years. Without skilled developers (and engineers and scientists), none of this tech would exist. As long as you are willing to work hard and learn, you will have a seat at the table.



Exercise Creativity

A programmer can code whatever he/she can think of. Literally.

Video games, websites, custom applications or even a smart mirror. Soon, developers will be creating more applications for virtual and augmented realities. The possibilities are truly endless when it comes to what can be created with code.

Creativity and careful planning are necessary every step of the way, as well.

Projects have their own life-cycle, user-interfaces need to be sketched out, and use cases or “stories” must be written about how users can interact with your software. All these scenarios can lead to a programmer creating something which helps people achieve greater goals and can leave someone feeling better than they did before experiencing what you’ve built.

Never Stop Learning

There is so much more to software engineering than just writing code.

Sure, in the end source code is what tells an application how to respond to a user’s actions. Source code is what tells an application how to look, feel, and think. However, a proper development environment must first be configured before any code is written. Compilers, frameworks, version control, IDE’s, database and application servers all must be chosen, installed and set up. An application’s architecture should always be defined for moderately sized projects.

There are so many different pieces to the puzzle that is programming, and to some people, that is one of the greatest things about it.

Programming as a profession, you will find yourself learning new things on a daily basis. Each new lesson is a reward in itself. Each new challenge you surpass is another accomplishment, another notch in your belt.

From the technologies, to getting over the many conceptual hurdles which make up your code, the best programmers are the ones who learn quickly and problem solve efficiently.

Good Programmers Can Work Anywhere

Once you’ve acquired the many technical skills of programming and application development, you may not have to rely on working for someone ever again.

A programming professional can be his/her own boss.

Thanks to the internet, it is more possible than ever to make a living working from home. You can create a website, or work as a freelancer for clients, but you will never need to answer to a higher power. This lifestyle may not be for everyone, and as I stated earlier, I am still working as an engineer for a consulting company.

However, there are also remote positions which have become more and more common in recent years. Interviews, meetings, and deliverables can all be passed via digital medias. Through websites such as https://www.flexjobs.com/ and https://remoteok.io/, the dream to enjoy a life away from the office is within everyone’s grasp. And as a professional programmer, you are more capable of accomplishing these goals than perhaps any other profession on the planet right now.

Thanks for reading!

If you liked what you read, please share with others who might be looking for their next career choice. If there is a different topic you’d like me to write about, please leave a comment below.

thanks

Posted on

6 Steps of Application Development for Beginners

Application Development for Beginners

In this post, I’ll attempt to highlight the major steps of application development for beginners working on a small or individual project. This content assumes knowledge of the software development life cycle and some basic programming experience.

Step 1 – Think of an Idea

It’s true what they say…everything begins with an idea. Whether you are thinking of working on something original, or if you plan to build your own version of an existing application (a great practice for soon to be engineers), you cannot move forward without the idea.

Consider keeping an idea journal & make it a point to constantly jot down random thoughts, regardless of how you feel about the thought itself. Constant brainstorming is an excellent habit to have in order to promote your own enthusiasm for project development.



Step 2 – Requirements Analysis & Choosing a Technology Stack

There are more than a handful of well known options available when it comes to what can be used for putting together a project. In order to decide which stack is for you, first seek to understand your idea from a project management perspective and analyze its requirements and goals.

Your requirements analysis should come in the form of answers to questions. Answer questions like, “How can I break my project idea into smaller parts or modules?“, and “How do I want a user to interact with creating an object in the system?” List these out in a word doc or on a piece of paper. These requirements will turn into your checklists during the prototyping phase of step 4, and will also serve as a base of documentation & planning, allowing smooth transition into Step 3.

Based off your conclusions here, you can accurately research a tried and true group of technologies (languages, IDE’s, frameworks, database servers, etc..) to utilize when working on your own project ideas. Keep it simple and try to find a stack with lots of community support & online resources.

Step 3 – Documentation & Design Planning

Yes, a small project should have some documentation and careful planning, even if in the form of a few torn pieces of paper with to-do lists that resemble chicken scratch. Docs can be represented in many different ways because all that matters is that they aid the engineer (you) in implementing solutions to your problems.

Therefore, taking the time to plan your individual project’s  code base and life cycle is absolutely critical to ensuring things like its scalability and support down the road. Expect drafts and edits to be ongoing throughout your project.

Step 4 – Prototyping

This is the part where we start programming.

A proper prototype should demonstrate the core functionality of the project’s goal(s). It’s constructed so that changes can be made to an application’s planned life cycle, which is inevitable in real-world scenarios. Prototyping is also still a part of the design phase. Feel free to experiment with different concepts and evolve the original idea of your software. There are no limits to what you can develop when programming.



Step 5 – Testing & Refining

As with many of the steps of application development, there is some overlap and back-and-forth work which takes place during the different stages. This is most evident when it comes to testing and refining your project.

In this step, you will be testing and going over code you wrote during the prototype phase, and correcting any mistakes made during the designing and planning of your software’s code base. Work to ensure that your application is robust and can handle random interactions from users. Cleaning & organizing code into blocks of functions that make sense and an architecture that is laid out nicely is the best way to guarantee your software will have a life past its first deployment.

Step 6 – Deployment

The deployment process depends on the type of software you are constructing. A mobile app is packaged, encrypted and signed before being uploaded to the mobile store. Web applications usually have their code base and resources copied over to what are known as “production servers”. If your application is a client-based program, there may be information which your users are required to download before utilizing the software.

Regardless of what type of deployment process meets your specific needs, you can be proud for a brief moment and understand that you’ve accomplished something that is anything but easy.

From here, the next phases would look something like working on marketing strategies, listening to feedback and analyzing your users’ trends. Then, of course, it’s time to plan your first update and continue the cycle!

Thank you for reading!

Thank you for checking out this post. I really hope this helps those of you who have been wanting to start your own projects but were unsure of how to get started or what it means to develop an application on your own.

If you liked what you read, you can check out this post here to find out some challenges I faced working as a new software engineer.
Please share and comment on some of the projects you have worked on and any steps that I left out of the application development cycle. You can also comment on some other topics you may be interested to see me write about.

Posted on

5 Challenges New Software Engineers Face

5 Challenges New Software Engineers Face

For anyone interested in programming and professional software development. Here are 5 challenges new software engineers face in consulting.

If you like this article, you can check out my walkthrough of general application development here.

5. Code Fatigue

Professional programmers program….a lot.

As an entry level engineer, I program a minimum of 45 hours per week at my consulting job, and 50 to 60 hours for 1 to 2 weeks per month. With these numbers, my average has been close to 50 hours per week over the past several months.

80% – 90% of my time at work is spent in front of a computer.

It’s numbers like this where actually enjoying to code can help make all the difference…but the fatigue struggle is real.



4. Dealing with random demands

“So tell me again, why are we implementing these requirements as Z-X-Y instead of X-Y-Z??” Because the client wanted it that way.

“So, why are we allowing manual entry of supposedly unique identifiers that should never ever be manually entered?” Because the client wanted it.

Thankfully, the requirements aren’t too difficult, and if necessary we can often give a good reason for why their request should not be implemented.

I’m either laughing or crying when going over new requests.

3. Interpreting Requirements

How you interpret a project’s main requirements is part of what separates the good engineers from the great ones, I’d say.

It’s one thing to take some documents and build what the pages instruct you to build. It’s another to take documents and build what the client actually wanted.

This is one of those things that comes with practice, but if you don’t try to understand it, you may never actually learn the skill. I’m still trying to pick it up myself.

2. Working with Testers

The tester I work with is a great guy. He’s only a few years older than me, very intelligent and is easily one of the hardest workers on the team.

He also drives me insane multiple times a week.

If our tester had been the one bug checking my senior project, it would have taken an extra semester to finish.

The benefit to this, of course, is having your name tied to a high quality product that is proven to be robust…so in the end, we love our testers.

1. Actually Engineering Software

For this last bit, I’d like to give an example of what I wished I had spent more time learning about in college.

Think of an idea (planner app, website with users, anything data driven, etc.), decide on a technology stack to build it (literally any stack will work, don’t listen to critics so much when the end goal is knowledge), and configure your working environment (i.e. download and setup all necessary software on a computer).

This part alone will take several hours, if not a few days.

Then, set up a project schedule and build your idea, one line of code at a time. A smart way of doing this is to rapidly build a working prototype that demonstrates the core ideas of what the overall project should embody. This part should take even experienced coders a week or more.

Once you’re this far, don’t stop. Reiterate on the prototype, finish it, and launch your idea on a public platform. If you’re talented, experienced, and great at managing, you can probably handle all of this in a few weeks. It took me 6 months of tinkering with my first solo app project before finally launching it to the Google Play Store.

If you have accomplished all of the above, congratulations, you’ve shown that you can successfully take an idea and make it a reality. This is what I wish I learned and performed multiple times in college. This is software engineering and what software engineers are working on day in and day out.

Thanks for reading!
Thank you for checking out my blog. I hope this serves as a beacon for soon to be graduates and aspiring programmers.
If you liked what you read, please share and comment to let me know some of the challenges you’ve faced as a new professional in your field.

Posted on

4 Tips on Professional Development That Will Help You Get the Job

 

This list will help anyone and everyone who is diligently searching for a job.

It’s all about who you know, and who knows you! Networking

The importance of networking in order to expand your work opportunities cannot be overstated. Much of the difficulty in this can be getting ideas out of your head that are related to what you are interested in. As a remedy, try and put yourself in a position where opportunity is always one conversation away. Prepare an elevator speech or better yet, a transitional conversation that seems impromptu.  The next time you engage in small talk with a fellow colleague or college student, wait for that inevitable pause and then deliver. A good way to start may sound something like, “…Hey, so do you happen to know anything about xyz?” If the answer is no, then tell him/her about why you asked and why you are enthusiastic. If the answer is yes, follow up with why you asked and why you are enthusiastic. If all goes well, exchange information with him/her and continue growing your network of contacts.

Don’t be afraid to walk the walk…You have what it takes.

“Fake it ‘til you make it” is a popular saying and is very true in most respects. However, never forget that you should always strive to actually become knowledgeable in your field or career path of choice. Know what it takes to at least be a solid candidate when it comes time for the next career fair or hiring season. Be patient, as this will take time. Spending 30 minutes to 2 hours several times a week Googling the tools of your trade (instead of Facebook) will make all the difference over the next 12 -24 months of your life. This way, even if you aren’t a company’s first choice you certainly will not be left in the dust doubting yourself. Understand that you will be great at something one day, and understand that this will take years of dedication. Those years go by one day at a time.




Prepare for interviews!

Never ever just waltz into an interview if you really want the job. Respect yourself, and respect the individual’s perspective of you when in this situation. Research the company online and their purpose. Why are they trying to fill this position? If possible, know the faces and names of the interviewers ahead of time. Interviews are not random events, and you will be questioned the same way everyone else is. Have answers prepared for basic questions, such as “What is a strength/weakness of yours?” and “Can you tell me about a time you were challenged?” I always walk into my interviews with a notebook and will jot down things while the interviewer is speaking. I also come with 3 to 5 questions. I try to do just as much, if not more talking than the interviewer, so long as I sense they are capable of being wooed as such.

Last and absolutely not least…Follow up.

After the interview, either later that day or the next, send the representative of the company you spoke with a thank you email. This really is what professionalism is all about. It shows you are enthusiastic and that you really want the job. More importantly, it shows you are not afraid to engage someone in this manner. This is a regular part of the professional world and engaging in communication via email or otherwise will be a determinative part of the culture. Take charge and show that you are capable.