I have found myself in a team lead position having to manage/guide recent CS grads. I myself do not have a degree in Computer Science, rather I was working as a programmer to put myself through school while studying linguistics. I'm finding that using my own background to set expectations for junior developers quite problematic. I would like to guide them into developing as programmers, but I'm concerned that I can't quite connect because I have been mainly self-taught from a young age and a lot of things seem obvious to me.
I have been expecting new graduates to know:
- The general practice of using a source control / versioning system (not a specific one)
- Basic database theory - normalization vs. denormalization (pros and cons)
- The software life cycle
- Basic QA theory - blackbox testing, unit tests, builds systems
- Basic OOP principles
- Code formatting best practices (non-specific)
- A knowledge of a few design patterns
- Operating system knowledge - specifically Linux
I consider the above to be the bread and butter of our industry. However, everyone's list will vary.
When I got my start in the industry, I was thrown in the deep end and had to spend many nights studying above and beyond my college homework and my paid hours. Is it reasonable to expect the same level of effort from junior coworkers? Am I just full of it and venting frustration? I can't tell. I just notice a significant disconnect as an entirely self-taught developer. I keep telling myself - "I knew this at their age and I didn't have a degree in CS!" and I wonder if I have some sort of inferiority complex. I wish I had the benchmark of going through a CS degree program, so that I could set more reasonable expectations. Can anyone enlighten me on their experiences guiding juniors into productive members of their teams?
Another worthwhile thing to note is that I'm from the USA and that I'm not in the USA.