Showing posts with label career. Show all posts
Showing posts with label career. Show all posts

13 May, 2008

The Secret To My Success

I've now been in the software engineering industry for 10 years (as of the upcoming 18th of May). Through those 10 years, I've received three progressions; read that as promotions.

As much as I'd like to take full credit for these achievements, achieving each with my charm, brilliant mind and overachieving attitude; if I'm honest, one of the major factors has been my luck in my assignments to managers.

Right out of the gate, fresh out of school I was assigned a military-grade, Lt Colonel in the Minnesota National Guard. Within the first couple months, he was asking career-oriented questions that I certainly wasn't ready to answer; questions like "where are you going to be in five years?", "do you want to lead a team?", "did you watch the Twins game last night?". Ok, the last one doesn't apply, but you get the idea. Through the years I've had my share of managers, each with strengths and short-comings, but all-in-all I've got a pretty good roll of the dice in the management department.

It's important to think about career-oriented questions early in your career, and you should revisit them continuing throughout your career. If you don't know where you want to go, there isn't much a chance you'll ever get there.

Aside from inspiring a career direction, leads are critical to achieving your career goals. Fact of the matter is, you need someone in your corner to put you up for promotions, to champion and defend you against the progression committee. Most organizations offer a fixed number of promotions and grades each year, and you need someone to go to bat for you in telling the committee why you deserve it more than the next guy. It's a competitive world, and these are the rules of the game.

A good number of my colleagues have the same skills as I do, the direction and drive similar to mine, but have come up short in manager assignment. Some of them are 2-3 promotions behind me as a direct result. Some, a consequence of unstable program assignments which resulted as mid-year changes in management, a stake-to-the-heart of any possible promotion that given year.

If you take anything from this entry, consider these two key points: 1) a career-oriented manager is an essential part of career progression, and 2) these managers must take the initiative and time to meet with you to discuss your areas of improvement, put you up for promotions, and defend you to committees, often on their own time; so treat them accordingly.

12 March, 2008

C Storage Classes

In investigating the proper means to declare a global variable, I found myself reviewing some C documentation that I had long forgotten, concerning the Storage Class.

To briefly review, each variable declaration consists of 3 elements: the storage class, the type, and the variable name. For example:


auto int x;
static int y;


The storage class can take the form of auto, extern, static, or register. If not specified, the implicit storage class is that of auto.

The auto storage class is the most frequently used of the classes, primarily because it is the implicit default. Local variables take this form, where the storage is not allocated until the block in which the variable is defined is entered.

The extern storage class specified simply a reference to a variable that is defined elsewhere. Space is therefore not allocated upon encountering this reference, since the storage is allocated elsewhere. This as you may recall is the means to declare a global variable.

The static storage class specifies that the variable cannot be access by functions outside the translation unit in which it was defined. A common error is declaration of a static variable in a header file, which is imported by more than one translation unit not understand that each translation unit essentially created independent copies of the variable. A common practice of declaring a static constant in a header, used by multiple translation units results in multiple copies of the constant, in each translation unit. However, if the static variable simply defines a constant....generally, no-harm-no-foul. It is however worth understanding that it is not a shared reference.

The last storage class is that of register, which notifies the compiler to make the variable as efficient as possible. Ideally, the variable will retain it's location in a cpu register for optimal performance.