Making Games to Learn Programming with Pico-8

There are a lot of reasons to start making games to learn programming. Games are fun. They are the epitome of creative coding. Unlike to-do apps, games are something you are excited to show to your friend because it is something they will engage with. There is a misconception among some developers that games are difficult to code, and unapproachable to beginner developers. It’s also a great first language in coding for gamers.

I didn’t really get excited about learning to code until I started making games. As a creative coder, games have always been by far the most interesting to me. It’s quite possible I never would have become a software engineer if game development wasn’t one of the applications. As a kid games like Rayman, Zelda, and Donkey Kong filled me with excitement. I remember a feeling of joy when I finished a level or beat a boss that I wanted to shout it from the rooftops. With Pico-8, you will programming simple games, but some of them might remind you of those games from your childhood.

The fact that I have the skills to build games like that myself as an adult fills me with pride. That is because I know the kid I was before would have looked at the adult me with awe. Of course some days I forget about that when I am struggling with a frustrating bug. But at the end of the day it is the main reason I do what I do. We all have an inner child who we want to satisfy, after all.

It is possible today to learn all of the major programming concepts through making games. Although I did not do that myself, I think it would have made my experience much more engaging. My first real foray into programming was in college where I took a few programming classes, and some days it was a real drag.

Pico-8: The Perfect Platform

A year ago a friend showed me a game engine called Pico-8 for making minimalist pixel art games. I initially rolled my eyes at it, because I thought myself sophisticated making games in Unity. I thought that making games with Pico-8 was like advertising to the world that you don’t know what you are doing. Now I couldn’t disagree more.

Every Game is a Pico-8 Tutorial

The first thing that is amazing about Pico-8 is the community. Every one is passionate about learning and sharing, and many members of the community make their own Pico-8 tutorial (s). There is such an incredibly giving and supportive network of folks who participate in the forums. They are also active on Twitter and Discord and beyond. In fact, some users even post Pico-8 code snippets as tweets!

The pico-8 forums are a goldmine

Many software developers believe in open source and sharing their code on GitHub. But in the game development world it’s not so easy to get access to raw code. The AAA world obviously has every line of code concealed behind 10 page NDA agreements. Indie game developers tend to be cautious and perhaps paranoid about people stealing their game.

Thankfully, on Pico-8 that could not be farther from the truth. Every game uploaded to the website allows you to view the code right in the browser, right below the game window. You can copy and paste it right into your own game, no strings attached. That is another reason that makes Pico-8 an exceptionally good option for making games to learn programming.

Simple Coding Language

Pico-8 runs on an easy to understand programming language called Lua. If you’re looking for a Pico-8 tutorial, there are plenty to choose from. In many ways it resembles Python and doesn’t require and pesky semicolons or parentheses all over the place. It reads a lot more like English than a lot of other programming languages do.

Pico-8 also has limitations on the complexity of the logic in the game, which it counts with “tokens.” This forces people to simplify their games and keep the scope reasonable. That is great for beginning programmers. It helps to avoid temptation to code something the long way instead of looking for a solution with fewer lines of code.

Documentation and Tutorials

Programming languages, frameworks, and API’s live and die by their documentation. The quality of the documentation often goes hand in hand with the quality of the community. Since I already wrote about the community, you can probably guess what I will say next.

Just one of the many fanzines you can get on itch.io

I bought a zine on itch.io which breaks down Pico-8 into its different parts. From explaining the user interface walking you through steps to build basic games, it covers a lot of ground. It’s the type of documentation which is not only thorough, but very beginner friendly.

Great Games

You might have similar thoughts to mine when you glance at your first few games on the Pico-8 platform. Certainly they aren’t going to blow you away with their graphics the way that some Unreal Engine games do. But believe it or not, there are some real gems and even best seller games that were made with Pico-8.

The most notable example is Celeste, a critically acclaimed platformer where the original prototype was built with Pico-8 in just four days. Beginning programmers should not expect to make a bestselling game. But it is encouraging to know Pico-8 is a platform where that is possible.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

My Indie Hacker Year In Review

This past year was a big one for me. I got motivated about starting my own business, and making a name for myself as a creative woman coder and indie hacker. This blog was one of the accomplishments from this year. I had to take a few months off to write my book. This year was in many ways the most productive one I’ve had in my career. So let me summarize my indie hacker year in review:

  • Published a book about my journey getting into software development
  • Got that book to #1 most downloaded spot in 3 categories during KDP Select free promotions
  • Started an email list and grew it to 300 subscribers
  • Switched from front end to full stack developer
  • Showed my game at a public event in my city
  • Was waitlisted to show my game at a much larger public event (Super MAGfest)
  • Learned about React, Redux, NodeJS, MySQL, Microservices, Typescript, ES6, and Cypress
  • Grew my Twitter following by 300 users (in the last 2 months!) after letting my account stagnate for several years
  • Had three blog posts featured on the front page of Hackernoon

One of my proudest accomplishments of the year

I didn’t start 2019 with a concrete list of goals. All I knew was that I wanted to do something that involved both being creative and coding. But I can say for sure I did not expect to accomplish this much a year ago. I was feeling the entrepreneurial itch and I knew I wanted to create and sell something. That was pretty much it. I knew that in order for something to sell successfully, I would need some kind of platform.

Blog

That was where my blog came into play. The thing is, I blogged before and always ran into the same problem. My blog wasn’t niche enough, at least that was what other people kept telling me.

It wasn’t until I read a book about multi-passionate people and how they can be true to themselves. I decided launching a blog might be a possibility after all. I realized that I was interested in game development, web development, creative expression, and indie hacking. I thought I could merge all of those interests into a creative coding blog.

Originally the blog was called “Multimedia Minds” and it wasn’t connected to my personal website. Over time I became dissatisfied with the title and thought that merging it with my website made more sense. I already branded myself as a combination of UI and game development, though I think creative coder is much easier to understand and doesn’t involve having to explain to myriad of skills involved in being a UI developer.

Later on I realized could use my blog as a funnel to interest people in my book. Thus far I had written a wide range of posts I thought I ought to focus more for a while on the tech industry. Then my blog would rank higher for programming related content. So for a few months now I’ve been blogging about different cultural aspects about working as a programmer. From attitudes about work-life balance to how engineers get promoted and what kind of problems programmers can face in the workplace.

Book

I wish I had created more hype and setup a preorder page for my book before I released my book. Despite some of my mistakes I’m still satisfied with the progress I made. I’ve learned a lot about Amazon ranking and keywords, as well as how to run giveaways to drum up more interest. I posted my book to a lot of directories that share free books. I was running promotions where I would give my book away for a limited time. That helped with getting downloads. Now I’m very happy to see my book on the first page of results for my focus keyword.

I started growing my e-mail list as part of my planning ahead for when I was going to sell a product. For the first few weeks I actually grew it the most by giving my book away for free. That was, before I enrolled it in the KDP Select program. It helped to get my e-mail list started but after a few weeks interest seemed to dwindle. I wondered if it made more sense to try to sell my book. It’s pretty funny to think that if I hadn’t made that jump I would never have know how successful my book could be. Looking back on that decision really puts things in perspective for me.

Expanding Reach

Twitter was a good place that I knew could work as a funnel for my book as well as a way to extend my reach. I had a Twitter account for years, but it never really took off and I decided to reinvestigate why that might be. I decided to try out two services that I discovered through Product Hunt. They help to schedule tweets in advance by creating content libraries that can cycle through different types of content that you want to share. This has been a lifesaver for me, because its hard to be constantly active on a platform that updates so quickly. The other tool focuses on following people. It chooses people to follow based on the hashtags that they use and the type of content they write about. I don’t expect to use that tool forever, but it’s connected me with a lot of cool new people. It has broken me out of the rut that my Twitter account was in for so long.

My post about UI Developers on Hackernoon’s homepage

I realized that I could get also more reach on my posts if I shared them on other coding related websites. Initially I contributed to Code like a Girl, but later I got ambitious and decided to submit some articles to Hackernoon. Not only did they accept my posts, but they actually featured several of them on the home page. This was really a big boost for me. I no longer doubt my writing skills or that I have something worthwhile to say. So that’s probably one of the biggest wins I had in 2019.

Game Development

That was a lot of talk about my book and my blog. Obviously writing is a big part of my life, but as a multi-passionate person it is far from the only part. The year in game development was not as productive as some of my past years in terms of actually making games. But it was by far the most productive in terms of finding my game developer community. Actually showing my games to real people and getting connected. After years of fear I take the risk and submit my game to some local events. The first one was at a library in my city. It filled me with so much energy and joy. I showed a game that I had worked on by myself, that had very little exposure. People really responded to it and were impressed that I made it by myself, which meant the world to me.

Super Magfest is a huge convention that I love to attend

The next step was to submit my game to bigger events. The biggest event in my area is called Super MAGfest (Music and Games Festival). I figured if my game was accepted to the indie showcase there, I could really feel like a professional. Unfortunately, it was not accepted BUT it was waitlisted which was still a big motivator for me. Especially because the games I submitted were not ones I had toiled over for years. In fact, the one that was waitlisted had taken me less time than the other one I submitted (which was rejected outright).

Day Job

There is still one area of my life I haven’t covered, which is my actual day job. I hope one day to be a full time indie hacker making interesting apps or games for people to enjoy. There is still a lot I’m learning from the startup where I’m currently working. This startup trains everyone as a full stack developer, so I am learning a lot about back end technologies that I did not know. It’s exciting because it fills that gap in my knowledge and means I can really become a one woman development team. It is also a little bit overwhelming considering all the other things I have been working on this year.

So that was a really long post. I wasn’t intending for my indie hacker year in review to be this long but when I started thinking about everything that happened this year, its not surprising. I was going to also write about my goals for 2020 in this post. But considering the length it is already, I think it’s best that I save it for next week. Overall I’m pretty happy with what I have accomplished, and I think I took some really important steps toward actually becoming an entrepreneur. Selling my first product, gaining traction on my blog, and building a social media following are all steps that I feel I have taken. That being said, I know there is still a long road ahead. As a quick preview: building my email list, finding my tribe, and creating a community are all goals I have.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

Working in Tech: Toxic Cultures

I have a confession to make: I was on Twitter over the winter holidays when I should have been spending time with my family. What was the trending topic that caught my eye, you might ask? Last minute Christmas gift ideas? Pictures of pets in Santa hats? No, but I wish I could say it was one of those things. Instead, it was about the toxic workaholism that some folks working in tech idolize.

It started with this:

Pretty harmless, right? Of course tech twitter wasn’t going to let this stand without controversy.

I’m not 100% sure if these were the first tweets to start off the debate about work life balance, but they were major players. The fact that this debate sprung up during the winter holidays. The only significant chunk of time off most Americans get, already says a lot about the toxic work culture we have in this country.

What makes it worse is that people working in tech elevate this capitalist propaganda, glorifying workaholic ism. I’ve encountered many people in the tech industry who share this attitude. They are the last ones to leave the office, and they judge you if you don’t work the standard 9-5 hours. I worked at one company where my coworker was asked by his boss to talk to me about arriving to work earlier. He believed that working later hours was a privilege only seasoned developers ought to have.

At another company I worked at we had an AMA with the CEO and someone asked about working from home. The CEO’s response was “sure you can work from home, but you won’t be working for this company anymore.” Its so common for developers to tout all the unorthodox benefits that working in tech can offer. Often the first benefit that is discussed is work from home, but there are many companies where that is not allowed.

Of course, the above examples are far from the worst ones. In game development working 80+ hour weeks is not uncommon, especially during crunch. It is considered such a privilege to get to work on creative coding projects that developers are expected to be thankful regardless of the crunch. It’s also not uncommon in early stage startups. Consulting is another area where workaholics runs rampant. I had a stint at a consulting company that didn’t last long because I saw my coworkers burning out. They were actually suffering physical symptoms for months on end.

There are plenty of companies who abuse their engineers like I described above. They can get away with this abuse a lot more easily when they brainwash engineers. Brainwash them to perpetuate the belief that working weekends and nights is the way to a successful career.

Some engineers believe that they have to work extra long hours because they are making more money than people in other industries. However engineers are not like lawyers. They do not charge their clients by the hour, so working those long hours does not actual equal more pay. Certainly it’s not fair that teachers and social workers make way less money than software engineers. But working longer hours out of guilt does not do anything to make the situation less fair. It also won’t make the company you are working at appreciate you more. If anything, they will just start taking your extra hard work for granted. But don’t take my word for it… here are some more tweets that say it a lot better:

I’m going to end my post with this tweet from the creator of Ruby on Rails. Here he responds to someone who agreed with Ryan Selkis about working long hours. Except he took it even farther by saying workaholic ism = changing the world. If anything exemplifies the toxicity that is seen when working in tech, it is the hot take of Auren Hoffman.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

Bad Engineers Who Think They are Geniuses

People tend to glorify confidence. In interviews, we tend to think more of the person who expresses themselves loud and bold, with their held head high. This tendency is especially true among Americans, the most obvious evidence being the current President of the United States, Donald Trump. After all, most psychologists agree he is profoundly full of himself. Despite his failures in business and real estate, he continues to believe he is the smartest man on Earth. Unfortunately people like Trump get promoted and the same thing happens with bad engineers. 

Official portrait of President Donald J. Trump, Friday, October 6, 2017. country (Official White House photo by Shealah Craighead) – Our Narcissist in Chief

I wish that the tendency didn’t extend beyond politics, but it does. Entitled, loud, and opinionated engineers get promoted faster than their more subdued peers, regardless of actual skill level. Managers without technical knowledge have no other way to evaluate the skills of these developers. So they end up judging engineers the same way they judge managers.

I’ve seen this first hand in the six different programming jobs I’ve had thus far. It was difficult for me to gain any significant respect in the companies I worked at because I was not outspoken. Being a creative coder has also led to instances where I was underestimated, because sadly some developers still look down on designers and believe that their work is less important. Over the years I’ve learned that I need to open my mouth more and advocate for myself. I’ve gotten better at it, but it still bothers me that silence and creative leanings is mistaken for a lack of competence.

Here’s something I want any manager reading this right now to consider. What if the quiet engineers are not incompetent, or shy, or lack social skills? What if they are just being careful to speak up because they want to verify accuracy? What if they feel intimidated?

When you are starting out as a developer, especially if you are underrepresented in tech, it’s difficult to speak up about things. Even if you know someone is saying something patently false, it’s easy to hesitate about correcting another developer. They might get angry and hold a grudge against you, who knows? Getting the confidence to confront another developer can take months, even years. Some developers never gain that confidence at all, even if they are competent.

Lots of developers have imposter syndrome, especially when they are starting out. They don’t always confront the senior engineers, even if they know they are wrong. (image source)

I’ve had this happen on a number of occasions. The most memorable was when I was discussing a UX issue with a backend developer who tended to dominate all of the conversations. Despite knowing nothing about UX, this developer consistently argued with me about every choice I advocated for. When I pointed to research and specific examples from my classes, this developer would fire back. He argued he saw the UX choice in interfaces that he had personally used (like JIRA – yes, JIRA). It became quite heated on several occasions.

The promotion of loud engineers is a problem because the more those loudmouths get promoted, the more people are afraid to challenge them. Since they were prone to interrupting other developers even before they were promoted, the problem gets a lot worse when their ego grows.

The other problem with promoting such engineers is that it validates a certain communication style. That is one of blurting out the first thing you believe to be correct, without proper investigation. Over confident developers are notorious for jumping to conclusions. If your team sees that the loudmouth engineers are the ones who get promoted, they are more likely to adopt this communication style themselves. Is it helpful to blurt out the first idea that comes to your head? In brainstorming situations, sure. But when you are trying to fix a difficult bug it can derail the problem solving and send the team down the wrong path.

To be clear, I don’t want to sound like I am demonizing anyone who leans toward the chattier side and likes to talk. A team of engineers that over communicate is better than the opposite. The problem lies specifically in the situation where one overzealous and egotistic engineer drowns out the other voices on the team.

Now that the new year has started, it’s the perfect time for companies to reevaluate their promotion strategies and consider fresh approaches. Sometimes quiter developers need a little bit more encouragement. They might not be sure if they can train people or be confident enough to lead a team. That doesn’t mean that they would automatically make a worse leader than the engineer who is always talking.

Is it possible the loud developer who thinks they are a genius will leave the company if they aren’t promoted? Certainly. But the rest of the developers will be grateful, and happier at work. They are more likely to go to the modest leader for questions, and learn more. It will also be easier for them to explain what they are struggling with without feeling stupid.

Maybe you believe your loud software engineer is the next Elon Musk (image source)

There’s one more thing. Maybe you are reading this and going: okay, but what if my loudest engineer really IS a genius? Maybe they have a PhD in physics, or four masters degrees, or they wrote their own game engine and sold it to Bethesda. Even if that is the case, consider deeply if their personality is really good for leadership.

Ask the following questions. Are they the kind of person who is willing to delegate tasks, or do they think they can do everything themselves? Might they become a bottleneck in the future if given too much control? Are they actually good at explaining technical concepts to juniors or do they like to overcomplicate things to make themselves sound smarter?

I know not everyone reading this is going to take my advice. Maybe it’s not practical, and there are too many other problems to deal with. My goal with this article was to highlight why these patterns in promotion are not as great as they might seem at first. Even if only a small fraction reading this actually change their promotion practices, I will feel like it was worth it to write this. As a developer myself, I know that having a positive relationships with my manager and lead engineer makes a world of difference.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

What is a UI Developer?

The world of technology is a complicated one. With titles like “rock star”, “ninja,” it can be hard to take job descriptions seriously. It doesn’t help that many hiring managers ask for ludicrous credentials. Is a UI Developer a real thing? Maybe they have job descriptions like this:

The number of requirements in this job description can be reminiscent of UI Developer jobs
Could you also fly us to the moon?

Job descriptions for UI Developers can look like the one above. Like full stack developers, UI developers are expected to be familiar with more than one area of expertise. While full stack developers know frontend and backend, UI developers are familiar with the front end and how to design user interfaces. In some cases they also know how to conduct user research. I like to call them “creative coders.”

Don’t take the excessive list of requirements seriously. It’s like the hiring manager’s letter to Santa Clause. Don’t do yourself the disservice of not applying because the requirements seem excessive. The person who wrote the job description has nothing to do with the people you will be working with.

I know a lot about being a UI Developer because it has been my title throughout most of my career. When I got my first job with that title I had about a year’s worth of experience with AngularJS. In addition, I had a game portfolio illustrating my programming skills, a certification in Interaction Design, and a bachelors degree in Visual Arts. It might seem like a lot, but I had two years to build my game portfolio and four to complete my degree.. during which I only look about 12 credits worth of actually programming.

There were jobs in which I was doing the work of a UI Developer without the actual title. Tiny startups usually used the title of “Software Engineer.” It didn’t matter to me, because the important part was that I was getting to do the work that I loved. In the long run I worked at a lot of smaller companies. At big companies such positions rarely exist, because hiring managers can afford to hire specialists for everything.

At this point I could rant about how specialists are perceived to have more value than generalists in the American job market. Luckily, Emilie Wapnick discusses that in her TED Talk about multipotentialites with much more eloquence than I could.

This is the outlook many hiring managers have on “generalists” even if its really just a handful of skills like design and front end development. They think that the quality of the work will suffer.

Even though it is less common for large companies to hire UI developers, that doesn’t mean that such positions never crop up. For example, I was hired as a contractor for Deloitte to work on a project that involved customizing an application for an existing client. The application was focused on data visualization and had a number of complex and confusing widgets. They wanted someone with a design and front end skillet to make those widgets simpler.

Downsides to being a UI Developer

Over the years I have noticed some downsides to being a UI developer. The organizations which want to hire a developer with design skills don’t have any dedicated design resources. They also often think of design as an afterthought.

It can be an unspoken assumption that the UI developer will make some small improvements to the design and focus on code. If, in addition to having no design resources, the organization has few front end developers. Some companies even hire a UI Developer that they expect you to be a one person show, coding and designing everything with zero support.

Being a one person show is usually not a whole lot of fun

I don’t recommend taking on roles like that unless you really want a challenge and you like the people at the company. When you are working that hard on a project, it’s easy for resentment to build up. It will build up fast when you know the whole thing would fall apart without your contribution. Make sure you have some experience under your belt and you know what you are getting into.

In lieu of design resources, some organizations allow all of the developers to be involved in deciding what the user interface will look like. If you enter an organization like that, you may find yourself arguing with a lot of other people about every little thing. On one hand it can be invigorating at times to have to defend your reasons for making a button blue. On the other hand some developers do not have any design training,. That means reasoning with their opinion about what they find to be aesthetically pleasing can be frustrating, especially for small adjustments.

If you are considering a career as a UI developer, know that the job descriptions can be intimidating. But they are often a wish list that doesn’t reflect reality. If you enjoy working on a mix of design and coding tasks, it could be a great fit for you. Most companies that offer UI developers roles will be medium to small sized, and often don’t have designers on the team. This can lead to some downsides. Like arguing with other developers about design decisions and having to convince upper management that the design is more than some small tweaks.

If you can get past these downsides, though, I would recommend applying for some UI developer positions. Don’t forget, they can hide beneath other titles. Make sure you read the descriptions before dismissing them.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

Marketing Your Product: My Experience So Far

About a week has gone by since I published “Foot in the Door.” I intended to write a new post last week but there was so much marketing to do that I felt overwhelmed. This online oversaturated world we live in has forced us all to become marketers. We must shout from the digital rooftops in order to be heard above the din. That is usually a necessity for marketing your product, unfortunately.

My original cover, I changed it since then

Selling things has never been my strong suit, in fact I would say it is one of my biggest weaknesses. The only way I have gotten better at it is through slow and painstaking practice. Though I have had a Twitter account for years, I find it difficult to post every day and come up with witty retorts. My biggest successes in the past have always been when I took advantage of a young service or platform and been one of the early adopters.

When the Amazon KDP service was still young and most people thought self-publishing was a terrible idea, I uploaded a few of my short stories for free on the platform. Because there were so few items like that available at the time I received a tremendous number of downloads.

With this book I knew that wasn’t going to be an option. I wanted to work on building a list of subscribers for a newsletter. One where I could share the interesting creative coding content I come across every week. My research indicated that solo-preneurs benefit greatly from having their own email newsletter. Sadly, I had been putting it off for a while.

I also noticed providing free content in a landing page/email subscription being a common strategy across the web. I wanted this book to be accessible to anyone who wanted to learn to code. However, I felt that it would be counterintuitive and unproductive to charge people. Especially because the book is still quite short. I also knew from my past experience that my distribution would be reduced if I charged people for the book.

Though my main lane of distribution would be through my newsletter landing page, I decided a week after launch that it wouldn’t hurt to make a paperback version of my book available through the Amazon store. After all, I could order author copies and organize giveaways. Not to mention, Amazon had far wider reach than me. Might also grow my audience.

Being involved with the Women Make community of creative women in (primarily) tech was immensely helpful. The community helped to support each other during the month long “Just F*cking Ship It” Challenge. It also helped that I had already written a portion of the book a year prior, but lacked the motivation to finish it. Since my marketing skills are less than stellar, having my book included in the final product page when the challenge was over also acted like extra free promotion.

A screenshot from the Just F*cking Ship It Challenge Product Feature Page

Another way I shared my book was on Facebook groups. I found relevant groups related to creative coding, software engineers, learning to code, and women in tech. I wrote a paragraph about the book and shared the link. Then I made sure to tweak that paragraph of text. If it was a group for self-taught programmers, I made sure to mention I was self taught.

There are also several blogging platforms I re-post to, including Dev.to, Medium, and (more recently) Gamasutra. On Medium there are publications like “Code Like a Girl” that I submit to in order to extend my reach. These can be a toss up in terms of how much of the audience ever clicks the link back to my blog and discovers my free book.

Finally I made my first Product Hunt page, which was probably the most nerve wracking part of my marketing process. I love to browse Product Hunt and see all the curious, strange, wacky, and actually really useful and interesting applications makers launch on the platform.

The Product Hunt homepage

I did not end up getting featured on Product Hunt that day. But, I did get more upvotes than I was expecting and even a few followers. Also, Product Hunt gets a lot more visitors per day than my blog. So it’s still a great way to bring more subscribers and have another permanent backlink to book. There is also a search feature on Product Hunt. That means if people are searching for books about learning to code or breaking into the tech industry, they might very well come across mine.

So now for some stats! I believe in sharing data with other makers because that is how we all grow. So far I have 284 subscribers, a number I’m pretty happy with. That’s just 2 weeks after the release of my book. Of those 284, 54% have actually opened and clicked to download my book. I’m less happy with that number. However, I imagine because of filters and robots thats closer to the number of real people wanting to read my book.

A screenshot of my landing page performance from Mailchimp

I’m hoping to raise that number to 500 within the next month. Going to keep posting on social media regularly. Although Facebook gets the most clickbacks, I also share on LinkedIn, Twitter, and even Pinterest. I think so far I underestimated LinkedIn the most. I am happy I decided to give that platform a try.

Hopefully this data will help you as you work on marketing your own product. As makers I believe we should support each other. If you have something interesting to share that you are working on, you should post it in the comments! I look forward to hearing about it. If you want to keep up with what I’m doing, you can follow me on Twitter now @nadyaprimak. If you’re interested in learning more about my book, you can check out an excerpt here.

Foot in the Door Book Excerpt

Below is an excerpt from my book about my journey learning to code and teaching myself after graduating from college with an art degree and little idea of what I was qualified to do next. I had taking some coding classes but I didn’t think I’d get any opportunities to be creative if I chose that career. For a while I thought I would be a designer, but I quickly learned that working with clients was not my cup of tea. That was when I discovered creative coding, and taught myself to code by making games.

There were a lot of people that helped me along the way but also times where I really felt like I could use a guiding hand to help me with some scary decisions. I hope that this book can act as that guiding hand for people who are just starting out their careers and are interested in tech.

Memories

My start in tech happened well before I actually had the title of “Engineer” or “Developer”. It started in a small town known primarily for being home to one of the most liberal (and most hipster) colleges in the country. I had mixed feelings about attending school there and was pressured in part by my parents to apply to schools in Ohio (they were moving there at the time).

Moving to Ohio meant leaving behind my friends and boyfriend (at the time) in Minnesota where I had gone to high school. We settled on Oberlin because it gave the opportunity to study lots of different things. At the time I was passionate about at least a dozen different things and had no idea what I was going to do for a career. Naturally I wanted to put off that decision for as long as possible, hoping I would figure it out during college.

I was always interested in technology, but before starting college (and also during a fair amount of college itself) my leanings were toward art and writing. That’s not to say I didn’t spend a ton of time in front of screens — my unofficial babysitters were my Gameboy, Nintendo, and PC running Windows 2000 —but as a kid my best friend was an extremely talented artist.  Drawing together was one of our favorite past times. I loved to go to museums and could stare at my friend’s art for hours. I also loved to read and wrote numerous short stories in middle school, and wrote for my high school paper. 

Basically, I was a creative generalist and loved all things that involved the imagination. However, my parents kept pushing me toward a practical path, because they were still struggling with their own careers and worried about employment options for creatives  in the USA. Of course they were right to worry, since very few artists succeeded in getting their work into a gallery, let alone selling that work for enough money to make a living. However, I learned in my late teens that there was another option- which sounded much more practical than being a writer or an artist. It was an area of overlap between art and the internet, and it was called web design. 

Technically I began learning to code a lot earlier than college, though I didn’t know it yet. I dabbled in web design during middle school and high school, when I participated in roleplaying forums and later decided to create my own which had a very generic look that I wanted to modify. Essentially it was just a monochrome colored forum with no background images or icons, and I wanted the forum to look like it was part of the website where I described the world the roleplay took place in. I wanted the design to fit the mood of the world. 

Essentially I was using CSS to make these changes. Unfortunately it was back when there was no such thing as developer tools (which would allow you to see the CSS alongside the site and actually make modifications to see the visual changes in real time) and no documentation. So the level of frustration accompanied with something as benign as altering the background color was shockingly time consuming. Despite all that,  I enjoyed the challenge and it was fun and rewarding to see my websites come to life. 

By the time I was starting college  I was thinking web design was a pretty likely career option. Then I found out that Oberlin does not actually have a design degree. What it did have was a creative writing degree,  one of the best undergraduate creative writing programs in the country. If I had known that my future would be pretty much solely focused on web development, I probably would not have given Oberlin another glance. 

Though I knew art was probably not much of a viable career, I thought maybe if I got into the creative writing program I could become a successful writer. All thoughts of design and technology basically went out the window at this point. There was still a part of me that hoped to become a bestselling author, and that snowflake wasn’t going to melt so easily.  I suppose the snowflake never fully melted, since I am writing this book.

It took a number of events in college for me to revisit web design. The first was that I was never accepted into the creative writing program, the second was the economic recession which happened while I was at Oberlin, and the third was breaking up with my long distance boyfriend, who had a tendency to put down my technical skills because he was insecure about his own. 

Even as I continued to take art and design classes, I began to wonder if it was the right path for me. I enjoyed aspects of it, such as the strategic thinking that was necessary to identify audience and tone. But the 2D limitations of the medium frustrated me, and my classmates and professors who were more interested in conceptual work didn’t always mesh with my desire to master craft. 

I wondered if I could do more with design if I started learning how to code. I also wondered if a career in design was going to be sufficient to make a living wage. Hearing from friends and acquaintances that they couldn’t find a job didn’t help. The future was starting to look a lot scarier than it had before. It seemed that technology was a major threat to many other fields. Though I had never doubted this before, when I looked at designer portfolios online I could hardly find any that were made by beginners. I was extremely intimidated by the senior design portfolios that I came across, and wasn’t sure that I would have what it took to compete. I even considered transferring to another school.  

It wasn’t until I got a job working for the Oberlin Office of Communications that some of my fear about post college life was assuaged.  If you are in college or soon to be starting college, I highly recommend that you also find some sort of part time employment. I did all sorts of things and learned a lot about myself in the process, possibly more than I learned from all the classes I took combined. 

I did some freelance work as a graphic designer, and this taught me how to work with people in different age groups and what it was like being in a client-contractor relationship. It also showed me that freelance work involved being very good at navigating different personalities and clearing up any confusion, while also putting your foot down repeatedly. In addition there was the age old mantra: the customer (or client) is always right. That meant that even if I knew a design decision might turn out to look poorly, I often had to make compromises for the sake of pleasing the client. It also meant that sometimes I might have to change something I was really proud of because the client didn’t like it. 

Here is a list of some of the other jobs I took while  in college: obituary writer, photographer, interviewer, dance instructor, and archives assistant. I hope this helps to illustrate that people come into tech from all sorts of backgrounds, and there is not one clear cut path. I’ve met women who used to be social workers, physical therapists, filmmakers, and everything in between.

Takeaways

Not everyone who enters programming goes to college. I went to college, but much of what I learned there did not directly apply to my future career. Non traditional students come from all sorts of backgrounds, and by talking about my degree I am not trying to imply that it is necessary to get a job as a developer. In fact, it is not necessary at all. 

What is necessary, however, is a passion for learning. That is the main thing I got out of college, and the main thing that I think is important to understand for those thinking about entering the field. In front end development especially, there is a new framework to learn every couple of years. So feeling comfortable with learning to code and not hesitating to ask questions when you have them are crucial skills.

There are many ways to practice learning how to learn. As a non traditional developer, you will probably end up teaching yourself a lot of the skills to get your first job. It’s important to know what techniques help you learn best. I learned in college that it’s easier for me to master new information when I can translate it visually. In the absence of that, I learn better if I am writing my own notes as the teacher is talking, especially if I translate it into my own words.

Another important thing I learned in college was time management. Especially during my programming classes, which I talk about in the next chapter, I had to get pretty good at estimating how long the homework would take me, and stay disciplined on the weekends to get it done.

I don’t know if I would have had the discipline to get through my classes without the support of my professors. That is the nice thing about college: you get in-person mentorship and structure to get through your work. But there are plenty of students in college who spend their time at parties, neglecting their assignments, and simply failing to pass their classes. So obviously college is not the answer for everyone. It’s also very expensive, especially in the case of liberal arts colleges like Oberlin. 

What I’m trying to say is that it’s important to get those basic skills and knowledge about yourself and how you want to approach learning to code before you sink in to any serious programming training–especially if you are considering something like a boot camp where you have to stay dedicated to your work for three months straight, with longer hours than your standard 9-5. Picking the right courses and learning approach is crucial, as my next story will hopefully illustrate. 

My own husband experienced the problem of taking the wrong course for his learning style and sadly, never gave programming another chance since. He graduated with a degree in history and was feeling lost after college, not knowing what career to pursue. He took some classes in psychology in Cleveland and volunteered with Spanish-speaking immigrants at an organization downtown. I suggested that he try learning to code, because I knew he was determined and hard working enough (he now works as an attorney and graduated from Georgetown Law University). 

I regret that I encouraged my husband to take the course without taking a more careful look at the content. The biggest problem was that the course switched gears dramatically halfway through, from teaching C to teaching Javascript, two completely different languages. For someone like my husband, who dislikes sudden shifts in general, this was devastating. He began to believe that learning to code was beyond him.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.


How I Shared My Project with the Indie Game Community

Last weekend I checked another item off my bucket list: sharing a game at a local development event. The event was District Arcade in Silver Spring, Maryland, and the game was one I talked about in a previous post: Grand Canyon Adventure. It has convinced me that if you are a game developer, you can share your work with the indie game community by submitting your game to local events.

The submission process was easy enough: just fill out a google form with links to some screenshots, a brief explanation of the game, and of course a way to actually download and play the game. So why hadn’t I done it sooner? I had made at least a dozen games, if not more, but I had never taken even the first step to show my game in front of actual human beings.

I think the reason I avoided showing my game was the same reason many of us avoid doing things that involve putting our work out there. We fear rejection, we fear being made a fool of in public, and we fear that we will be faced with terrible truth. That we will never reach our dream. I taught myself to code by making games, but I never had a full time job as a game developer so I didn’t really believe in myself. I identified as a creative coder more than an indie game developer.

There is a choice each of us makes regarding our dreams. We either keep our them in a glass cage and never touch or tamper with it, and admire it like a beautiful statue from afar. Or we take the dream in our hands and carry it with us every day, no matter what dangers it might face out there.

I don’t want to wax too much poetic in here, but I can say I am glad that I took that dream in my hands. Even though I feared the worst, sharing my game at a public event actually turned out a lot better than I could have hoped. But first, let’s talk about the experience itself.

When my game was accepted I was both excited and nervous. I was excited that my game was accepted, but nervous because of all the what if’s in my head. What if nobody played my game? Making things worse, I couldn’t present my VR bowling game because there wasn’t enough space. Which meant I would have to present my other game: an educational one. I didn’t imagine many people wanted to use their brains on the weekend. Especially when there were plenty of mindless games available to play. Finally I was a female indie solo game developer, and I didn’t have any banners or stickers. With no swag to hand out could I still impress our visitors?

The first kid who sat down to play my game ran away blushing when he got his first question (my game includes a quiz about erosion) wrong. That didn’t bode well. Then more people started filtering in, and slowly things started getting better. I arrived at the event around 11 AM and barely had time to blink before it was 2 PM. People of all ages checked out my game, from teenagers to kids to adults and even some elderly folks.

I was taken aback by how respectful everyone was. Also how impressed they were when I mentioned that I made the game myself. When I shared my game online it was a completely difference experience. Under the mask of anonymity people had no fear of criticizing my games and providing very unhelpful negative feedback.

Of course there was still some negative feedback. But with the number of people coming through I could easily filter out the useful from the useless. If I heard the same negative feedback several times I knew it was probably something I should fix. Unlike the negative feedback I received online, the negative feedback in person was not nearly as demotivating. It was just a drop in the bucket compared to the positive. Feedback was also delivered in a much more constructive manner.

Since sharing my game at my local indie game community event I feel much more motivated and confident about my work. I’ve realized game development is a type of creative coding, so I’m not writing myself off anymore. I made connections with other developers. Now I feel like there is an actual community out there that cares about what I am doing. Those of us developers making games on our own really need this. We don’t have a lot of people to share our stuff with. Submitting our games to the local indie game community is the best thing we can possibly do.

I hope you take my advice and submit your game to a local event! If you’re wondering where to start finding local game showcases and events, start by checking out your local chapter of IGDA or searching meetups.com. If you want to read more about the game I featured at the event, there is an older post I wrote on the subject here.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

Being a programmer vs a game developer. How much money is passion worth?

A week or so ago there was a thread on Twitter that caught my eye. It was a tweet asking people what they would pick: a job making 50K per year that they love or a job making 100K that they hate? Working for money versus passion is often the central question many people face in their career.

It was interesting to see the range of responses. I was expecting it to be a pretty mixed bag, but from scrolling through for a while a lot of people said they would choose making 50K per year at the job they love.

Maybe because I am jaded, or maybe because I live in a big city where programmer salaries start at 80K and the average 1 bedroom apartment costs 2K, but I was surprised at how enthusiastically and unflinchingly people said they would choose the 50K option.

As I mentioned in my last post, I started a new job recently. When I am in this state of transition, I always find myself considering my choices up until now in my career. Especially whether I am still happy with the path I am going down.

Usually what I end up wondering about the most is if I made the right choice avoiding game developer positions. Granted, even if I had applied to them, there was no guarantee I would get them. But I often didn’t even look very hard. It felt like I was almost deliberately denying my dream. Picking the cold and calculating approach to my career that made me feel like something akin to a career grinch. To be fair, I have been making games in my free time (which I talk about here and here), but it is not the same.

One reason I felt like I had to sacrifice my creative dreams was because I was born to immigrant parents who fought tooth and nail for everything they got in the United States. My mom especially ingrained in me a belief that money was really hard to get, and that pursuing my passion might leave me penniless and starving on a street corner.

Following your passion was risky business, and taking risks was dangerous (it didn’t help that I was an only child). To those of you who don’t have immigrant parents (or siblings) this might seem a bit extreme. Thing is, they were born in Soviet Russia where clementines were considered a spectacular Christmas gift. So a little bit of imagination is required.

I did see some that shared my cautious attitude about pursuing my passion in the twitter thread.

https://twitter.com/oscargodson/status/1174503654809731072

So did all these tweets change my mind about whether I made the right decision? Is there an answer to which one wins over in the working for money versus passion debate. Was I right to choose web development instead of game development? I wish I could offer a yes or no answer. Unfortunately, as some people also pointed out in their responses, the question is rarely so black and white. My greatest fear about taking a game development job was that I could end up taking a pay cut and also hating my job.

I wrote about what it is like for women in the game development industry in another post. From sexism to harassment, and even rape, there is a frightening amount of horrors women in the game industry experience. Naturally, I feared facing these same kind of experiences myself. To make things worse, if I didn’t like my game development job and then tried to go back to web development? I might never make the money I was making before.

To be clear, I always was seeking out creative coding opportunities, but those types of jobs were tricky to find and game development felt like the most creative option by a long shot. In my head, a game development job would be the dream. But in reality who knows what it would be really like? It’s hard to say whether a job will be one you love or hate until some time has passed. It’s also hard not to chase your dream when you’ve been raised your whole life to do that exact thing. My parents tried to implant a practical attitude. But I still got the same treatment at school as any other millennial. Teachers encouraged me to dream big and never give up. So naturally, it’s still hard to let go of the idea of being a game developer.

I am certain this is not a dilemma I face alone. Many people go into programming as a career from lower paying fields. I met a woman once at a meetup who wanted to get into coding because she was burnt out as a social service worker. I also have a friend who was a professional artist and became a programmer so they didn’t have to worry about paying their bills. There are many others like her who work in rewarding but taxing jobs that eventually become intolerable. Did they love the job when they started out and begin to hate it later? Maybe they didn’t realize how unpleasant the job might become until later. Or they told themselves they loved helping people, and that helping people should be their passion.

At the end of this post, it seems I don’t really have an answer to the question in my title. It’s almost impossible to put a dollar sign on passion. Not just because thats a good quote to put on an inspirational poster. It’s hard because our imagination is not the same as reality. A job involves more than just doing something you are passionate about. It involves coworkers you may or may not get along with. Benefits that may or may not be good, among other things. Bosses who may or may not see where you’re coming from. And you won’t know all of those things until you take that risk. For now I’ve taken the safer road and worked as a creative coder in my free time, but perhaps in the future I will change my mind.

Would you take the 50K job you love or the 100K job you hate? What does working for money versus passion mean to you as a tech worker? Feel free to leave a comment with your thoughts! I also highly recommend checking out the original thread on Twitter, or join in the discussion yourself.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.

How I’m Overcoming Anxiety After Starting a New Job

I am writing this after starting new job just last week that gave me the worst anxiety I’ve had since I first started working as a software engineer. To be clear, it had nothing to do with the job itself or how anyone treated me. In fact, I was pretty surprised to feel imposter syndrome at all because I’ve had a lot of different jobs in the past four years and have been pretty good at transitioning. Let me provide some context before I dig into what helped me overcome this syndrome.

In that first week the logical part of me knew that how I’m feeling is silly because I’ve proven myself many times and worked in multiple challenging environments. Still, the emotional part of me has not caught up yet. My first real coding job was at a startup that was growing rapidly but since then I’ve worked in more corporate environments where work was done at a slower pace and the stack was less than modern. That made my new environment seem more intimidating, which triggered feelings of insecurity. Of course, the other big cause of my imposter syndrome was my own lack of confidence, stemming from some negative experiences I had in the past.

In my first tech job I learned AngularJS, and there were plenty of other jobs available using that framework that I could apply for. Naturally, I did just that – and ended up with several years in a row of pure Angular experience. In retrospect, this was perhaps a more questionable decision, which I discuss in another blog post. Over the past few years I settled down into a role as a front end developer, leaning toward positions where I could find a creative coding niche. I had some interest in learning back-end or other areas of technology, but I was afraid of veering away from my strength (since I started out as a designer with a bachelor’s degree in visual arts, front end was easier than back end). What I didn’t know at the time was that front end developers and designers are sometimes looked down on by full stack and back end developers.

My non-traditional background combined with being a woman in tech were two of the reasons for my negative experiences in the past that led to my imposter syndrome. Often I felt like these things were counted against me the second I walked through the door. That is another reason why, for years I was applying for jobs with AngularJS. It felt like the safest and most secure path, because I knew that framework already and it was hard enough to prove myself without extra burdens. This is something I believe a lot of women and non-traditional programmers experience, and what holds many of us back.

Basically, we learn a technology stack when we enter the tech industry and stick to it because with every new job it already feels like we have an uphill battle to prove ourselves. Sometimes that means taking an extra coding test, because the hiring manager “just wants to be sure” you can handle it. Other times it might mean accepting a mid-level role when you applied for a senior one. Why add more stress and risk failure when it feels like the deck is already stacked against you? It is a big risk too, especially if you are the breadwinner in your family (as I was for three years while my husband was in law school). It also makes the new job imposter syndrome more intense.

A lot goes into the decision of accepting a new job, including the work environment, the coworkers, the location, and other factors. I think for underrepresented folks in tech we often feel the worst imposter syndrome when we are in a job that intimidates us, which sucks because that is also the kind of job where we grow the most. Even if we receive positive signals from our coworkers we might still feel insecure and insufficient. Maybe I decided to take the risk now because a subconscious part of me was aware that my husband was going to start working soon and therefore I could afford taking on a more intimidating job, because even if I failed I still had a financial safety net that didn’t exist before. All I can say for sure is that I’m here now, and that I’m glad I didn’t shy away from the challenge.

I want other women and underrepresented folks as well as nontraditional techies to also be willing to take on an intimidating job without fear, so I’m hoping I can offer some useful advice. One thing that has really helped me with imposter syndrome is reminding myself of everything that I have accomplished. It might seem cheesy, but making a master list of every cool thing you’ve ever done is a great confidence booster. I also think this is a great thing to do because while you can try to downplay your accomplishments, you can’t say you didn’t do the things that you did. These projects are completed, they’re in your portfolio, and they are part of your history.

The idea that our thoughts trigger our behavior and emotions is an important part of Cognitive Behavioral Therapy, and can be applied to imposter syndrome.

Another useful thing you can try is a technique commonly used in cognitive behavioral therapy. Start by making a two-column chart. Then list all of your negative thoughts about yourself on the left-hand side. Specifically, the ones related to work. An example might be “my coworkers gave me a ton of negative feedback on my last code review so they probably think I’m an idiot.”

After you’ve listed your most negative thoughts, try to challenge them on the right-hand side. If you’re thinking “well they are all reasonable thoughts so I can’t challenge them,” then I suggest for you to take a look at a list of common thought distortions.  In the one listed above, a thought distortion known as “mind reading” is being used. That is because in the example, the person is assuming that all of their coworkers think they are idiots. The problem with this line of thinking is that this person cannot possibly know what their coworkers are thinking, because that would be mind reading. So, that is something the person could write on the right-hand column.

Some more examples of mind reading. These are common for those experiencing new job imposter syndrome

One last thing that I recommend is searching “imposter syndrome” on Twitter. If you’re not on Twitter, I recommend getting an account, even if it’s just to follow other developers. It’s a quick and easy source for tech news, quick tips, and advice from experts. If you search “imposter syndrome” you will see that there are tons of people tweeting about imposter syndrome all the time and their experiences with it. Many of the people who experience imposter syndrome are accomplished and impressive professionals. They have no reason to feel the way they do. Hopefully that will help you see that imposter syndrome is not a reflection of who you are or how good you are at your job.

I know these are just three pieces of advice and there is much more I could say about this topic, but for now I am going to wrap up this post.. I do want to leave you with a book recommendation if you found the charting exercise helpful. It has many useful exercises and assessments, though it is more focused on anxiety and depression than specifically imposter syndrome. It’s called Feeling Good by David D Burns and its one of the best self-help books I’ve ever read. I hope you will feel less new job imposter syndrome after trying out some of these techniques.

If you enjoyed this article, consider following me on Twitter @nadyaprimak or if you need more tips on breaking into the tech industry, you can read my book “Foot in the Door”.