Mark Freedman’s Blog |
|
|
Productivity through technology, and other related topics.
|
What I’m about to say does not pertain to everyone having trouble finding employment in software development during this difficult time, but DO NOT fall into the trap of automatically believing that you’re one of the exceptions. It’s likely that you’re not.
People have been asking if I had any advice for software developers who find themselves out of work due to the economy. I think they’re looking for consoling words, but instead I’m going to provide a reality check.
A few months ago, my company was searching for a couple of developers. So for the first time in over a year, I started interviewing developers again, starting with the phone tech. And I was very discouraged at what I experienced, even after filtering out candidates from the resumes we received. The quality of candidates have always been a very mixed bag. After all, as Joel Spolsky makes abundantly clear, “The great software developers, indeed, the best people in every field, are quite simply never on the market.” But the drop-off of overall quality has been significant. If you don’t want to find yourself included in that group, I recommend you come to terms with the following…
Reality Check # 1: If your phone tech runs 15 minutes or less, you’ve failed. And most phone interviews last less than 15 minutes. I’m not exaggerating – 9 out of 10 people I interview are off the phone within 15 minutes. If you don’t care enough about your craft, you’re probably hurting the company you’re currently working for. If you don’t care about preparing for your interview, then not only should you second guess your career choice, you should also work on changing your attitude before considering another field.
Reality Check # 2: If you don’t take the time to think about what you’re doing, you won’t be much help to a company that cares at all about quality. If you can’t answer why you’d choose one technique or technology over another, or show critical thinking, you’re probably not providing enough value to your company. You risk being one of the next to be laid off, if you haven’t been already.
Some people claim there’s a place for "heads-down" coders, but if I just described you in the previous section, you wouldn’t even fit that description. Even heads-down coders need to make internal decisions every day. You’re likely doing things the way you do because perhaps someone once told you to do it that way, or you learned it from the book you’ve read on the topic (telling you "what" you need to do, but not "why" you’d choose to do it that way). You could be hurting your company and don’t even know it, or care.
And that’s the part that’s most frustrating. It seems that most "developers" I’ve interviewed don’t really care. It seems they think that all they need to do is throw out some textbook answers to questions, and it’s good enough to prove that they’re programmers.
That is completely wrong.
I don’t believe the resumes I see anymore. They’re virtually useless. They’re just there for the collection of people I may need to call and filter out over the phone, because all they do is list technologies the person may have used at one time or another. And I don’t even believe that. Sometimes they just list buzzwords they could give one line definitions of, if asked.
I once interviewed someone who claimed to be a C programmer, but when he showed up for the face-to-face, he admitted, while looking me in the eye, that he only watched his roommate program in C! I’m sure many people have stories like this one, or the one where a friend interviewed someone, and only found out at the end of the interview that the person he was speaking with was actually the roommate of the person he meant to interview, but the other guy wasn’t home yet! The “candidate” went through the entire interview, and then confessed “as a matter of fact” at the end of it!
Reality Check # 3: People complain about jobs going to another country. Well, if you’re going to claim you’re a developer, but you don’t take an interest in your career, then your job could definitely go to someone who’s not afraid to really think. I have rarely met a quality developer who lost their job to outsourcing and had been unable to quickly find another development job – even in this climate. True developers are in very short supply, and do not stay unemployed for long.
If you don’t want be another "outsourcing statistic", you owe it to yourself to show dedication to your career, and learn how to truly “think". It may be difficult to imagine, but some people actually act like thinking hurts. People aren’t taught how to think in school anymore, and I doubt they ever have. I was rarely taught “critical thinking” at school in the 60s and 70s. I learned on my own, from my parents, and from books. But I run into too many people who assume they’ve learned everything they need to know by the time they graduate. This is the difference between "book smart" and "common sense".
Reality Check # 4: Your career is your own responsibility – nobody else’s, institutional or otherwise. Show me a company that hires non-critical thinkers, and I’ll show you a company to avoid investing in. If you entered this field because you’d heard you can make a lot of money, but then you didn’t take the time to learn the "whys" and "whens" to do things, and all you did was "memorize" the "hows", you’ll be quickly found out. You can’t hide behind that. And then you may wonder why you don’t earn what you expected, or why you’ve been downsized.
Reality Check # 5: It shows up in many ways. It shows up at meetings, when someone asks you how you’d implement something, and you use a generic answer, like, "I’ll write a module like I did for that other project, and just copy the code and change some strings." Or someone will ask for a feature, and you’ll just nod your head, maybe take a note or two, and never question a thing about their business. And then the stakeholder will wonder why you aren’t asking questions, and lose confidence.
During an interview, I’ll find out within a few questions if you’re just a "pretender". And if you think you can look up the answers while on the phone, and I hear paper rustling in the background, I’d know you haven’t been keeping up with the field – because if you had, you wouldn’t even be rustling through papers – you’d be clicking the mouse or typing! Even if I didn’t hear keyboard or mouse activity, I’d still know quickly, because you wouldn’t be able to answer the follow-up "why" or "when" questions. This is not multiple choice.
Reality Check # 6: What shocks me is that if someone made any attempt at all, it’s impossible to avoid accidentally finding the key information on these topics even if they tried. There’s so much information out there, anywhere you’d click would lead you to discussions explaining, discussing, and debating the whys and whens. We’re drowning in it!
If someone isn’t even learning by accident, then they just don’t care. I’d much rather hire an inexperienced developer than someone who just happens to know some facts about programming. I’d much rather hire someone who shows some passion for our field.
You chose this field. And even if you can’t get passionate about it, your life truly does depend upon understanding why things are done the way they are in our field, and how to make choices in your approach to a problem.
Don’t use the excuse that you don’t have enough time because you have kids, or you’re busy with other things. We’re all extremely busy. This stuff is fundamental. If you can’t make the time for this, you’re wasting every moment. A moment that someone else, somewhere else, is not wasting.
Why do you think companies like Microsoft and Google are famous for their non-technical questions? Some people think it’s because they’re looking for the smartest people. I’d challenge that and hypothesize that they’re not just looking for the smartest people. They’re looking for people with the capacity for learning. It doesn’t come from knowing facts. Even if you clean toilets for a living, you need to make decisions on how to do it the best way possible.
Like those companies, we’re not looking for people who know everything. There’s way too much to learn. We’re looking for people who aren’t afraid to think. Who aren’t afraid to make a decision and stand by it. Who can research their options and make an intelligent choice based upon the situation. Who care enough to understand the fundamentals, but also know how to learn about what they don’t know. Only about 10% of the people I’ve interviewed have shown a desire to do so. Is it that they just don’t know how to handle an interview? There’s so much information available about that, so I don’t give them a bye for it. So many people are just willing to settle. To just to get by. Everyone gets physically lazy at times, but that’s just fatigue. In my opinion, actual laziness is the lack of desire to think.
Obviously, some people just don’t interview well. Many are very nervous on an interview. Hell, I’m nervous giving an interview. That’s excusable, understandable, and never plays into my decision for consideration. But you can almost immediately tell the difference between nervousness and dedication.
Any company choosing to not bother even speaking to 90% of the pretenders out there should dominate their industry. Why do you think Microsoft, Google, and Apple are where they are?
Once you get past the first 15 minutes of an interview with us, where all we ask are the foundational questions, the next part involves asking for concrete examples of when you had to actually make decisions. Sounds simple, right? Well, at least half of the people who make it past the first part can’t do this. The third part is where we try to dig into why you chose this field to begin with, and to gauge your dedication to the craft.
If you can get past those first two parts, we’ll usually call you in for a face-to-face. This is where we’ll find out how well you can fit our team, and how you implement what you know. This is why we’ll give you an actual programming exercise. We really don’t care too much if you finish the task. We just want to see how you work. We learn a lot just by observation.
If you aren’t going for an analyst or architectural position, we’re still going to ask you questions that require analytical thinking. Maybe back in the 70s and 80s companies could get by with heads-down, don’t ask questions, locked-in-a-room coders. But these days there are so many things to consider beyond specific programming tasks, that everything you do requires some level of analytical and critical thinking. I feel that’s the most important and rewarding part of being a software developer. If you remember the simple point that programmers are actually problem solvers who use technology as the tool for solving them, you’ll understand why everything I’ve mentioned in this article is so important.
It’s sad to see so many people just sleepwalking through their career. If you care at all about your career and the field you’ve chosen, you should have little problem getting or keeping a job, even in this economy.
Ok, so I’ve smacked you in the face and woken you up. Now what? You’ve decided that you really do care, and that your job is in a tenuous position. Where do you turn? The good news is that there’s an abundance of resources available; more than you can even handle. Sometimes the flood of information can be overwhelming and off putting. But I’d start with the resources that’ll help you keep your finger on what’s most important. You normally won’t get into detailed learning with the following, but they’re invaluable for making you aware of what’s important in our industry, and will direct you if you’re interested in a deep dive. I’m focusing on the .NET development community here, because I work mainly with Microsoft technologies. But there are so many resources out there for all technologies.
Since there are many directions you can go with your skills, it’s important that you keep up with what’s happening. Then you can choose what you want to dive into. You can make a great living specializing in just a couple of technologies. But you can’t even get there until you become aware of what’s out there, and what’s in demand. Look at the topics discussed. Do a bit of research before attending a user group meeting or listening to a podcast.
Local user groups: almost every large city has an active user group nearby. These are invaluable, not only for keeping up with the field, but also for networking. I help run two of them: the Fairfield / Westchester .NET and the Fairfield / Westchester SQL Server user groups, both in Stamford, CT. You can also visit the following websites to find user groups and events in your area:
Podcasts: there are many podcasts that have their finger on the pulse of the industry. I can’t even imagine how much of a positive impact these resources have had on my career and my life. Based on my average commute, I’d lose around 500 hours per year if all I did was drive during these hours. But instead, I spend about 3 "working" months a year in "school" in my car. That’s three entire months! Here are the podcasts I regularly listen to which have been an enormous benefit. I can’t imagine where I’d be without them:
Once you’re ready to dig deeper, there are so many more resources. It gets old when I ask candidates how they keep up with the field, and the common response they think I want to hear is just, "I visit the MSDN site often." That only shows me that they’ve kept their head in the sand for a long time.
There are so many other resources, I won’t even attempt to expand on this list here. Just check out the links on some of these other sites. There’s just no excuse for not keeping up with our field, and preparing for a new job. You just need to have a bit of desire and care for your career. If you need help working on your resume, just google it. There’s so much info out there. I haven’t had to make use of these resources lately, so I can’t really recommend one over the other. But I can recommend an article by my daughter. Her resume tip article targets recent college graduates, but everyone could benefit from most of her tips.
Good luck!
If you don’t recognize the reference of the title, it’s based on a song from the old Wonderama TV show, “Kids are People Too”.
Since the latest U2 album was leaked (and subsequently released), there’s been a remarkable reaction, which has me thinking again about something that I’ve always found curious. The range of opinions on the album is extraordinary. Although the percentage of people who love the album as compared to those who don’t like it is around an 85 to 15 ratio, the minority is vocal, and feel very strongly about how they feel. Some of them are long time U2 fans who are deeply disappointed. For people like me, who absolutely love the album, and think its some of their best work ever, it’s as hard to understand their point of view, as it is for them to understand how people could like it.
And I think I know why.
Songs are a lot like people.
Did you ever have a friend who was dating someone you couldn’t stand, or who was the last person in the world you’d ever think they’d be with? Exactly. Human / human relationships are based on a complex chemical relationship. You can call it physical or spiritual; it doesn’t matter. But our relationship with music has exactly the same basis. It’s entirely personal, and there is nothing you can ever do to force people to feel how you do about an album or song.
Music is one of the wonders of the world. Mathematicians and music theorists have always tried to explain our relationship with music. But I think we understand it as well as we understand human / human relationships. That is — very little.
You know how hearing just a few notes of a song can trigger a memory or a feeling? Doesn’t the same happen in fleeting moments with other people?
And yet, we still tend to give music the benefit of a doubt more than we do other people. You’re familiar with the saying, “first impressions last“, right? That’s almost always true for relationships between people. It’s extremely rare that a person get a second chance after meeting someone for the first time, to change the impression they’ve projected. But with music, we sometimes admit that some music needs to “grow” on us. “It’s a grower,” we’d claim. How often do we say that about people? “Yeah, John may grow on me.” I think we can learn something there, and it shakes up my theory a bit, but nevertheless…
…well, there’s another difference between music and people. Songs don’t have feelings. Well, I take that back — songs have proxies for feelings — the people who like them. We’ll stick up for music like it’s our own spouse or kids. We feel hurt when other people don’t like the same albums we like. Especially if we generally respect their taste in music. Just like we felt frustrated when our best friends didn’t like our boyfriend / girlfriend.
And that’s why we see so many passionate debates about topics like the latest U2 album. Debates that turn into mudslinging affairs where everyone ends up feeling hurt. Besides politics and religion, there’s nothing people get more passionate about than music. Well, maybe Macs vs. PCs, but that’s usually reserved for weirdo techies like myself.
Did you ever immediately click with someone that your friends hated? The type of person you’d usually avoid? Well, did you ever get into a song or album of a type of music you usually could not stand? Humans and music share an extremely complex relationship. If you break a person down into all their different personality traits, you’d never get to the bottom of their essence. Humans are much more than the sum of their parts. Music is the same. Even a simple-sounding song, as, say, “The Day Before The Day” by Dido. It’s easily one of my favorite songs of all time, but it’s really very simple. All it takes is a hook in a couple of right places, inflection here and there, a note placed perfectly, and the right pause between a couple of notes or lyrical phrase, and it’s taken to a level that can only be reached as a whole.
Why do you think Pandora requests input on each song it plays for you, even though it has an advanced “genome” recognition system? It’s because they realize the complexity of music and our musical tastes. No matter how advanced their analytical system is, there’s no way they’ll ever be finished learning about our tastes.
So, when the rest of your family sees dear old Aunt Beatrice as a whacko, don’t hold it against them. They just never gave her a chance to “grow” on them. Just like you never let “No Line on the Horizon” grow on you.
If you love the new U2, great. You’re happy. If you’re disappointed in it, although it doesn’t feel very good right now, don’t worry. Listen to the U2 you loved in the past. Listen to other music — there’ so much out there. As the old saying goes, “there are other fish in the sea.” And you are definitely not alone.
But you may want to give “Aunt Beatrice” another chance.
As I look back over my career, it often pains me to remember the many mistakes I’ve made. But when I push past the pain and embarrassment, I also recall how I’ve used those experiences to improve myself. It’s so true that you come to appreciate the really hard times so much more as the years go by. You try to prevent the people you manage from making mistakes, but it’s often beneficial for them to make those same mistakes, and to feel the same pain. That’s how we learn best. Your real job is to help them pick up the pieces and assist them in learning from their mistakes. Isn’t management a lot like parenting?
We all make many mistakes throughout our careers. But when the time comes for you to take on a management role, you’re forced to think about them. In order to manage effectively, you absolutely must dip into your first-hand experience of the mistakes you’ve made.
Maybe you’ve had the opportunity to work somewhere for several years, with the same core group of people. Maybe you work in one of those fields where you always seem to run into the same people at future jobs. They get to know your warts, and they often — no, always — remember your mistakes. And if you eventually have to manage these people, they will remind you of those mistakes whenever you scold them for making the same ones.
So, how can we manage effectively, while being accused of hypocrisy?
Remember that although you’ve made the same mistakes in the past, you’ve learned from them. And if you play this right, you can use the opportunity to mentor your team towards improvement.
Admit to them that you definitely remember making the same mistakes, even recently, but that you’ve learned from it. Express your complete empathy, since you’ve been in their position. Remind them that if you can learn from a mistake and change, so could they. And remind them that the simple fact that they’re calling you on it, they’re recognizing it as a mistake. And that’s always the first step towards correcting it.
As the saying goes — good decisions come from experience, and experience comes from bad decisions. We all make mistakes. Use yourself as an example, and you may even earn more of their respect in the process.
Wow, it’s been a very long time since I’ve posted. I’m not a fan of posting about why I haven’t been posting, but if you don’t tell, I won’t.
A lot of changes going on in my life… Got a promotion at work (and an office, but everyone ignores the door being closed — I know. It’s my own fault).
I helped out with preparations for NYC Code Camp III (which I missed, and will likely regret that forever, or at least until next year’s code camp). I recently attended the NYC MDC, and I’ll be headed to MIX09 in March, compliments of Microsoft — with the expectation that I’ll be presenting to my user group and others on the topics I attend. So I’ve ran out of excuses for not speaking. Good.
As far as the user groups are concerned, due to the state of the economy, UCONN is starting to charge for the use of the rooms. The price is enormous. We were able to secure a single (free) room, thanks to the CITI division, the second Wednesdays of the month, which was the normal day for the SQL Server User Group. So we’ll be merging the groups this year, into the .NET User Group, with about 75% of the sessions focused on .NET, and 25% on SQL Server. It remains to be seen what the effect is on a potential Code Camp this year.
I got an iPhone, which has been the biggest time sink of my life. And loving it.
I got a MacBook Pro, so I could learn how to program the iPhone, because that’s how much it has enthralled me. And loving it.
I’ve been learning how to program for the Mac, using Xcode, Cocoa, and Objective-C, so I could get comfortable with the tools in order to more easily transfer this to learning how to program the iPhone.
I’m planning many articles about several topics. I have a lot to get off my chest, and some of it ain’t pretty.
I know I’ve been all over the map lately, but i think that’s ok, as long as I post more consistently. The main focus is still on productivity through technology, but other parts of myself will still come through. With that said, let’s move beyond this “excuse” post, and I’ll write again soon.
The most important question is always why. Why do you think that is?
Picture a familiar scenario. Your young child asks one day…
"Why did you marry Mommy?"
"Because we love each other."
"But, why?"
"Because we grew to care for each other."
"Why?"
"We were attracted to each other…"
"Why?"
"…so we started to spend time together."
"But why not somebody else?"
"Because we felt that we were meant for each other."
"Why did you think that?"
"Because."
"Why?"
It may be annoying, but isn’t that how we always learned as kids? Sure, as kids we knew quickly that it bugged adults, but we kept asking for two reasons. 1) It got a rise out of grownups, and 2) we really did learn a lot by asking.
Why did we stop? Did we start to feel uncomfortable asking the why question? Maybe we felt as though it intruded on the askee. As we matured, did we start to feel it was rude?
In this information age, we are constantly bombarded with more information in a week than our ancestors in their entire lives. We’re drowning in facts and figures, and overwhelmed with the available knowledge. But at the same time, it takes us too long to find the answers we’re looking for. Why is that? Are we not asking the right questions, or are we avoiding the why questions?
Sometimes we’re afraid to answer the why questions, because it may expose our lack of understanding. Once you can ask why , you’re on the path to learning.
"Why would I use a GridView instead of a Repeater?"
Doesn’t it feel safer to just lookup details about the GridView control and the Repeater control and just compare them ourselves? Don’t want to seem stupid for asking why we’d use one over the other, right?
Too many books and tutorials start out with the "do this, then do that" without explaining why. "Why did you take this approach?"
The question that triggers the most thinking is the why question. Whys will make you wiser.
If someone fails at something, they ask themselves all kinds of questions. "What did I do? How do I make this different next time?" But the question they’ll get the most out of is, "Why did I choose to do it that way? Why should I do it differently next time?" By asking the why , you learn a lot about the motivating factors that led towards the path of failure to begin with, so you can avoid that same path next time. Maybe your motivations were wrong. Maybe your decisions were based on faulty or incomplete information. Asking what will only lead to identifying what you did wrong. But without understanding the "why", there is no basis for change. You can easily repeat the same mistakes.
If you’re teaching someone, ask yourself why you’re teaching that way. By questioning yourself, you may discover a better way to explain things.
Just stating what to do can come off as arrogant. It’s like your parents telling you when you were younger, "do it because I said so" — like that actually motivated you to do it. It actually motivated you to do the opposite, just to discover the why , yourself. Why do they want you to do it, and what would happen if you didn’t? Why helps you fill in gaps of knowledge.
If you want someone to do something, explaining the why allows them to feel more apt to do it. In the worst case, at least maybe they could suggest a better option if they at least they know your motivation.
Why is an extremely powerful question with potentially powerful answers. It teaches us to question everything. We live in a society where we take almost everything for granted. That’s because most people are afraid of asking why . The answers may challenge the way we’ve always approached things our whole lives. But at the same time, it opens up a whole new set of opportunities.
Why is the key to self-discovery. It helps you understand yourself better. At the same time, it’s the scariest question you could ask of yourself. It forces you to look into the mirror.
All questions are powerful, but if you start with why, the what, how, and when just fills in the blanks to resolve the why .
This is also why multiple choice tests are a very poor learning tool. It tests memorization. They ask the what, not the why. Essay questions are the why questions. It forces us to think. It forces us to analyze, which leads to true learning. Unfortunately, the system encourages the simple (for teachers) multiple choice tests.
Why do you think the Imponderables series of books are so popular? Because most of the questions start out with why . Why is the most interesting question. Their answers satisfy our curiosity. Be aware that some what questions are just why questions in disguise, so don’t take it literally when I say that why questions are the most important. Related why disguises are "What is the reason for that? What is the meaning of that? How can you do that?" (all of them really mean, "Why did you do that?" ), etc.
When someone is reporting bad news, isn’t the first question that comes to mind the why question? "Why would somebody commit that crime? Why was that person in that neighborhood so late?" Why do they want to start a war?" One of the first things investigators look for is the motive for a crime. While the CSIs look for the what to help prove a crime was committed and by whom, when deciding guilt or the level of punishment, it all comes down to the why. He can be guilty if we could find a motivation he may have had. Once we have a motivation, we can tie him to the crime.
Why questions should make you pause to consider your answer, and not just shoot from the hip. "Why did that person cut me off?" should cause you to consider that maybe she just got an emergency phone call, or she’s rushing to the hospital, or she’s late for work, instead of just saying, "she’s a jerk." If nothing else, it could allow you to calm down and consider why someone did something rather than what they just did to you.
Why is the most fascinating question. Don’t fear it. It’s a powerful tool. Wield it.