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?
I gave a presentation recently at my company (www.sep.com) on the basics of DI and IoC. On how they are different, how they relate, why you should care, and how you can get started.
There isn't anything here that is new or groundbreaking, but I feel like its a decent intro with a couple decent examples. Let me know what you think!
It was hard. That's for sure. It's by far the toughest decision I've ever made in my life.
When I started at Ontario, I was part of a "rogue" team. We did .NET. We were agile (not Agile proper). We were fast. We cranked out features like you wouldn't believe. We were tall. And we had a blast.
Over the last year and a half or so, my team had completely dwindled for various reasons. Folks looking for better opportunities, more money, or discovering God more deeply and intimately to pursue His Kingdom.
I started to question myself:
- Was I limiting myself?
- Was it my mission to impact the lives of all around me by staying and mentoring and instilling the passion and knowledge I have as an engineer into my colleagues?
- Was it my mission to end my mentorship with my colleagues, since the seed had been planted, and move on to see what kind of impact I could make elsewhere?
- What does God want me to do?
A few unexpected things happened that led me to my decision:
- By happenschance I saw a post on jobs.joelonsoftware.com describing the kind of company I want to work for (www.SEP.com)
- That company happens to be full of folks that went to my alma-mater (Rose-Hulman)
- Matt's Initiate series ultimately sealed the deal for me as I realized I need to continue on, and spread His glory through the use of the talents He has given me.
I have since realized, the importance of me starting my career at Ontario. I learned how to become a software engineer and found my passion via the tallest of my colleagues (yes, that's you Shawn), and I was re-introduced to God.
Working there was truly a blessing. I still have many dear friends there, so if you are one of them, and find yourself reading this, please post a comment of email me!
Wow... that's been a long time coming! It has actually been several months now since that time, and I've had a lot of time to reflect... but I think this sums it up.