Update 20 Feb 2012: We are currently seeking at least one intern to start working sometime after March 1st, this year, and before July 1st to work on a project that will take 4-8 weeks depending on experience. Please email firstname.lastname@example.org if you want to apply and be sure to include ‘internship’ in the subject line of your email.
We do, occasionally, have programming internship opportunities. We try to structure these so you have a chance to produce a new, simple phone app or a new, significantly enhanced version of one of our existing apps — that is, you have a chance to take a product or a version from concept to publication.
These are paid, not unpaid, internships but think “workstudy” not “Google entry level.” Most of our interns have worked remotely but if you live within driving distance of Sheridan, Wyoming, we would love to see you in the offices once in a while. Most of our interns, so far, have been high school or college students but ‘non-trads’ — folks returning to the work force after a time a way, folks looking for new opportunities in mid-life — are highly encouraged to apply.
What are the prerequisites for being a successful SPG programming intern?
- A solid work ethic and ability to manage your own time and commitments. We are awful at supervising and have no intention of improving our skills in this area. If you need someone to watch over you, tell you what to do next, and whether you are working hard enough or not, please look elsewhere.
- A drive to learn and understand. Programming is a profession where you essentially get a license to learn for a living. But not learn just anything you want — it is always learning directed towards achieving the goals of your employers or customers. “Seek first to understand, then to be understood.” — Covey
- Solid written communications skills. Programming is ALL about communications and remote programming requires a lot of email and documentation. Edsger Dijkstra, despite being one of the most mathematical of the early computational theorists, wrote: “Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer.” This doesn’t mean you need the skills to write the Great American Novel. It does mean that you can pound out a concise, three paragraph email that coherently describes a problem and your proposed solution or a new feature and what its benefits would be.
- You do, also need to have a minimum level of technical and programming competence. We’ve been going around and around about how to describe this in a way that is relatively easy to understand but doesn’t discourage people from applying who should do so. Some of us run Windows, some Linux, some both, so we don’t really care what OS you use for development. Our Android phone app tool stack is Java/Android SDK/Eclipse with a Mercurial/Bitbucket source code control back end. But we may have projects for other platforms using other tool stacks, so the important skill is to be able to get the tools installed and running in a reasonable amount of time, then be able to use the ‘net, documentation, and books to get up to speed on a specific project. And, of course, you definitely need to have some solid programming experience, either a fair amount of experience with Java or already know at least two other languages and feel confident about being able to pick up a third. Here are some other ways to express this requirement:
- If you’ve been able to get up to speed and contribute to an Open Source development project (download and install the tools, find a bug and fix it or implement a small new feature, and get your code accepted by the project maintainers for inclusion in the next release), then we’d just need to think about Java and the Android SDK and if that transition is going work for you.
- Take some language you don’t yet know, say Python or Ruby. Can you find and download from the ‘net all the tools you need to be able to write a program in that language, get them installed on you own system, and generate at least a Hello, World app in an evening or so? Getting up to speed with our tool stack is likely to be more complicated but we would also provide you with some pretty specific instructions on where to download, what versions to get, etc.
If you approach us for an internship, we’ll deal with the first three bullets in the traditional way: look at your resume or transcript, go back and forth in email, maybe have a phone call, and check references.
To figure out if you have the right level of technical competence, we will give you a practical exercise to go through. This will usually involve installing the appropriate tool stack and either producing an ‘hello, world’ app to our specifications or modifying some pre-existing code we give you. If the exercise takes you more than an evening or two to get through, then our internship is probably not right for you, yet.
If you are offered an internship, you will be expected to sign our standard consulting contract, which establishes you as a consultant, not an employee, and outlines the rules for things like confidentiality (what you do for us and our customers is our business and no one else’s) and intellectual property (the code you write for us belongs to us).