Programming Internships

Whether you're interested in game development, language processing, algorithms and efficiency, multimedia, GUI, or software design, an internship at MousePaw Media will stretch your limits and offer a chance to grow as a programmer.

We are currently accepting applications for this internship! Check out the details below, and then tap the << button at far right to learn how to apply. see the sidebar for instructions on how to apply.

Learning Goals

The purpose of the MousePaw Media Programming Internship is to cultivate the skills and character traits required to succeed as a professional in the computer science industry.

  1. Learn techniques and practices for effective software project management.
  2. Build communication skills through collaboration with co-workers and outside contributors.
  3. Learn how to effectively curate an open source software project.
  4. Expand technical skills through research and on-the-job practice.
  5. Learn principles of designing software for others.

Requirements

In addition to the general requirements, applicants should be able to meet the following criteria:

  • Working proficiency with one or more programming languages.
  • Fluency with fundamental computer programming principles (variables, conditionals, etc.)
  • Familiar with the fundamentals of at least ONE of the following:
    • Object Oriented Programming
    • Generic Programming
    • Functional Programming

Programming Internship Questions

(Click a question to view the answer.)

What will I be coding?

It depends on your specific talents and interests as a programmer. We have two major projects right now, and dozens of diverse tasks therein.

What languages do you use?

We do most of our programming in C++ and Python, with some C and Bash. We also use HTML, CSS, and occasional PHP.

Will you consider me if I use [INSERT LANGUAGE]?

Yes, as long as you're willing to learn something new. Several of our interns used only Java prior to coming aboard.

What technology do you use?

All our work takes place on Debian-based Linux (i.e. Ubuntu, Linux Mint, Debian, etc.) We use the Clang compiler for C and C++. Our technology stack and tools are all 100% open source software. You can find a complete list of technologies here.

What kind of computer and equipment do I need?

Programming interns must have private, administrator access to a computer with the following minimum specifications.

  • Debian-based Linux (at minimum, based on Debian Jessie or Ubuntu 16.04). We can help with setup.
  • RAM: 4GB minimum, 8GB or more recommended.
  • Processor: 2GHz speed or better.
  • Hard Drive: 250GB free space minimum (or 200GB minimum after Linux installation.)
  • Display: 1024x768 minimum.
  • Reliable high-speed internet connection.
  • Webcam.
  • Microphone.

I don't like Linux. Can I just use [INSERT OS]?

No. We have many reasons for using Linux as our development environment, compatibility being a big one. It is also a vital industry skill to be able to use Linux. In short, it is mandatory.

Why don't we use [insert technology here]?

We have carefully selected each of our technologies, based on multiple criteria. While we are not closed to suggestions, be aware that we've already considered most popular technological options.

What if I don't know programming yet?

There are a lot of fantastic books and online courses to teach you the basics of programming, and thousands of open source projects with which to get your feet wet! Once you have the basics down, come talk to us.

The Joel Test

(Click a question to view the answer.)

Do you use source control?

Yes. We have a full Git repository system, with pre- and post-commit code review tools and linters via a platform called Phabricator.

Can you make a build in one step?

Yes. Our code projects use CMake and Makefiles to allow building with one command.

Do you make daily builds?

Yes. Every time code is committed for the mandatory pre-commit review, it is automatically built by Jenkins.

Do you have a bug database?

Yes. Our task list has an integrated bug database, and that in turn links to all the code review tools. It's a beautiful thing.

Do you fix bugs before writing new code?

Yes, as much as is sane. There is no such thing as "perfect code," but it has to be stable and work well before we add to it.

Do you have an up-to-date schedule?

Yes. We try to keep our task list carefully maintained and prioritized, and it has a number of tools for scheduling tasks in a programmer-friendly sort of way.

Do you have a spec?

Yes. We have a wiki that hosts as our specs, which means that we can continually revise as we learn. Our specs are living documents - as we garner the necessary information to make informed decisions, we update and expand.

Do programmers have quiet working conditions?

Yes, in that everyone works primarily from home.

Do you use the best tools money can buy?

Yes. We carefully selected the best that open-source software has to offer for development. These tools include Git, Phabricator, and Jenkins. We've also used the expensive stuff enough to know that it doesn't hold a candle to what we've got.

Do you have testers?

Yes. First, we have a carefully curated test system. Jenkins automatically runs many tests on code sent for pre-commit review. Further tests can be run manually by developers. In addition, our games go through rigorous testing before final release.

Do new candidates write code during their interview?

Yup. You'd like to know more, wouldn't you? Heh.

Do you do hallway usability testing?

Yes. Our team has a very good time trying to break one another's code. That's the best way to test!

More questions?

We're here to help! Contact us at and we'll happily answer any questions you have.

Ready To Apply?

We are currently accepting applications for this internship! Tap the << button at far right to learn how to apply. See the sidebar for instructions on how to apply.