Featured, Passion

Intrinsic Motivation and Setting Yourself Apart

Intrinsic motivation. It may not come naturally, but can be by good effort and hard work. John provides us with ways he overcame the software developer’s version of a runner’s wall, and how you can do the same.

So, what does it take to become a software developer? Are you wanting to change your career path and enter the wonderful world of software development? Are you fresh from university, finding it hard to break into this very competitive industry?

Or perhaps, are you struggling to get your foot in the door? Are you unsure of how to acquire that sweet, career empowering experience?

You might hear people say things like the following, as requirements to get into this industry:

  • Passionate
  • Driven
  • Self learning
  • Curiousity

Unfortunately for the lazier crowd, the above are all needed. However, since you’ve clicked on this blog and are reading this post means you are probably not one of them.

Becoming a software developer is not easy, but all is not lost! Unlike other industries, the barrier to entry is incredibly low and most people are entirely capable of climbing over them. All you need is an internet connection and modest computer capable of running Vim. Then passion and self drive to motivate you.

I will let you know what I did to get over the barrier, in order to set yourself apart. This is quite a broad and well trodden topic, so I’ll try to keep the scope of my words to one main concept.

Intrinsic Motivation

This is a common roadmap for new developers to reference on GitHub. Sitting at over 54,000 stars at the time of writing, it seems to be a popular resource many people have set (their starry) eyes on.

The front end track looks pretty intimidating at first.

Look at that thing… how can you possibly learn all of that? Maybe the backend software developer track is a little simpler…

Turns out maybe not.

At least, I initially thought that getting into the tech world would be climbing an insurmountable mountain. Over the past four years, however, I slowly chipped away at the various topics and can comfortably say that I can now… tell you what most of those acronyms stand for.

I suppose a story of how I got into programming would be relevant here. I entered the programming world about four years ago. Before that I would tinker with Linux, VPNs, Bitcoin trading (!) and simple scripts.

As soon as I entered the world of programming. Every waking hour would be consumed with catching up with the state of the industry. That’s after eating and showering are handled (usually).

Outside of work my day would consist of doing some or all of the following things:

  • Attending programming meetups
  • Reading programming blogs
  • Reading programming subreddits (/r/programming, /r/cscareerquestions among others)
  • Reading Hacker News (ALL the comments)
  • Trying out new programming languages that are not part of work (Elm, Elixir, Haskell, Rust, node, C#/dotnetcore, Go, Ruby, Python)
  • Building random apps and websites
  • Trying out all the databases (Mongo, Cayley, Dgraph, levelDB, etc)
  • Trying out all the tooling and services (Docker, Kubernetes, RabbitMQ, etc)
  • Trying out all the platforms (DigitalOcean, AWS, Google Cloud, etc)

After about 1 or 2 years of all this, of all the topics, became familiar to me. Questions on CSCareerQuestions became extremely repetitive. Arguments about functional programming became boring. I guess you know you’re no longer a stranger to the industry when it all becomes so familiar.

My point is that today in tech we live in an amazing time. Someone can come from almost no knowledge to a breadth of knowledge. Enough to be employable, and to add real value to a company that’s looking for junior programmers. All for free.

It takes a certain mindset, when learning the stuff above doesn’t seem like work. It’s a hobby; the curiousity, passion and excitement to learn new things. I chose every free moment doing the above because I wanted to. I didn’t even have my eyes on a prize or end goal. I just wanted to learn and create.

We hire people that love their craft. Who came to be what they are for their enthusiasm to code, with starry-eyed inspiration and passion for the art. Which leads us to…

Unpaid Internships and the Value of Experience

A common thread you might see in programming communities in Reddit and others is the unfair exploitation of unpaid interns. How unpaid interns are literally slaves and that it should be illegal.

On the other hand, we recognise that sometimes its just too hard to get real world work experience, especially if you’re not a young computer science graduate. If you’re someone who has entered the industry without any credentials backing you up its going to be hard. After spending countless hours self teaching, building apps, muscling through tutorials and reading technical blogs you might get stuck at a point where HR wants a degree or work experience. These are the people we want to help.

The Fair Work Ombudsman tightly protects the treatment of unpaid interns and prevents their exploitation.

Ninja Software agrees with the Fair Work Ombudsman. If interns come on in an unpaid position, we make sure it is entirely for their benefit. The interns come in to gain work experience, guidance and benefit from being in a team environment. The length of the program is kept relatively short (and flexible based on mutual agreement), and they do not work on anything that directly or indirectly benefits Ninja Software.

We’ve had two interns come through Ninja Software so far with great success. They were given mentoring covering the Go language, version control, full stack programming, database administration all the way through to deployments to servers. Both have gone on after a few months to junior paid positions, ready to begin their infinite path towards 10x level programmers.

So how did they get in? Its not that hard (honestly!). Initially we have an interview to see if you’re a good fit for the team. We want to see if you have the internal drive that’s needed to succeed in this cruel, cruel world of gatekeepers and silly job requirements. Then we see what your origin story is. We want to learn what drives you.

During interviews we’re always interested in the origin story (warning: TV Tropes link!) of how someone got into programming. Being driven by curiousity, pushing through with stubbornness and finding materials to self learn all represent someone who is intrinsically motivated and will ultimately succeed in the high paced competitive environment that is the software industry.

We look for people who are intrinsically motivated here at Ninja Software. Is that you?

Written by:

John Nguyen

Chief Technology Officer and Co-Founder

John is the Chief Technology Officer of Ninja Software. Managing the day to day operations of the technical team as well as handling long term strategies allows him to apply his broad skillset to both present and future.

He graduated with a Bachelor’s in Mechatronic Engineering at the University of Western Australia in 2008. Starting out in mechanical engineering, he moved to industrial networks and process controls engineering, finally settling on software engineering.

He brings with him solid knowledge and experience with the full software development lifecycle. He also is one of Perth’s leading experts on Blockchain-style solutions. In his spare time he also experiments with distributed systems, countless personal projects and new programming languages and frameworks.