What’s a Real-Live Author? I suppose many of us, even those of us who fancy ourselves wannabe writers, tend to think of authors as the people with books that are published by Real-Big Publishers. In more generous terms, an author is probably anyone who writes stuff. Such a definition, of course, is a little feel-good. I’ve written a number of articles for magazines that have ISSN numbers and copyrights and contracts with a bunch of words. So I don’t hesitate to call myself a writer. I write. I’ve been paid for it (albeit in negligible amounts).
I’ve often wondered if I have the chops to have any fiction work published. Today at TEDxRaleigh I was pleased to see a Real-Live Author: Daniel Wallace. I had to cut out of the conference a bit early. I didn’t want to bother the guy, but when I saw him standing there I knew I had to ask say hi and ask a couple of questions. He couldn’t have been more friendly, and my questions, likely similar to questions he gets very often, were answered with genuine interest and sincere advice. There’s something satisfying about meeting a person who has had extreme success (Big Fish–a movie most people know–is based on his novel of the same title) who is just a real person.
My questions, naturally, had to do with how to get fiction published. Silly question, perhaps. I’m sure all published novelists get such questions frequently. Perhaps constantly. In any case, his advice was seemed excellent.
I’ve heard about new math for a long time now, but only recently have I been impacted by it. This evening I was attempting to help my daughter with division homework. The best way to explain the frustration we both endured is with an example. New doesn’t always mean improved. Old ways of doing things tend to be old because they have worked very well for a long time.
Spoiler alert: I’m going to tell you right up front what my conclusion is: Tickets should be large in scope. Also, tickets should be medium in scope. Finally, tickets should be very small in scope. Tickets, tickets, tickets! Tickets for everything!
Imagine a ticket with the instructions “create user login.” Cringing? Me too. But most of us are familiar with tickets of huge scope that lack any kind of breakdown.
Back in the day, way back long, long ago (maybe not that long ago) we sent emails. “Hey Matt,” the email might read, “don’t forget to add the flim-flam to the doohickey. But don’t do this until the thingamabob layer is complete.”
We had defect tracking systems, but generally these were utilized for one of two purposes: Customer reporting of software issues, or quality assurance reporting of pre-release defects. Requirements were implemented by way of tracing through a document and checking items off of a list. One of the earlier products for requirements tracking and traceability was Rational DOORS. There were a number of other tools we used, none of which integrated very well. Later I was introduced to Rational ClearCase, Rational ClearQuest, Microsoft SourceSafe, Bugzilla, Trac, CVS, BugTracker, Subversion, Redmine, Jira, Confluence, Team Foundation Server… And on and on.
An early entry in the Rational suite of products, it was a rather expensive program in the way of licensing. If my recollection is correct, it seems that licenses were based on user seats. When such a model exists, and if each seat is expensive, a company may tend to limit the number of product users on a team. The side effect of this approach (again, only if the pricing is high) is limited usage within a team. I recall project managers working on Gant charts, hosting meetings in which all the developers sat around a table gazing at a projected screen being asked for status updates on each line item. Talk about a yawn fest! Whether it was DOORS, Microsoft Project, some other tool, or a long list of line items with names attached to a number of tasks, the status meetings were always the same.
Some reading the list of products I just threw out will recognize that it isn’t very sensible. Some of the items in the list are used for version control. Some for ticket management. Some for a bit of both. Some of the products are no longer in use. Some are very old, but still in use. (And some, such as Redmine, Jira, and Confluence, aren’t all that old.) This was a problem then (and for many, it remains a problem now): The solutions to our development needs were viewed as separate entities. In addition, we just didn’t seem able to settle on how to use these separate items (which in the past, didn’t integrate well, if at all) in a way that actually helped rather than hindered.
In the early days of my career I almost always had an email inbox full of hundreds of items, some flagged, some marked as unread (so I wouldn’t forget), and some in the trash folder—either placed there deliberately or by accident. My monitor was littered with yellow sticky notes. A pad of paper next to my keyboard was packed with doodles, stars, asterisks, double and triple-underlines. If something was REALLY important, I may have drawn a box around it. For the REALLY REALLY important items, I drew two boxes. And for the REALLY REALLY REALLY important ones… You get the picture.
What a nightmare!
And let’s not forget the weekly status reports! I’m getting flustered just thinking about them! Well-meaning managers asked for status reports every Friday afternoon. When Friday rolled around, I often found myself digging through emails and flipping the pages of my notebook in an attempt to recall what I had worked on. Who has time to fill in a status report in increments each day when distracted by getting actual work done? I loathed these reports. And I say this without hesitation, as I know I am not alone.
Inevitably, some line item would appear on the list with my name next to it. “Matt,” the project manager asked, “how are you coming with the doodad that implements the whatchamacallit?”
The other day someone asked me this question: “What are your thoughts on the difference between task-oriented and linear oriented?” It was an open ended question, so I wasn’t sure if this question was with regard to software functionality or design and development in general. I’m still not sure what the question means, but I assume it has something to do with the difference between viewing processes as a long line of things to be done in a sequence (with gates between each) and doing things as standalone tasks. Of course, even if something is ‘task-oriented’ there are still dependencies—things that require linear completion. This is why we write tickets that allow us to create a hierarchy of dependencies.
“Uh…” It seemed to happen every time! I was caught off guard by some entirely surprising task. My face felt a little warm, as I struggled to recall just what the hell the project manager was talking about. “Are you talking about the gizmo that ties in with the canootinator?”
“No! Not that… You remember, I sent you an email about the whatchamacallit and the doodad last week. It’s in my sent items. I’ll pull it up right now. Sure, I felt stupid. Maybe I should have. The truth of the matter, however, is that reliance on ineffective communication mechanisms is what led to this (not just for me, but for others as well). Sidenote: Being a software developer requires that one feel stupid every so often. It’s part of it.
As I write this, these recollections seem like the distant past—but the reality is that it wasn’t all that long ago.
(DOORS lives on as an IBM product. I have not used it in years, so I cannot speak to its current state of being.)
We’ve come a long way since then. Mostly. Maybe. Not all of us.
The subject I wish to write about today is effective utilization of tickets. It doesn’t matter what your development process is. Agile, SCRM, Kanban, some iterative process. Whatever the design and development approach—it’s high time to scrap the emails, notebooks, and sticky pads. Need I even mention that it is time to abandon the weekly status reports? (I’m not talking about sprint planning or standups when I say this). I don’t care what the development approach happens to be. Whatever it is, granularity of tasks, detail, and communication remain absolutely necessary (and email does not qualify as effective communication).
Should someone—from your boss to your boss’s boss to a well-meaning coworker, come to the door of your office, cubicle, desk, or couch with the expectation that a conversation is locked in as a done deal upon leaving—shame on all involved!
The same goes for IM and text messages. None of the above forms of communication should ever be considered a final lock-in of a task. There is one and only one way that work items—any work item—should be recorded: The ticket management sytem.
There are many too choose from, some better than others. The poorly-named BugZilla is a fine choice, but Team Foundation Server, Jira, Redmine, and Trac are all great options. Redmine and Trac are entirely free, and they are great tools with plugins for everything under the sun. My personal preference is Redmine, but this could be a bias simply because I have used it so much. Before I continue, let me make one thing clear: Let’s never again refer to a ticket management system as a ‘bug tracker.’ NAY! To call it a defect tracker leads us back to square one. A defect is a category of a ticket. It may be something of high priority—but all tickets should have an associated priority.
There are a few integrations that I consider absolutely necessary. To make a ticket management system effective, it must integrate with:
- The CI (continuous integration) build
CI should integration with version control. It should pester the team when a build breaks. It should make it clear what changeset broke the build, and the changeset should point us to the ticket that was being worked on that prompted the changeset.
Wait—didn’t I just say we need to scrap email? I did. Email is a good prompt, however, for team members to see new and changed tickets. For a small team, I like to see all of those emails, even if the task is not related to me. It’s good to know what others are doing.
- Version Control
Changesets must be concise. As we check-in for commit stuff to our version control (by stuff I mean anything—not just code. That stuff could be configuration files, documents, spreadsheets, etc.).
- Existing workflow (and if we have to shoehorn the concept of tickets into the workflow, perhaps it is time to rethink things.)
I’ll keep this on-point, as much as I can, as I see a great deal over overlap among the necessities (and for this blog I’ll be writing separate posts (lest my faithful readers become distracted while reading too many words).
If you, like me, rely on tab completion at the command line in Linux or MacOS to help find things for you, it can be annoying when it doesn’t. If you’ve entered a lowercase where the filename has an uppercase, or if there are multiple possible files (in which case double-tab prompts for “show all possible”), autocomplete doesn’t always behave the way one might hope. This is all configurable.
Here’s what I use (these lines are in ~/.inputrc)
set show-all-if-ambiguous on set show-all-if-unmodified on set completion-ignore-case on
From the Bash reference manual, here’s what those commands do:
This alters the default behavior of the completion functions. If set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.
- This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to ‘on’, words which have more than one possible completion without any possible partial completion (the possible completions don’t share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’. completion-map-case If set to ‘on’, and completion-ignore-case is enabled, Readline treats hyphens (‘-’) and underscores (‘_’) as equivalent when performing case-insensitive filename matching and completion.
If set to ‘on’, and completion-ignore-case is enabled, Readline treats hyphens (‘-’) and underscores (‘_’) as equivalent when performing case-insensitive filename matching and completion.
This is going to be a tough question, and I suspect many won’t like the anwer.
Are you working yourself out of a career?
If this question confuses you, chances are you are doing just this. Perhaps you’re the main guy or gal on your project, and your company values your work (for now). What is your work? Are you doing the same thing day after day? Maintaining Oracle Forms? Updating a legacy web site? Parsing through line after line of Visual Basic to keep some legacy system running smooth?
If so, what else are you working on? Anything?
I remember all too well the dark days of 2001 through 2003, when, just after the dot-com bubble, many skilled software developers were out of work with no good options. Any companies that happened to be hiring took full advantage of the fact that the market for software people was flush with resumes of people who were desperate for jobs. The pay dropped dramatically. I lost my job at a startup that failed, and took the first job offer that came along: A technical writer and quality assurance contractor on a federally-funded project. The job, initially, was horribly boring. I literally hated what I was going–but it was a job.
My problem was, being somewhat young, I didn’t have a powerful resume or much experience under my belt. I didn’t have the proof, so to speak, to convey to a potential employer that I would be a great fit for a position. And the sad fact was that, no matter how great I might have been for a job (so I thought), or how hard I was willing to work, there were literally thousands of other candidates out there. The hiring companies had their pick–and believe me–they were picky!
As good as things seem to be for software developers right now, I’ve learned that the market can change quickly. So it is on you to make sure that your skills are diverse and up-to-date. To that end, it is necessary to continually pursue new learning. Let’s face it: Your employer does not have a vested interest in seeing you grow your career. An employer wants an employee to meet their needs as efficiently as possible. That’s fine. Expected, really.
So what are you doing to ensure that you are valuable when the time comes that your employer no longer needs you, or when your employer downsizes or go goes out of business? It’s a question that many of us don’t wish to ponder too much. It sounds so negative, doesn’t it? But it’s an important question.
It isn’t bad to be an expert at something. It’s great, for example, to be an expert C++ programmer. Kudos! But what does ‘expert’ mean exactly? Does it mean that you do one thing very well, but nothing else? It may mean that you are valuable as a C++ programmer, but of no value when it comes to other needs: UI design, Database Design, jQuery, HTML5, Agile, System Administration. A hiring manager would rather hire a candidate with many diverse skills (yet expert in none of them) than an expert in a single skill.
In a single week at work I find myself working on OS scripts, front-end UI design, back-end data access, business services and Rest APIs. My position requires that I have knowledge of the “full stack” (A term I despise!) as some like to call it. This is good. I feel secure in knowing that I’m hire-able (not to sound self-satisfied) based on a wealth of skills. Should I find myself looking (I’m currently quite content), I’ve built my resume up to show that, while I’m an expert in nothing, I’m skilled in many things. This is a better way to go.
This is a topic that I plan to write more about, perhaps turning it into an article. I want to leave with this, and this is going to sound a little negative if taken the wrong way: If you have been doing the same thing day in and day out for X years, you have not gained X years of experience. You’ve gained 1 year of experience X times in a row. It may be time to consider looking for a new job right now–while employers are eager to find talented software developers. And not just any new job. You need to find a job that will challenge you–stretch you to learn and grow new skills.
(I hope this post doesn’t strike anyone as self-righteous, cynical, or rude. My intent is only to point out a common problem in the career of software developers.)
Since SDJ tweeted it today, I suppose it’s okay to announce… I’m pretty excited to have a regular column appearing in Software Developer’s Journal. My first column will contain an introduction–who I am, what I do, and what I hope to write about. Along with it, there will be a column on interview advice, including things that this formerly shy-guy has learned over the years, but as a candidate and as the guy on the other side of the table–the one asking the questions. It is advice that I think is good regardless of one’s career. That said, most of my articles will focus on the life side of software development. While some of my articles will be more technical, I hope to include many that have to do with other aspects of being a software developer. A few ideas for future articles include topics such as how to deal with recruiters, office politics, fitness, and the software glass ceiling.
While I’ve published a number of articles now, and countless blog posts, it will be a new adventure to working on a monthly deadline. I think it will be fun, as writing is something I’ve always loved doing. Having a published outlet for my writing is thrilling. I’m very thankful to SDJ for this opportunity!
I don’t like to just post links to another blog or article. Anyone can do that, and there are far too many blogs out there that create no original content. So I try to write original thoughts and articles. That said, sometimes this is a rule worth breaking. Jeff Atwood has a great post over at Coding Horror titled So You Don’t Want to be a Programmer After All.
Atwood asks the question, “What career options are available to programmers who no longer want to program?” This is converse to a subject I’d like to write about soon (still gathering my thoughts: What career options are their for programmers who wish to move up in their career, perhaps into management, while never losing the ability to actually write code?”
Unfortunately, it seems to me that in this field the general career path goes something like this:
Junior Programmer->Senior Programmer->Super Senior Programmer->Awesome Amazing Programmer->Manager (stop writing software)
I know of at least one person who got into management, didn’t like it, and gave it up to move back into a full-time developer role. What about the programmer who wishes to do both? And why do we assume that software management means an end to coding in the role? Sure, this isn’t always the case, but in general I think it is. It strikes me that many of the best developers move into management, thereby eventually losing their hands-on skills. That seems unfortunate.
Look at this beauty! This is a clear case of “They don’t make ‘em like they used to.”
I found it laying around the office one day–free for the pickin’! It’s over 20 years old, and not unlike similar keyboards that are even older. It’s heavy. It makes a satisfying click noise when I type on it. They keys rise over a half of an inch. The date of manufacture on this one is 1992, but the copyright date is 1984. On the back, in large bold print, it reads “Made in the U S A.” The cable is long–at least 6 feet! It works perfectly, unlike the standard-issue keyboards that come with the Dell desktops that so many of us are issued at work.
You know the ones. Certain keys stick after a while. Some come loose. You’re never sure if you pressed a key or not because they feel so spongy.
Sometimes people look at this keyboard and ask, “Why in the world do you have that thing?” Others, those in the know, look at it with a certain degree of envy. Unfortunately I cannot attach it to my Mac. I don’t have a PS2 to USB adapter on hand, and I haven’t bothered yet, as I’m not sure if OS X has the necessary drivers.
I wonder what has happened to keyboards. They often seem to be an afterthought. Sony and Mac laptops are decent, but have you tried typing on a Lenovo, Dell, Toshiba, or HP keyboard? It’s downright difficult, even for a man with average sized hands. I suppose the poor keyboard that we are forced to use are a result of cost. Back in the day, I’m sure this IBM keyboard cost and arm and a leg. But here it is–still being used–and still performing with the lasting quality it was designed with.
Many of us have seen them: The job posts claiming to be seeking a “Ninja Programmer.”
I presume that these are companies that are:
- Looking for a well-versed candidate with diverse skills and the ability to tackle any project.
- A candidate that will find more value in the way he/she is perceived than salary. (Reading between the lines: “We can’t pay you much, but we will appreciate you a lot!”) This may not always be the case, but there there often seems to be a hint of this in “Ninja” job descriptions.
The second point is based on other verbiage I have seen alongside such job posts. Things such as “Do you find more value in what you get to do each day than anything else?” Sure, I find value in the more exciting aspects of a role–The opportunity to learn new things, set direction, and get things done. Of course! I also find value in money. Let’s be honest here.
Sometimes the word Ninja is replaced by other crafty (or not-so-crafty) buzzwords: Rock Star, Guru, Genius, Superstar. It doesn’t take much insight to recognize the aim of such verbiage: Flattery.
I’m sure that any company using such lingo in a job description is sincere in the desire to find a candidate who is very good–one who will be able to complete sizable, complex tasks. Naturally! I also think that a single superb programmer can often achieve the work of three, perhaps four or even five, average programmers. I’m fascinated by some of the legendary programmers out there: People like Linus Torvalds and James Gosling. But even the most famous programmers rely on a tremendous and ever-growing amount of community insight and preexisting work. (By the way, there is a video from a Google I/O Conference, The Myth of the Genius Programmer, that addresses this subject very well.)
I’ve worked with a few “Ninja Programmers” over the years. The term is highly relative. I’ve had positions where I may have been considered the Ninja. I’ve had other positions where any Ninja-like self satisfaction was as elusive as the stealth and cunning of a Ninja portrayed in a 1980s movie.
How did this lingo come about? Those of us in the business of writing software often have a few other desires. I know I do. Anyone who grew up in the 80s dreams of being a Rock Star, Ninja, or at least Frank Dux. The buzzword job titles are a way of making a job that might be very difficult, taxing, and demanding of time and talent sound appealing. I may have to work 100 hours a week, but at least I’ll finally be a Ninja!
It’s no different than job descriptions that contain the infamous words, “We work hard and play hard!” What does play hard even mean? It sounds like something that might involve torn ligaments.
The point of this post isn’t to seem cynical (although it might). The point is this: Software Developers, Architects, Engineers, whatever you call them, aren’t some strange group of people that have to be wooed or tricked into accepting a position. We’re grown adults. There are certainly great Software Engineers out there. But they aren’t stealthy, and they don’t hide in trees or karate chop bad guys.
I’ve worked with some brilliant software folks over the years. I’ve worked with some very poor ones as well. Those times in my career where I’ve found myself the lone “Ninja” of the team have been among the most floundering times of my career. It is difficult to teach oneself new things in a vacuum. I’ve found that it is best to be on a team with lots of other “smart folks”–people from whom you can learn, and people who will add checks and balances. That so-called Ninja–The lone genius that a company relies on for all software needs–is going to cause a few problems.
A few that I can think of right away:
- A lone programmer–the company “genius”–will soon face burnout. No matter how much the individual loves writing software, one can only be stretched so far. This highly talented individual has all sorts of opportunities coming his or her way. It won’t be long before such a talented person is offered a job making more money and working fewer hours. What happens when the single guru leaves the company?
- The lone programmer may not play nice as the company grows. It can be difficult to let others touch your baby. When you’ve written thousands of lines of code and a new team member comes along and starts mucking with it, there can be problems. I’ve been the new guy, pestering the old guy, and messing around with legacy code, much of it poorly documented. I’ve also been the guy on the other side, a bit perturbed when someone dare say that my code might be better if… Be gone, you and your new design pattern!
- Along with number 2, any programmer with enough of an ego to allow himself or herself to be labelled the company’s Ninja, is likely to have an ego that does not lend itself well to “playing nice with others.” I have to confess once again to having been on both sides of this. It feels great to be in a position where you are thought of as being “the smart guy.” Although burdensome, it feels good to be trusted with the complexities of software that nobody else understands. It also leads to a certain feeling over ownership of code, and heavy reliance on a single individual.
- When trusting that lone smart guy/gal with all of the code, a determination has been made: There will be no collaboration–no merging of ideas–no team to challenge each other, from within, to do better. It’s the sharing of backgrounds and experience that leads to the best software design, and I believe this is true no matter how talented one programmer happens to be.
I’m sure there is more that could be added to this list. These are just a few quick thoughts on the matter. While being a Rock Star might not be all that bad, I don’t want to be a Ninja. Sometimes Ninjas get blow-darts stuck in their necks. Sometimes they get beat up by Bruce Lee.
The other day I had an epiphany. Okay, epiphany may be a bit of a strong word for this little discovery, but I did suddenly realize why I often get the song Day After Day by Badfinger stuck in my head many mornings at work. It all has to do with the first note of that song and the startup chime on my Macbook. So I created this video to help solve the mystery. And since I created it, I might as well share it. Sure, it’s of little consequence, and probably a big waste of time, but a little curiosity never killed anyone (except for some cat, apparently). I also spent some time reading about the difference between might as well and may as well. It’s pretty much commonly accepted that they mean the same, although some people nitpick and claim a difference. Happy Friday!
I have an idea for an article, but I’m not entirely sure how to approach. It’s a subject that I believe some have written about, but as a male, it isn’t a subject that I have given much though to until recently: Where are all the female software engineers?
I suppose the only reason I’ve thought about it at all is because I have two daughters, neither of whom seem all that interested in video games or computers. Sure, there’s some passing interest. They like simple games on Friv. But really, for the most part, any interest in that which may be considered “technical,” ends once they get Pandora open and playing their songs.
I’m definitely not one to declare this an open and cut case of sexism. It could simply be a difference among genders. As someone who loved Lego as a boy, I tried pushing Legos on my daughters. It didn’t stick. I’ve presented video games. No dice. They’ve watching me tinker with Arduino… With only passing interest.
In college I had two female computer science professors. One taught Cobol, the other taught Data Structures, Object-Oriented Programming, C, and C++. This second professor, not a PhD, was one of the best professors I had. She knew her stuff–and she knew how to teach it. Sure, most professors know what they are talking about, but the skill of teaching is something, at least in my experience, that most lack.
I’m trying to think of how many female software engineers I have worked with over the years. I’ve worked with female managers, product and project managers, quality assurance engineers, and technical writers. But when it comes to counting the number of female software engineers I’ve encountered, I think the number is two or three (and only two that I can recall). I do know another female who majored in Computer Science, entered the workforce, worked for IBM, and left the field because she hated it.
While sexism, I think, is an oversimplified answer, I think that simple gender preference is equally oversimplified. After all, there are many female scientists, math teachers, and engineers of other disciplines. May it have something to do with social nature? One can only guess. One would expect just about any professional field to be weighted one way or the other. We aren’t surprised that there are more female than male nurses, or more male than female auto-mechanics. But in these fields, the reason for a gender preference seems somehow a little more clear.
I may not give this a second thought if I had encountered just a few more female software developers. But just two or three seems low enough to suggest that there is something more at play. I don’t suggest for one minute that it has anything to do with bias on the part of men, and I can say this because I personally have not encountered any such bias. I have never once heard men discuss female engineers of any kind in any derogatory manner, nor would I take part in such a conversation (I have a mom, two sisters, a wife, and two daughters–all of them extremely intelligent). Nor do I suggest that the measure of gender equality is equal numbers of men and women in a given field. I think that assumption would be outrageous (correlation doesn’t imply causality, nor does correlation necessarily imply inequality–it may or may not).
About a year ago I was helping my oldest daughter with her math homework. I was shocked when she said, “Dad, I’m just a girl, I’m not good at math.” WHAT! Where in the world would she have heard such a thing? Certainly not from me. Certainly not from any of her teachers (all of them female). When pressed, she could not explain to me why she thought such a thing or where she might have heard it. The only answer I got was, “Math is for boys.” Similarly, I wonder, if for some reason, young girls develop a sense that computers are for boys. And if so, where would this troubling idea come from?
I’m interested in hearing some thoughts on this subject, and if any female software folks happen across this post, I would be especially eager to hear from you.
When Thomas Jefferson wrote “…all men are created equal,” was he deliberately excluding women? Of course he wasn’t! In his time, ‘men’ was a gender neutral and acceptable reference to mankind–male and female. Okay, I grant you that given the state of women’s rights, including voting rights, in Jefferson’s time, some may argue that he wasn’t thinking of women when he wrote those words at the age of 33. But I think he was. And as far as equality in the United States goes, we accept that the United States Declaration of Independence and Constitution apply equally to men and women. But that was then. This is now.
Here’s something that aggravates me. I’ve mentioned it to others, and it seems that this type of grammar butchery is becoming (sadly) accepted. In an effort to avoid “sexist” language (that is, changing written and spoke English to be gender-neutral), an awkward pattern of using improper pronouns has come about. Why aren’t others as aggravated by this as me? Maybe I’m being nit-picky… I don’t think I am.
Here’s an example:
“When a developer works hard, he will learn much.”
The above, these days, is often considered sexist language. Whereas in times past, the singular pronoun he, per the English language, was assumed to be gender-neutral. Beginning somewhat before my time, such an assumption was deemed politically-incorrect and sexist. Fair enough. A more politically and socially correct standard grew.
“When a developer works hard, he or she will learn much.”
This example passes the gender-neutrality test, and it is grammatically correct, but it seems clumsy. In an effort to avoid such clumsiness, some began swapping pronouns, sometimes using she, sometimes using he (within the same article, book, journal, etc.). Grammar Girl has called this practice “Whiplash Grammar” in an article addressing this subject. Personally, I think it is much worse than the awkward “he or she” substitution. As a reader, I find myself wondering who the heck we are talking about.
Some people have substituted the non-word he/she:
“When a developer works hard, he/she will learn much.”
Hmm… This may be okay for an article, but it isn’t something I’d like to see in a book, especially fiction. I cannot pinpoint exactly why I don’t care for this. It just seems messy. In general, a work of fiction can avoid this problem, as the gender of the subject is not likely unknown. All to often I see examples such as this being used:
“When a developer works hard, they learn much.”
Wait just a minute! Developer is a singular noun. They is plural antecedent. Every English teacher I ever had would be quick to point this out, wouldn’t they? Why then have I seen this noun/pronoun confusion used everywhere? I see it in advertisements. I hear it on the radio and TV. I see it in print that has been edited and re-edited! It is a bloody linguistic massacre, and yet it is acceptable enough to pass through an editor’s cautious eye!
I understand the desire to avoid the double-pronoun solution. There is a much better way to handle this. For my final example, a sentence that is proper, gender-neutral, and not the least bit clumsy:
“When developers work hard, they learn much.”
Voila! (Was that so hard?)
Assertion #1: You may not like me. (Not immediately.)
My Fellow Software Developers, Architects, Designers, Engineers, Leaders, Quality Assurance Analysts… Whatever your job title (and whatever your real role, as a job title says little). I have a prediction: You will either read this article and agree wholeheartedly or read this article and take offense. Please don’t take offense. Perhaps ‘take offense’ is a strong way of putting it. Maybe a more likely response is Yeah, yeah, I’ve heard that or I know, but who has the time?
This article is written for us by one of us. It’s FUBU, so to speak.
What makes me an expert? Because, I am proud to say, I have overcome the cubicle lifestyle and found that there is a much better way of life beyond these short walls. Dare I say it? I’m a better employee because of it! Dare I say something else? May I? Here goes: Those of you who read this introduction and are tempted to stop now are likely the ones who most need to read on. Stick with me. I’ll make this fun. I’ll try, anyway. I’m on your side–we’re kindred, after all.
Oh, and one more thing before we proceed: I don’t wish to give anyone false hopes. I have no secrets to share. I know you’re wondering because I’ve been asked many, many times over the years. The question I get often, and one I dread: What’s your secret?
There’s no secret. There’s no miracle pill. There’s no app for this. I have not discovered or unlocked a great mystery here. That said, I have some sound advice. Good advice. It’s changed my life. If you are to proceed, changing your entire lifestyle (one that you’ve become quite accustomed to over the years) It’s going to suck at first. You may hate it–at first. There’s no getting around that. You are going to want to do it. Not for a while. The love of exercise does come, I promise, but it may take a while. (How’s that for motivation?)
Assertion #2: An unhealthy lifestyle seems normal, justified, and typical, in a world that is decidedly unhealthy.
Remember the first Superman movie with Christopher Reeve? There’s this scene toward the beginning of the movie where Superman, as a teenager, is running around enjoying his super powers as he races a train. The train is barreling along at a very high speed as Superman runs alongside it and then right past it.
I thought of Superman the other day as I was out running. There is a section along a trail I run where trains come to a stop, slowing to a vastly diminished rate prior to unloading cargo. On this day, as this particular train slowed to about 6 miles per hour, perhaps for an upcoming stop, I ran past it… Just like Superman, I was outrunning a train! (Faster than a locomotive!) For a good long while I felt like a real stud. I felt powerful. It was very fun to pretend that the train was moving along at a very high speed, and that, indeed, I was able to out pace the mass of steel.
For a moment I was Superman!
Its easy to seem good, great even, when you measure yourself by standards that are low enough. I do this all that time. Heck, I can be downright Christ-like when I find the right people to compare myself against. This might be why I like watching TV shows about prison so much. They make me feel like I’m a really good person. I haven’t robbed any banks, after all! This is why society loves Honey Boo-Boo so much. It has to be! How else can we explain the success of such a show?
What if I was training for a race and I decided that the best way to get faster was by outrunning trains? It sounds impressive at first, but I wouldn’t get much faster if I only raced against trains moving at 6 miles per hour. Before the race I might be a bit arrogant, bragging to others about how I trained for the race by racing trains. And perhaps these people would be as impressed as I can be with myself.
We can all outrun a train if it moves slow enough. I guess its easy to be fooled into thinking of yourself as Superman-like.
What’s the point of all the Superman and locomotive talk? Stick with me–I’m not sure where I’m going with this yet. I’ve only an idea, and possibly a few readers willing to stay through to the end. This is an article about health. That’s right! It’s a topic that you either love or hate. Am I right so far? For good measure, should I throw in some statistics and evidence? Dare me to? Or, can I lighten up a little and trust that you already know more than you’d like about heart health, job stress, adult diabetes, and all the rest of the fun? You’re reading my article, so right away I like you. I am going to trust you to do your own research in this area.
Here’s some more research, and I bet many folks don’t know this part of the story as much as the Chicken Little warnings about bad health. Obviously sitting at a computer all day long in a dark office drinking Mountain Dew and eating M&Ms is not healthy. We learned this back in 3rd grade, didn’t we? Conversely, however, the healthy lifestyle, while good on all accounts, is one that is avoided far too often. If we all know what is healthy and how to do it, why do we avoid it?
Let me re-introduce myself. I am Matthew Rupert, a guy who was skinny in high school, skinny for two years of college, chubby for the other 3 years of college (yes, 3 more years). It was sorta cute that the former skinny guy put on some pounds in college. All my friends got a good chuckle out of it. I did as well. My story is probably very similar to yours (assuming you are my age or older). For those of you young whipper-snappers just coming into your career, listen closely to the rest of this article.
Now a career man, the slightly-chubby frat-boy-turned-professional-software-engineer, life changed. I lived in an apartment with two friends, and for the first time in our lives we had money! Real money! Our own money! We stayed up late most nights, playing video games, going to a bar or two, or just sitting around talking. We drank beer. Not the cheap stuff. Oh no! We were professional young men. We bought the good stuff: Sam Adams and Guinness and other stuff with strange names. We had become far too class for that cheap stuff that our father’s drank.
We bought our own groceries. Wait. No we didn’t Groceries? Buying groceries would require cooking, and cooking would require cleaning, and what young professional ha the time for such nonsense. We ordered pizza and Chinese food. We went out to eat for lunch… And again for dinner. Life was good! And we were blessed in other necessary ways: We could afford to buy cool clothes. And new cool clothes were often necessary, at least for me, as my waist size continued to push to sizes that should have made me blush.
Ah, the life of a young, single professional? Ain’t it sweet? Beer, pizza, video games, and a 38 inch waist.
“38 inch waist?” you say, “That’s not that bad.” That depends on many factors. As for me, I’m a relatively small-framed guy. You’re not going to see me entering the UFC Octagon any time soon. 38 inches turned out to be a mere pause along the journey. A couple of years later I was married. The life of a young married couple with no children isn’t all that different from the bachelor pad life. Lots of nice dinners. Lots of going out to eat for lunch. These lunches were easy to justify. “It’s work, I have to stay on top of the office politics. And I also have to eat two giant burritos to show that I am an alpha male.” The 38 inch pants still fit, albeit with bit less freedom than days past.
My wife got pregnant… And I got a wacky autoimmune problem with my skin. Double whammy! Here’s way:
1. The sympathy weight you’ve heard of during pregnancy, it’s real. It’s SOOOO real.
2. Predisone, sometimes prescribed for autoimmune problems, is an amazing drug. It fixed my skin right up! It also helped me to gain 30 pounds seemingly overnight.
POW! BOOM! BAM! In a span of less than 10 years I had gone from Peewee Herman size to Francis Bucston size! And it all happened without any effort on my part. Effort would require some sort of deliberate focus, of course. This was not effort–this was just plain indulgence empowered by a sedentary job sitting in front of a computer. I emailed a friend a picture. This friend, who hadn’t seen me in 7 years, emailed back, “Did you swallow a coworker?” I laughed. It was funny, after all, the once skinny guy now being a–dare I say it? A fat guy.
There, I said it.
Oh sure, there was much more to me and to my character than being a fat guy. I was a blossoming software engineer, eager to grow into a lead role. I was a daddy. A damn good one, I might add! I was a husband. I was… An avid TV watcher. I was… Really good at sitting after a long day of work. I was leveling up on Everquest. I was snoring more. I was tired. My blood pressure, for the first time ever, was high.
And I was tired. So tired. There didn’t seem to be enough time in the day to do all the stuff I wanted to do. I was exhausted at work, even on the nights when I got a full 8 hours of sleep. By the time I got home I was too tired to do much of anything (although babies require much attention, whatever a father’s state of physical health and alertness).
A little concerned about my blood pressure (and fairly certain that the machine at Walgreens had it wrong, despite checking it out at several different locations), I made an appointment to go see a doctor for a physical.
Assertion #3: Getting started is the hardest part.
There I was, barely into my thirties, overweight, out of shape, tired, and with high blood pressure. My doctor, a fit man at least 20 years my senior, told me as gently as he could. “Matt, it might not hurt you to do some exercise.” He continued, and this was the part that really bothered me, “I don’t want to put you on blood pressure medication at such a young age.”
Me? My 40-inch waistline spoke little of the skinny guy on this inside. How could this be? I’m not that bad off! I mean, just look at Kevin, Chuck, and Roland. Those guys are the ones who are overweight and out of shape. Not me!
Just as a normal man can feel like Superman running alongside a sufficiently slow train, an unhealthy man can feel perfectly content when comparing himself to others of even worse fitness.
I left that appointment with my head hung low. It had happened so gradually that I didn’t notice: I was heading down the path of my grandfathers before me. Overweight (severely) and well on my way to heart problems down the road. Maybe not for “a long time,” but I knew the doctor was right. And by my early thirties I realized something else: The years seem to move by a little more quickly. (See the Wikipedia post on Time Perception. Specifically the section on Changes in temporal perception with aging.)
I now had a daughter, a lovely little girl who I adored more than I thought it possible to adore anything with the capacity to create such a stench. That evening, as I held my baby, I realized that my health wasn’t simply something to be maintained for my own sake. I now had someone in my life who was entirely dependent on my well-being. Am I being dramatic here? I don’t think so. While my poor health wasn’t going to kill me any time soon, it wouldn’t be long before that baby was a toddler and a little girl, running, playing at the park and the gym, asking her daddy to run alongside as she learns to ride a bike.
I had the obligatory gym membership that was never used. Don’t we all? I’d gone through the visits to the gym over the years, working on my bench press and trying to get buff, sure. But aerobic fitness, for a computer geek such as I, had never been something I was interested in. That feeling of breathlessness–the side stitch–the overheated feeling–not for me!
I put on my cross trainers–the cheap shoes I had purchased from Kohl’s–which I found comfortable for my daily hours of sitting before the glow of a computer monitor. “Honey,” I said to my wife, “I’m going to go out for a jog.”
“A what?” She was perplexed, I’m sure.
“I don’t think I’ll be gone long, maybe 30 minutes or so.”
30 minutes! Keep dreaming, buddy.
I stepped outside, wearing a cotton t-shirt, cotton underwear, and “workout pants,” which I used mostly for sleeping or mowing the lawn. While on this subject, let me say this: Mowing the lawn is not enough exercise. I thought it was at the time. Convinced myself, perhaps. It made me sweat, after all. It wore me out. It must be exercise! Nope.
As a group, we’re out of shape. I’m working on an article on this subject, but I want to do so in a motivational way, not with a lecturing or accusatory tone. More to follow.
RTP is cool and all, but, honestly, there’s lots of space around here, and we don’t all need to be driving the same direction. I’d love to see more companies build in downtown Raleigh. Hopefully the RedHat move gives it a kick-start.
The other day I had a thought–Why not start a book club at work? I read a lot, and I generally like to have two books going at a time. One book is fiction (just for fun). The other book is something related to my career, whether it is technical/software, business, or leadership related.
A constant question with regard to a software career is How do you stay current? To this point, it is of equal importance that the entire team (perhaps even all employees in the company, from receptionist to CEO) stay current. (As a software guy, I am biased, but I feel that software careers have greater requisite upkeep than any.)
I was eating lunch with a friend the other day when I first mentioned this idea. “Funny you should say that,” he said, “I just started doing that very thing where I work.” Read the rest of this entry »
Not long after my daughters got iPod Touches for Christmas (from their grandparents), I received this text message from my youngest. It’s difficult to get your sister in trouble when being so unintentionally cute.
The other day my daughter wanted to heat up some soup in the microwave. She insisted on doing it herself. The lid of the Campbell’s Soup can the type with a tab that can be opened without a can opener. She stood in front of her mother as she attempted to open the can, wrestling with it a little. “Lift the tap up, and then pull on it,” her mother instructed. She added, “I really think you should open it in the kitchen over the sink.”
My daughter struggled with the lid, but still didn’t want help–she wanted to prove to us and to herself that she was capable. Soon enough Campbell’s Double Noodles were spilled all over the floor and her mother. Oops.
Did we get mad? No way! How could we? We knew the possible outcomes, but we also knew that we had to allow our daughter to figure this out. My daughter learned a few things in this situation:
- How to open a can of soup.
- What can go wrong if you tip the can sideways while opening.
- Why she should have done it over the sink.
I have my wallpaper set up on my Macbook to change images every 5 minutes. It shows images within a particular event that I have set up in iPhoto. This is all fine and nice, but what if I get bored with the image that is randomly chosen?
I found this Applescript by Googling the problem (I modified it a bit):
tell application "System Events"
set rotinterval to change interval of current desktop
set change interval of current desktop to rotinterval
Simply changing the interval changes the desktop image.
That works… But I wanted to be able to change the background image with a keyboard shortcut (and I didn’t want to install any third party tools). To do this, I went into Automator and created a new Service. I set the service to receive No Input and work in Any Application.
Next, go to System Preferences–>Keyboard–>Keyboard Shortcuts–>Services. You should see your new service listed there. Assign a keyboard shortcut (I went with control-0). Voila! I can quickly change my background image any time I get board with the one that is currently displayed.
When Ben found this block of code, he had some questions: who wrote it, and what was it supposed to do?
if (showOptionsButton == true) showOptionsButton = false; if (showOptionsButton == false) showOptionsButton = true;
According to this recent article (Canadian HR Reporter), the high starting salaries are still in fields related to software and other fields of engineering.
The careers with the highest starting salaries for graduates with a bachelor’s degree in the United States are software engineering ($71,666) (all numbers US$), industrial engineering ($62,245), chemical engineering ($57,500), electrical/electronic engineering ($57,145), and computer science ($55,664), according to the Employers Resource Association (ERA).
If you’re going to spend outrageous sums of money on college, make it count. (But don’t go into software because you think you’ll make a lot of money. If you don’t love it, you’ll hate it.)