IMHO tech skills are 10% talent + 20% engineering common-sense + 20% theoretical knowledge + 50% practical experience. If I've under-estimated any of these, it's most likely (still) the practical experience.
Needless to say - it's not ANY practical experience. Going through tutorials on every possible topic is still something, but to actually learn & improve, you have to challenge yourself:
- to learn something new on regular basis ...
- solve more & more difficult problems ...
- keeping in mind that difficulty has different aspects & dimensions (scalability, performance, maintainability, versatility, ...)
Learning all this on your own may be fun, but ... learning scales well :)
Both learning from (with) peers & someone more experienced.
Devs are like Sith Lords, sort of
- I admire workshop-based meet-ups where people gather to do some hands-on-code tinkering together
- I love idea of hackathons / coderetreats where people compete in teams to beat other teams by both applying their code-fu, intellectual flexibility & smart tactics ;D
- At last but not least - half jokingly half seriously, I used to say that good devs are like Sith - they follow the Rule of Two :)
"Always two there are....no more...no less. A master and an apprentice."
Ok, jokes aside - the point is not that much about number "2", but about the importance of having someone to learn from. This applies to everyone, regardless of seniority. Clearly teacher <-> pupil relation is bi-directional so learning goes both ways, but there's an obvious asymmetry of course.
The doctrine of Alpha Male
And now we're finally where I have intended us to come to - if you've ever been interested in how learning works, you already know that failures may teach us far more than successes:
- they are more memorable as we've suffered the consequences on our own (the pain "has made its imprint" in the consciousness)
- stress & awareness of consequences multiplies our focus
- failure may also reveal full new dimensions of problem (that we will be more eager to think about in future) we were not aware of at all
But ... people do not like speaking about their failures. Especially engineers. Especially males. We still find it a visible sign of our weakness. An insult to our honour & a reason to feel shameful. Leader of the pack should not express any kind of frailness, right?
What about a bit of exhibitionism?
That's why I've decided to come out ;) with my list of shame - during a live-presented session (local meet-up style). As I'm working in software industry since 2001, there are many warstories to share with those willing to listen. And yes, I've screwed up things. Now & then, once in a while. I don't have any problems with admitting that - ratio of good VS bad decisions is still more than soothing & besides that - the only one who doesn't err is the one who does nothing.
But speaking of mistakes ... Some decisions seemed good at some point, but didn't end well. Sometimes it was just a lack of imagination. And I feel ready to talk about them in a 'sprinkling head with ashes' session :)
My idea is basically like that:
- Session will consist of several "warstories". Each of them has happened truly & honestly, no fakes or dev-myths.
- For obvious reasons - stories will be anonymised. No company names, no people names or even initials. All the details that could be used for precise identification will be removed from talks. Let's do it like PROs, no finger-pointing.
- Warstories will belong to two basic types:
- fuck-up warstory -> something went very, very wrong; these are not meant for pure entertainment - there's supposed to be a lesson to be learned as well
- twist warstory -> sometimes something works completely different than it was meant to, but it doesn't mean it has to be a fuck-up; tremendous successes can be great lessons too, especially when they were actually not expected
- These stories are not necessary about me & my direct actions. Sometimes I had major impact & sometimes others did, but in all cases I was somewhere around, able to observe & witness the whole thing.
How does this sound? Not bad at all, isn't it?
Here's the working list of story titles:
- Kmicic in the software house
- NUMA, NUMA, IEI
- How I've invented C++ on Rails
- Plastic surgery for dummies
- Mad Architect, mwahahahaha
- Welder-Driven Development
- Happy Path, Unhappy Path & ... OMG
- Distributed snooze
- GUI, TUI, ..., FSUI ?!
- There are Ants in my Oracle!
More details (incl. exact place & time of the session) will follow soon. Stay sharp, feel free to provide any feedback (on the overall idea) in comments below.
Pic: © chungking - Fotolia.com