So here's the thing. Today, I'm the founder of With Madrid and The Shake Shake Company. I also worked for more or less 7 other tech companies before. All of them of various sizes but never big. And there is something that quite stands out all the time: project managers and devs don't speak the same language.
Specifically, PMs have no chance at understanding developers. I think that the best way to sum this up is the obligatory XKCD. While developers know what is going on, PMs don't have a clue why something might be easy or might be incredibly hard. Especially if they're junior, they have to trust developers blindly. While this isn't much of a problem in my companies, probably due to their sizes, I've seen trust issue rising once the team gets bigger.
Anyways, I'm not listing all communication issues between PMs and devs, you all know them and that's not the point of this question. As manager of my companies, I feel like that my PMs would feel a lot more confident if they had an idea of how development works. Of course, actually teaching them how to be a proficient developer is out of question since it takes about a shitload of time and is by no means interesting to them.
Question one: what to cover? Here's a few things that we do
- Work with Python in the back and JS in the front
- Use git flow, to which our testing and deployment process is quite coupled. By that I meant that PMs have to test/make test feature branches before getting them merged. It'd help they understood how Git works (haha, yeah)
- Unfortunately, we have a few WordPress lying around. Still that might make into a simple and practical exercise. Simpler grasping the current JS stack at the very least. Especially since those PMs perform a lot of webmastering on WordPress
Question two: how long per session and how many sessions?
Attempted syllabus (1h-or-so sessions):
- Basic introduction on what an abstract computer looks like from a C program's perspective.
- Copying a few BASIC games. With the line numbers and no actual text editor. In 2018 that sounds stupid but I started there and ended up all right so I still believe it's a good way to start.
- Introduction to networking. How Ethernet, IP, TCP, TLS and HTTP stack on top of each other.
- Demo setup of a simple (physical) web server. The main challenge here is make a demo that doesn't look like pure witchcraft. There is too much ground to cover to explain everything but I feel they really need to understand what the Internet is made of.
- Introduction to CSS, the box model and a few more CSS-y things
- Practical exercise to alter a WordPress theme
Where this fails:
- So. Many. Things. Can it fit? What to cut? So many things will probably feel like intangible magic
- I don't feel that it gives an accurate spectrum of what is possible or not
- Totally skips Git
- I've been in this game for too long to remember any learning path
This is why I'd totally appreciate feedback on similar attempts, critics on this (bad) syllabus or a plain re-orientation towards something totally different. Basically, anything constructive!
Fellow devs, thanks in advance!