Monday, May 28, 2012

Get Yourself a Mentor

I have talked to lots of people in Corporate IT shops, and a lot of the concerns people voice are similar.  Times are tough, they're trapped in cost centers, asked to do more with less, don't get the training they way, and so on.  Last time I reminded people that they are in charge of their future.

Note, I'm not advocating that people leave their jobs right now, but I am advocating something that the TechCrunch article points out, that there is no corporate loyalty towards employees.  How old are you right now?  20's?  30's?  40's?  If so, you've still got quite a long while to go before retirement.  What's the likelihood you're going to retire from your current employer?  Pretty close to zero if you're in a tech job and planning to stay in a tech job.  New technology, changing market conditions, need for cheaper, less experienced workers will all work against you.

This time, I want to call out one specific thing you can do to help yourself beyond what I was suggesting earlier.

Find yourself a mentor.

I've been very lucky in my career to have had lots of individuals I can look up to and ask candid questions of without fear for my continued employment, and I urge you to find someone similar in your life.  You need somewhere you can speak freely about job advancement, skills that really matter,

Here are a couple suggestions of where you might look

  • Talk to your boss.  Just like we don't choose our parents, we rarely get to choose our "organizational parents and ancestors".  You sometimes get to have some comment in your boss or grandboss, but rarely.  And because they're not interviewing with you, you frequently end up with someone who wouldn't be your first choice to work with.  But don't write them off.  They may be a great resource, especially if they're an honest and good manager.  Ask them their back story.  If they came from your position in another company, ask them what it took for them to get there.
  • Look in your business units.  It's great to forge a relationship with someone who's not in IT that is in a position above yours in the org chart, but not in your organizational ancestry.  That kind of relationship has some side benefits beyond just being able to ask for career growth advice.  This kind of cross-departmental relationship is often very healthy in an otherwise siloed business.
  • Look to supervisors from old companies.  They know who you are.  They know your skills, probably better than you.  They might be able to suggest career choices that you might find interesting based on other folks who have been through their ranks.  Sometimes the fact that you no longer work for them allows them to talk about your possibilities and capabilities more freely.
  • Look to colleagues from old companies.  We're all in different places in our lives at different times.  That colleague that was a peer in a previous company might have had a little more time and motivation and pushed up a level or changed jobs while you were at a gig where your job or skills weren't highest priority in your life.  Talk to them about what they did, what they've done since. Talk to them about what they found most beneficial in their quest to massage their careers.
  • Look to your heroes in the industry.  Ask what they look for in a colleague.  Ask what they think is most relevant.  With lots of folks on twitter these days, people you look up to are just a few clicks away.  Better yet, if you want to work like those people, offer to work with those people.  On an open source project that they've started, for example.  Or better yet, try to get employed at the same place they are.  
I guess that last one is pretty near and dear to my heart.  I do believe that when you're working in Corporate IT, maybe not feeling appreciated, maybe not feeling connected to your industry, you should at least enjoy the people around you.  Frequently it's the time with them that make it all worthwhile.  Find a place that has people that thinks the way you want to   

We do have openings where I work, for example.  If you like what I have to say, you might consider sending me a message.  We have great openings now for .NET developers and analysts in the west Chicago burbs.  You can contact me via the info at kevinpdavis.com.  If nothing else, I love having the conversation.

Wednesday, May 16, 2012

You Are in Charge of Your Future

Where do you work?  Are you working for a software development company?  Are you working directly on the product that's making your company money?  If so, great!  You may have a rocking development machine.  You may get sent to conferences to network with your peers.  You may get sent to training on the latest technologies.  You may even have lots of dev tools and libraries at your disposal.

This post is not for you.

This post is for the employees in Corporate IT positions.  This post is for all the Dark Matter Developers.  This post is for all the 501 Developers.  This post is for anyone who is working in what they call a "cost center", meaning that they support the business unit they are in but are not directly responsible for making the money that keeps the company going.

Because they are not revenue generators for their business, these corporate IT departments are often not very well understood.  The businesses they work in are not technical companies, and they often see technology more like a utility service than like the strategic partner or business differentiator that it could be.

Sometimes these departments are understaffed, making it hard to produce code the "right" way.  Sometimes the tools they have at their disposal are subpar.  Sometimes the developers, even if they follow and learn good practices, are only there to maintain what the contractors are brought in to build.  And if you're still following along, I'm probably not telling you something you don't know.

But something you do need to consider: your skills will atrophy in this environment.  Too many people leave a great environment where they have business knowledge that matters, just to get involved in some more interesting technology, because they have become subject matter experts that can't be allowed to work on different things.

Just because you're Dark Matter, doesn't mean you Don't Matter.  We very much want to hear what you have to say.

You can be a great developer, even if you're in corporate IT, but you may not get the help and support you need from your management.  This isn't because they're bad people.  They just may not understand exactly what it takes to keep creative people interested.  Or they may not understand that a couple thousand dollars a year for a training budget to keep a good employee is better than paying alarming penalties in restaffing and training costs when they leave.

What I'm saying is that you may have to take responsibility for your own personal development.  You have to work harder to stay up on things, because the technologies you use where you are may not be the latest and greatest.  They may not even be fun to work with.  But you owe it to yourself to stay relevant, and that isn't necessarily your company's goal.

Commit at least some of your time to reading blogs.  Follow some leaders in the industry that you like.  My personal favorites are mentioned in my earlier post The Cult of Do, but I'll take suggestions.  I love hearing about new thinkers out there who have joined the conversation.  It takes very little to set this up in Google reader, and you can dial the content up or down as you need to feel like you're not hitting information overload.

Another way to get some time in with new technologies: attend free community events.  At a minimum, know what is offered around you.  In the Chicago area, it's things like Chicago Code Camp, a free technology conference, or the Chicago .NET Users Group.  These are great ways to network, and have a good time learning about new technologies that you may not be using.

If you crave experience in a new technology, find some way to do it, even for free.  Lots of people will tell you that you need to do open source projects, but that's just one way to code with folks.  What about giving some of your time to code for charity with a project like GiveCamp?  You can code for charity for a weekend?  Sure, it's some of your time, but this experience may be better than the last year you spend maintaining a Visual Basic application from the early 2000's.

Or maybe you're a little competitive?  Try participating in a team in a Hackathon!  Great prizes, and you get to code with new folks in a new environment.

This one may come as a shock. Yes, you may have to part with some cash on your own to invest in yourself as a professional.  Remember, your company doesn't owe you personal growth.  They owe you cash for your talents.  Keeping your talents sharp may be up to you.

Here are some tools that might be within your grasp as someone who wants to keep up.  A personal ReSharper license costs $149.  Learn to use it, and you'll be coding like a Jedi in no time.  An unlimited annual subscription to Tekpub is $300.  It's got all kinds of cutting edge topics, presented by experts in the field.  If you feel like you're behind on some of the latest/greatest, check it out.

Finally, I want to put in a plug for regional conferences.  Smaller regional technical conferences like Codemash in Ohio are a great deal for personal investment, especially when compared against the relatively expensive TechEd.  These are great ways to meet people and companies in your area, be part of the conversation, and to learn lots of great new things from peers.  Regional also means that you won't have to fly to get there, meaning that cost is even less of a factor.

Consider That Conference.  It's a new polyglot conference servicing the Midwest and is focused on the Web, Mobile, and Cloud.  Three days, 150 presentations, and it's only $349.  Compare that to the couple grand that TechEd will set you back.  Throw in a couple nights at the waterpark resort it's attached to, and you only get set back about a grand total.  Compare that to the thrill of what you'll learn.  Compare that to the confidence you'll have with your new skill set, or the next great job opportunity.  It's an investment in yourself, an investment in your future.  As of this writing, registration for That Conference is still open for 2012.  Consider what it can mean to the future you.

You are in charge.  Make it happen.

Saturday, May 12, 2012

Who the Heck Do I Think I Am?

I am so sorry.  Where are my manners?

I have completely neglected to introduce myself.  Here I am asking to be part of the conversation, asking you to come on a mental journey with me, and I haven't even told you why I think I matter, or why I think we should dialogue.

I think I'm just like you.  Or somewhat like you.  Or like you in some ways and unlike you in others.  I guess that's part of what we're here to find out, isn't it?

First and foremost, I'm a family man.  I have a couple beautiful children and a lovely wife that I live with in suburban Chicagoland.

Second, I'm currently working as a technologist.  My official title is Lead Architect, but I consider myself a developer and coder, a team leader and educator, a mentor and a manager.  I really enjoy coding and talking about coding with others, but I sometimes feel these opportunities are somewhat limited.  That's part of reaching out to the community for more discussion.

More specifically than that, I'm a corporate technologist.  That means I work within the boundaries of a formalized IT organization within a business whose main source of income is decidedly not technology.  That means I'm in a cost center, and I typically feel the pinch of those boundaries. This is something that I plan to write about a lot in the future, as I feel that there is not enough discussion about these situation, and my intent is to speak up and to listen to what you have to say, too.

I am an avid student of how businesses work, and making them work better.  I love knowing what motivates people (and am a big fan of Daniel Pink's Drive).  I want to know how to build a better business, and was invigorated to see a talk this year at Codemash by Bruce Eckel, in which he describes his initiative at Reinventing Business.  This kind of work fascinates me.

Being a corporate technologist, I also find myself being a Software Archaeologist.  In fact, I like the title so much I had mugs and business cards made to that effect.  You can also see my shingle up at http://www.kevinpdavis.com.  Refer to the other post for a detailed description of what that means to me.

I'm also a technical book reviewer. Since I have long been a lurker, yet loved reading about technology, I have been reviewing books in the Pearson publishing family for over ten years now.  It provides me with divergent educational little side-topics that keep my interest in things high.  I've been a frequent reviewer for Thomas Erl, for example, especially in the SOA books series.  While I don't consider it part of my persona, I did a stint as a podcaster for the On SOA series (specifically for the Contract/Versioning book).  I love these kind of side gigs, and they really keep my technology hunger up.

I believe in making my community better.  That's why I'm volunteering on the staff for That Conference, a summer camp for geeks in which we'll be having 125 sessions in 3 days about web, mobile, and cloud.  I can't wait for this one.  At this time of this writing, tickets go on sale less than a week from today.

Whether I like to think of myself this way or not, I'm a blogger.  I wrote two blogs years ago detailing some of the early adventures of each of my two children.  Best baby book ever, IMO.  And now this one.  See them all at my home page.  They're all linked there.

On the non-professional, but no less important, side, I'm a home-brewer.  Card carrying member of the American Homebrewer's Association.  I wasn't much of a beer-drinker until I tried to make it.  Now, I brew on a regular basis.  I love to make the darker and heavier beers.  Porters, stouts, belgians, bocks, and any kind of flavored beer.  Orange Creamsicle Ale is what's in my fermenter at the time of this writing.

I never would have believed you if you told me ten years ago that I'd ever run a mile again in my life.  A few short years later, and I've put a few 5K runs to bed, and I'm working up to a 10K.  Since I run about three times a week now, for almost an hour at a pop, I guess I am also a runner.

I'm also a member of the Board of Trustees for the Paramount Theater in Aurora, IL.  This historic theater is a pretty amazing venue in the suburbs, and they are producing four broadway shows a year now, and they are most excellent.  Buy tickets now for next year's season!

I am also currently functioning as the Assistant Cubmaster and Webelos II Assistant Den Leader for Gamble's cub scout pack.  I helped start and very much enjoy our new hiking program, called the Trailblazers, and I enjoy both learning and teaching these valuable life skills.  The scouts is an excellent program of discipline and practical skills.  I recommend it for all boys.

Funny, when I began writing this post, I thought it would be much shorter.  But these are my passions for now.  They will change, and you'll probably hear about them.  Because that's just who the heck I think I am.


Thursday, May 10, 2012

Software Archaeology


What is a Software Archaeologist?

Most of us that work in corporate Information Technology shops are Software Archaeologists. Every organization I’ve seen and many I’ve talked to has a built-up layer of legacy applications that are old and in disrepair. While many of these applications are used daily, it may have been years since they were opened, rebuilt, refactored. The source code may be missing, and the original authors may be long gone from the organization, taking their knowledge of the application with them.

It’s this organizational brain-drain that turns many of us in corporate IT into Software Archaeologists. Every time a developer has to don his leather fedora and dive into an ancient codebase with little to guide him but a few cryptic comments littered in the code tomb, and a document that some long-ago intern put together in a half hour to meet a letter-of-the-law requirement in the then-current SDLC, that developer becomes an archaeologist.

Being an archaeologist means digging through all the various eras of coding.  Being able to parse the Scatter-Gather patterns in Visual FoxPro, say, or to unwind the data calls from the business objects that were once part of the popular CSLA methodology - those become part of your everyday toolkit.  What about that legacy web services architecture that passes around typed data sets everywhere?  What about that .NET 1.1 Remoting service layer you built?  You need to know it all, and to hop back and forth through the disparate layers, gathering golden icons and dodging rolling boulders all the way.

Even those developers who only develop new applications need to be versed in Software Archaeology, because nowadays many internally developed applications are on end-of-life platforms or hardware, being scoped for moving to the cloud, or are being revisited as part of Business Process Reengineering.  These developers need to get back into recently rewritten code and re-envision.  You have to know how to dig.

As a Software Archaeologist it pays to know not only today’s architecture, but those of the past, especially those that were popular in the organization around the time the code was written. But not limited to the standard architectures of the day. Organizations hire people who come in to try their hand at something new, or bring in some flavor-of-the-day architecture, tool, library. As a result, one-off applications are going to be unearthed. As architectures become archeological layers in the binary geological strata of an organization, so do architects become archaeologists.

I have a deep appreciation for all my colleagues who perform software archaeology on a daily basis.  Those whose jobs are just to maintain those applications that time has forgotten.

I respect the dig.

Monday, May 7, 2012

Thoughts on the Lumia 900

Just to give you a bit of background, I am not a gadget guy.  I love toys, but the new gadgets are often so expensive that I just can't justify the splashy cash outlay.  I tend to wait until adoption is pretty solid and a product has a good foothold in the market to jump.  My first smart phone was, therefore, an iPhone 3G, a few years back.

After my wife's iPhone got stolen, I took a look around at the Android market to see what the fuss was all about.  We switched both OSs and vendors to pick up Droid X models.  These phones started out beautifully, but with more and more apps installed, the battery started failing, and the button-press lag was really getting to me.

At Codemash 2012, I was talking with some Microsoft folks about their Mango phones, and the buzz there was all about this new Lumia 900 that was coming out soon.  I kept my eye on its progress, kept tabs on the launch, and was disappointed that there was a data issue at launch.  I was further discouraged by @BrandonSatrom's tweet that RunKeeper was dropping Windows phone, along with his tweet that it would not be upgradable to the next version of the OS; I had almost completely written it off.

And then AT&T or Microsoft or Nokia went and made it free.

As an apology to everyone for the botched launch, they deferred the already cheep $100 cost and gave it back with the purchase of a new phone.  I know they're betting big on the phone and the OS, and paying to get it out there, but I was surprised by this move.  With a free phone on the line, a flagship model that everyone was betting on to drive Windows 7.5 Mango OS adoption, I decided I could take the plunge.  When I got to the store, I discovered that on top of the free phone deal, AT&T was giving out a free $100 of accessories on top of that, so I picked up some Beats by Dre earbuds (they are $100, so it was a wash).

So enough backstory.  The phone:

One thing you notice right away if you're new to this new Metro interface is that it's responsive.  Fast.  I really like the menuing system, the home and back buttons.  You get one button that always brings you back to the main menu (what I call the home button, but is probably referred to as the "Windows" button, since it's the same icon as the Wintel laptops).  The "back" key, on the lower left, backs you out of applications or backs you up between applications.  Hold and press to switch quickly to any running application (like alt-tab) in Windows.  The metro interface is visually appealing, and the menus flip back and forth very naturally.  The touch screen feels very responsive and natural.

A lot has been said of the live tiles, and while they're kind of neat, I don't feel that it's that major of a selling point.  The iPhone has a little icon that tells you how many email messages you have, the Android's pull down top menu had similar things.  It's a neat idea, but not one that truly makes a difference to me.  That said, having Runkeeper tell me how many miles I've done that week can be a great motivator.

I recently found out by watching the Windows Phone Jumpstart series why all of this feels so natural.  The apps are designed so that while they can have an agent that runs in the background, the architecture has some pretty strict requirements around what that agent can do, how much memory it can eat, etc.  When a user presses that home button, the applications are forced to yield to the main process and get put into a waiting state.  Too long, and the app is tombstoned.

Keeping with the philosophy of making the phone responsive, there is a dedicated camera button for fast access when you need to take pictures.  This means when you whip your camera out, there's not a long wait before the picture can be taken.  If you have kids like I do, those seconds can be crucial.  It's right there when you need it.

So what you end up with on the Windows phone is a super-responsive interface.  And that makes it awesome.  The phone feels good, it feels responsive.  This is in strong contrast to the Droid X I had, which often felt slow and didn't respond at all to button presses.  After you've had a keypress misinterpreted and had work deleted or otherwise messed up, or even you've just had a lot of keypresses that never registered because the background threads were overloading the processor.

One other really positive thing, the battery life is excellent.  See, it's similar design choices that drive usability also help minimize battery drain, so the battery lasts longer.  So not only is your interface responsive, you can use it for a full day.  This is a good thing, because the battery isn't accessible for replacement.  With the Droid X, the battery drained fast, and even after I put in a larger aftermarket battery, the apps sucked the phone dry after a day's work.

This phone is not without its downsides, though.  Apps that are processor-intensive, to my understanding, don't run in the background continuously.  Agents that are processor-intensive, like downloading big files, synching content, can run, but they have to do it a a low-priority when the phone's not being used (on this point, I am very murky, and I would love for someone to tell me whether I'm wrong on this, and even recommend some awesome apps that demonstrate to the contrary).

I believe this to mean that for some applications that would otherwise continue to run in the background, they have to pretend to be running in the background.  Take for example the timer in the Cool Tools application.  If you switch off the application to take a text, if you don't come back to it, the timer won't go off.  Things like this you have to be careful of just when using the phone.

I think it's fundamental issues like this that may have turned some development houses off to development and kept some apps out of the Windows Phone Marketplace.  Notably, Runkeeper, an app that I truly love, doesn't fully function on the Windows phone, and the developer recently dropped the app off the Windows Marketplace altogether.  They recommended Endomondo, but I've not tried that yet.  Certain games (like Words with Friends or Draw Something) are also absent, which is disappointing, since they are so part of what makes a phone social, and that's something that Microsoft has tried hard to bake into the system.

One thing that I did like about the Android was the music player.  It took mp3s from wherever, and getting files to the phone was super easy and they were just recognized.  On the Windows Phone, you will have to download the Zune software, and though I don't find it as odious as iTunes, it's still a locked in platform that makes transfer of files, playlists, and video feel heavy handed and limited.

I mentioned that the dedicated camera button is quick to launch the camera, but the picture color on these pictures is often off (mostly in the orange direction).  I'm not a photographer (my wife is, though), so it's not that big a deal, but for some people this won't be sufficient.

Overall, I really like the Windows environment.  It takes some getting used to, and not all the apps I'd like are there, but I hope the big marketing push from Microsoft and AT&T really helps.  Events and activities like 30 to Launch drive developers to create applications, and that's what they really need right now.  Since I have decided to Speak Up, and because I am a member of the Cult of Do, I have signed up to write an application and be part of the community.  Hope you all consider doing the same.  Of course, you can expect I will write about this if and when I release.