I recently finished up a project where there was a small team of people from my company, and small teams from two of our local competitors. My interactions and observations during our ‘full team’ meetings is the context for this post. Please note that I’m not saying me and my teammates were innocent, some of these observations are about us as well. These are simply my opinions.
- Don’t use your mobile during a client meeting… EVER (unless of course your client asks you to). I thought this one was a given, but apparently not (you may as well turn off your ringer, SMS notification, voicemail notification, etc. since we’re on the subject).
- This also goes for your laptop…
- Don’t SMS during a client meeting (assumes you’ve already violated number 1)… especially if the client is speaking directly to you! (seriously, I watched this happen more than once)
- Technical Presentations
- Be prepared
- Have content
- Know your facts... if you don't, that's okay; please don't make something up
- Please oh please do not read me your slides; I know how to read
- Be professional
- Explain yourself, but don’t be condescending
- Use appropriate corporate branding (but don’t go over the top)
- Just because powerpoint has animations, doesn’t mean you have to use them. (I suggest removing ALL animations, transitions, gimmicks, hat-tricks, etc… they all come off to me as amateurish, not professional)
- Be prepared
- Be professional
- Don’t talk over someone else just to get your opinion heard, wait patiently, and then respond.
- Don’t patronize
- Offer opinions, but be willing to be wrong!
- Offer opinions, and be willing to back them up!
- Speak Up!
- Speak clearly
- Speak concisely
- Have a point (i.e. don’t babble on about nothing)
- Listen! Actively!
- Be friendly
This post started out as a comment to How do you stay AND grow?, but it got a little lengthy for a comment so I decided to write a post instead.
The original post, was in response to Uncle Bob's Multi-dimensional Seniority. The following is my response to Daniel:
I think the metaphor of apprentice -> journeyman -> craftsman breaks down a bit when we get to talking about the fact that each is "mentored" under only one. While that is true in the skilled trades world (and mostly holds true in the software world as well, as far as technical mentoring), the software world is so much more than technical talent and ability. I'm sure you've read Peopleware, and are familiar with this idea. That being said, getting exposed to lots of different people over various organizations will up your game in the arena of interpersonal relations (I know it has for me). Now, I'm not saying you can't also grow these skills from within a company (I know I certainly did at my previous employer/Daniel's employer, more than I ever knew myself to be capable), but now that I'm with a totally different set of folks, I'm learning totally different skills, which I don't think would've ever happened had I not changed companies. However, I'd be willing to bet with a sufficiently heterogeneous set of technical teams in a given company, you would be able to achieve the same result. Technical teams will not only differ based on their preferred technology stacks, but each stack usually draws a unique set of interpersonal skills as well (e.g. "The Ruby Community is so helpful and nice to noobs like me!" or "The Java Group are a bunch of haters, and are too good to answer silly beginner questions").
To answer the question of
Can a company foster an environment where its developers get exposed to different technologies, development environments, languages, etc. so they don’t have to leave the company to do that?
I like what Google has done to infuse this learning and growing with their 20% time. 20% time is ALOT of time dedicated solely to learning/growing, but I'll bet you spend about that much time now, or at least somewhere between 10 and 20. We also have a program to take classes at work (real homework, real projects - just like school), taught by your colleagues. Almost invariably, the classes are on technologies/languages that we don't currently use in production.
The last question Daniel poses is interesting.
If a company desperately wanted to do whatever it needed to to keep their developers growing without having to leave the company, what would that company need to do?
I doubt you'll find many, if any even, companies whose goal is to do whatever it takes to keep their developers growing and not leaving. As much as I love the idea of software craftsmanship, I can't imagine myself being the owner of a software shop, and having that be my primary goal. Possibly, I suppose, because I have no problem with packing up and leaving when something better comes along. Don't get me wrong, I have company loyalty, but a number of things usurp that (in my book)... have you read Who Moved My Cheese?
Maybe my real question is why do you (read: y'all) need to stay?