Computer Science Starting Salaries

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.)

Interview Advice

I’ve been on countless interviews, and I’ve learned a few things along the way. I don’t consider myself an expert by any means, but I’ve learned how to interview well. It took a while to figure it out, but I’ve learned that interviewing isn’t difficult. On the contrary, if you are focused and willing to view the process as a potentially fun learning experience, interviews can be great experiences.

I was astonished to read this article on CNBC: Managers to Millenials: Job Interview No Time to Text:

Human resource professionals say they’ve seen recent college grads text or take calls in interviews, dress inappropriately, use slang or overly casual language, and exhibit other oddball behavior.

“It’s behavior that may be completely appropriate outside the interview,” says Jaime Fall, vice president of the HR Policy Association. “The interview is still a traditional environment.”

Oh my! If you are texting or taking a phone call during a job interview, you have MUCH to learn. My hope is that such an occurrence is rare. Having been on both sides of the interview table, if I saw someone read a text message I would probably inquire as to the reason. I’ve never had this happen. Perhaps there is a family emergency.

I once went into a job interview very near my wife’s due date. I explained up front that my wife and I had an agreement: If my phone buzzes twice in a row and it is her, I have to take it. “My wife is going into labor,” is a perfectly fine reason to take a call in an interview. I can think of a few other reasons that necessitate taking a call or text during an interview, but only a few. (My wife, thankfully, did not go into labor during that interview. And yes, I did get the job.)

I love interviewing. I mean it: I enjoy going on a job interview! That sounds strange to some, I know. I look at it this way: Either I’ll get a job offer or I won’t. In either case, I am meeting new people and making contacts–and, whatever the outcome, I am becoming a better interviewee. As a child I was a very shy kid–scared to death of talking to people. Perhaps I’m making up for lost time, but talking to people–getting to know new people–is fun.

So here is my list of tips: Continue reading

YouTube to MP3

MediaHuman: YouTube to MP3I’ve gotta plug this tool: MediaHuman Youtube to MP3. A while back a friend sent me a link to a video of this guy, Shakey Graves, playing a song called Late July. I immediately loved the song, as well as all the other Shakey Graves songs I found on YouTube, and I purchased both of the albums that the artist has for sale. He is a fantastic guitarist, singer, and songwriter.

I was disappointed, however, that I could not find some of the versions that appear on YouTube. The YouTube to MP3 coverter (free), works on both Mac and Windows, and makes it extremely easy to convert the audio from a video to an MP3. It even ignores the ads (if an add appears before the video). Now I am happily listening to all of the great music Shakey Graves has available. “Mr. Graves,” if you’re reading this, I welcome the opportunity to buy all of your music!


Shakey Graves

SDJ Article

Screen Shot 2013-04-17 at 12.39.09 PMIt is a thrill and an honor to have an article published in a journal, especially Software Developer’s Journal. This is the second time I have had such an honor. My article, Do Not Flounder, appears in the June, 2013 issue.

“Do not flounder!” by Matthew Rupert will surely leave all software engineers entertained and intrigued”

The print edition is soon to come, and I’ll scan and include my article here. I just received a pdf copy of the issue today. It is a subscription-only publication, so unfortunately there is no link to share. Many thanks to the folks at SDJ for making this happen!

Software Developer’s Journal
SDJ: Do Not Flounder, June 2013

Doctor Mac

Grandpa MacMy grandfather was, in a number of ways, larger than life. He was physically large–a massive man with a huge belly and equally huge appetite (an appetite which I seem to have inherited, and battle by running). His involvement in the lives of many people was even larger–He was very well respected by the folks of Terre Haute, Indiana. His life story is fascinating, and I love to hear my mother relay stories about him. He is a man whose generosity superseded any kind of budgetary sense, and from what I know, he often helped people for free, and sometimes based payment on the result of a coin toss (HMO’s be damned, he was a doctor who wanted to help people). People listened to him–he was the doctor, and if one questioned his judgment, he wasn’t afraid to speak his mind. Continue reading

The Planets Song

What does this song have to do with work? Nothing! But also, everything!

Not long ago my oldest daughter was learning about the planets. She had to memorize them in order staring with Mercury and ending with Neptune (and I still can’t help but want to stick Pluto in there–we all have some form of inner Luddite). I didn’t realize that I had forgotten the order of the planets myself–at least its not something I’d thought about in a while. Because my daughters are in 3rd and 1st grade, they still think I know everything, so not wanting to admit that I couldn’t rattle off all of the planets in order, we went to Youtube to see if we could find a song to help… We found The Planets Song. Continue reading

Tire Swing

photo1.JPGWhen my family and I first moved to North Carolina, we were fascinated by something that we didn’t have in Illinois: Trees. BIG ONES! Huge, tall trees right there in our back yard! It was like living in a forest. My children immediately wanted me to build some sort of tree fort. And as much as I did want to build one, I realized that my Homer Simpson-like skills with woodwork would make for a rather hideous scar on an otherwise lovely back yard.

Before I continue, let me apologize for the appearance of the “grass” in the back yard. This is a very shaded area where grass doesn’t thrive.

I did wish to copy something my brother-in-law had done: A cool spinning tire swing. I just knew this would result in endless fun, laughter, good times and great memories. And it would be cheap, right? Heck, they give old tires away for free at the tire store. I’d just need a few chains, some clips and rope and stuff. Continue reading

Life at Google

NY Times has an article about working at Google: Looking for a Lesson in Google’s Perks.

Among them:

  • private reading areas
  • comfy chairs (take your laptop elsewhere for a change of environment)
  • custom workspaces (let employees choose their equipment)
  • fitness classes
  • in-house courses (on a range of subjects)
  • free food/snacks

All of this is designed to make the workplace one that is both fun and productive. Of course, in a company with the size and profits of Google, such things seem to work very well. From the article:

Ben Waber, who has a Ph.D. from M.I.T. and is the author of “People Analytics,” is, at 29, the median age of Google employees. His company, Sociometric Solutions in Boston, uses data to assess workplace interactions. “Google has really been out front in this field,” he said. “They’ve looked at the data to see how people are collaborating. Physical space is the biggest lever to encourage collaboration. And the data are clear that the biggest driver of performance in complex industries like software is serendipitous interaction. For this to happen, you also need to shape a community. That means if you’re stressed, there’s someone to help, to take up the slack. If you’re surrounded by friends, you’re happier, you’re more loyal, you’re more productive. Google looks at this holistically. It’s the antithesis of the old factory model, where people were just cogs in a machine.”

The overall tone (and the article is written somewhat as a response to Yahoo’s recent clampdown on working from home), it seems that the goal at Google is to inspire people to enjoy work and collaborate more effectively. Continue reading

Hey Y’all!

ImageI moved to Raleigh from Chicago (suburbs) nearly 3 years ago now. I’ll never forget the first time my wife and I went shopping at Home Depot and Walmart. Two things surprised us:

1. We knew there would be Southern accents around here, but we didn’t expect them to be as pronounced as we found.

2. We were surprised by how talkative and friendly people seemed (and slow to move the checkout line along while they chatted). Continue reading

Success as a Technical Lead – Article

I stumbled upon this article today. Its a little dated (from 2008), but still relevant. I don’t think the list is comprehensive, and I certainly think other technical leads would have varying opinions on things. All of the points listed are good, but there are a some points that really stand out:

6. Be part in the design of everything
This does not mean do the whole design. You want to empower team members. But your job is to understand and influence each significant subsystem in order to maintain architectural integrity.

7. Get your hands dirty and code
Yes you should take parts of the code and implement them. Even the least glamorous parts. This will help you not getting stuck alone between management and the team. It will also help you gain respect in the team.

20. Don’t blame anybody publicly for anything
In fact as a tech lead you cannot blame anybody but yourself for anything. The moment you blame a team member in public is the moment when the team starts to die. Internal problems have to be solved internally and preferably privately.

24. Mentor people
It is your job to raise the education level of your team. By doing this you can build relationships at a more personal level and this will gel the team faster and harder. It is very effective with more junior people in the team but there are ways to approach even more senior members, just try not to behave like a teacher.

25. Listen to and learn from people
Even if you are the most experienced developer on the team you can always find new things and learn form others. Nobody is a specialist in everything and some of your team members can be domain specialists who can teach you a lot.

28. Be sure you get requirements and not architecture/design masked as requirements
Sometimes business people fancy themselves architects, sometimes they just speak in examples. They can ask for technology XYZ to be used when what they really mean is they want some degree of scalability. Be sure to avoid hurting feelings but be firm and re-word everything that seems like implied architecture. Get real requirements. To be able to do this you have to understand the business.

36. React to surprises with calm and with documented answers
Never get carried away with refuses or promises when confronted with surprises. Ask for time to think and document/justify your answers. It will make you look better and it will get you out of ugly situations.

A theme throughout the list, and throughout a number of similar books and articles with such advice, is that a good technical lead appreciates and values the various talent and particular skills of the team. A great technical leader isn’t necessarily the “know it all” of the group. He or she should certainly be skilled and eager to maintain that skill–and even be a great developer. But smartest person in the room? Maybe. Maybe not. Personally, I like working around people who are smarter than me. This is the best way to learn.

And there’s a flip side to number 20: Don’t blame people publicly for problems, but be quick to praise people for successes, major and minor. A sense of recognition for one’s diligence is tremendous motivator. I don’t know a single person who doesn’t appreciate kudos. Most parents realize that their children respond better to positive reinforcement than negative… This doesn’t change when one reaches a certain age. I’m not suggesting that a team member not be confronted for problems. Of course he or she should (and must).

Very recently a company-wide email spoke of a major success of mine (successful deployment of a year long project), and mentioned me by name. It felt great, and it made me want to continue with even more success (and it was a great confidence boost). Simple put, its good to know that the folks at the top of the organization are aware and appreciative of the work of those in the trenches!

This all may sound like a lot of feel-good fluff. It isn’t.

Little Tutorials: 36 Steps to Success as a Technical Lead

Writing

Like all software engineers that I’ve ever met, I have a few other interests. One of those is writing (although I argue that the ability to write, and to do so well is an important skill in the life of a software developer).

My favorite book about writing fiction is Stephen King’s On Writing. He’s the modern master–even his critics must admit as much–And this book is full of great advice.

Of course, The Elements of Style is ABSOLUTELY required. This book should be on the desk of anyone who writes.

Just last night I discovered a fantastic book on Amazon, and I purchased it because of the negative reviews. It had many 5-star reviews, of course, but a good many 1-star reviews decried the author as filthy and crude. I was sold!

The book: 250 Things You Should Know About Writing, by Chuck Wendig. AT 99 cents on the Kindle, it was well worth it. I read most of it in one sitting, and will read it again.

“Grandpa” the Programmer

I don’t buy into the idea that older programmers are less up on newer technology/languages/methods/etc. than their younger counterparts. It depends on the individual. It may be true that at some point people become less interested in learning new things, but this is very different.

[Computer World: Steven J. Vaughan-Nichols: Grandpa the programmer]

6 Developers, One Room

Under an extremely tight deadline one team member decided that it would be best if the developers took over a conference room. On a long conference room table there are 6 computers, and 6 extremely talented developers chat, joke, brainstorm and work away. The manager of the team is there too, explaining requirements and helping to clarify definitions and functionality.

There is pizza, too.

Its like that scene in Apollo 13 where the engineers have to figure out how to get the Apollo back to Earth. Ideas bounce freely and communication is immediate. I don’t have to wait for a response to an email or a response in a chat window (which may or may not come). And there’s something about sharing a space with a common goal: The team seems to gel. There is little or no arguing or passive-aggressive commentary as I have seen in meetings throughout my career. We’re all in this together, after all.

I’ve never seen software written with such efficiency.

Staying Current

During nearly ever job interview I’ve ever had, on the phone or face-to-face, I’ve been asked some form of the question, “How do you keep your experience current?”

Sometimes (emphasis on sometimes) this is asked by someone who seems impressed that I have such knowledge on a fair amount of “new stuff.” More often this is a genuine question (and a very good one) asked of an interviewee in an effort to gauge the type of software engineer that this candidate may be. Does this candidate have a desire to keep current with emerging trends? In many ways this is a unique necessity in the world of software engineering as a career.

Software engineering is a discipline that requires a real love of the work. Its not something that anyone hoping to find easy employment stability along with a solid paycheck should pursue (warning to those considering Computer Science).

So the question remains: How do you “keep current?”

No matter how much I love software, the fact remains that I have a life outside of work: family, friends, hobbies… Its not easy, but its necessary. One guy suggests learning a language every year. I like to pick up books that look interesting, read Stack Overflow and listen to podcasts. Woe to the “software engineer” who wishes to dismiss all emerging technologies as gimmicks or buzzwords… Such engineers will quickly find themselves (if lucky) performing maintenance work on antiquated legacy code. As long as software is something of a hobby, something that is personally rewarding, all of the above should be easy enough.

While all of the above is good, and its even better to have a pet project, I have found that nothing compares to working around extremely intelligent people for a company that is serious about software.