This summer, I interned at an undisclosed software company. Without getting too specific, here’s a basic post mortem of my experience.
Things I Learned
- Things are designed for the lowest common denominator, especially in software.
- There isn’t enough documentation, and often the code is better documentation than the actual documentation.
- Using source annotations to generate documentation for the end user (eg JavaDoc, JsDoc) is often easier than writing the documentation by hand (this only applies to large code bases, however).
- Bugs in your code can be exposed by other people’s bugs.
- The mathematics involved with mapping software is far more complex than it seems.
- The jargon in mapping is complex and overwhelming to beginners
- The same applies to rendering software too.
- Virtual environments in Python are useful, and you should use them.
- Complexity actually is a problem in software.
- What matters is the solution, not necessarily the path to the solution.
- Planning and communicating with teammates goes a long way.
Things I Did
- I built libraries according to my superior’s specifications.
- I read hundreds of pages of documentation for libraries and programs that I had never heard of before.
- Good documentation is often long and verbose.
- The same applies vice-versa.
- I read specifications for protocols and formats to determine the best way to utilize said standard.
- I found solutions to problems I never thought I’d have.
Sometimes I reinvented the wheel so I could have fewer dependencies.
Things that Sucked
Sometimes the room was too cold.
Transporting, serializing, and moving data from one format or library to another without forethought is a mess. Never again.
Asynchronous Python is great if you know what you’re doing; I didn’t know what I was doing for most of the time.
All in all, it was a pretty good experience - I learned quite a bit, and I earned some dough. Not too bad for a college student.