Here’s the letter, it’s kind of LOLz! I know it’s tough to find .NET Developers (or replace .NET with Java Developers or X Enterprise Language), so CIOs, CTOs and others take note. Here’s what I experience and what I see all the time, embodied in a letter. I will put effort into hooking people up with good jobs, that fit the person, and persons that fit the job, but lately I’ve seen companies that do .NET work in the Portland, Seattle and especially San Francisco areas become exceedingly desperate for .NET Developers. This is what my general response looks like.
“Hello Recruiter Looking for .NET Developer(s), thanks for reaching out to me, however I regret to inform you that I don’t know a single .NET Developer in Portland Oregon looking for work. It seems all the .NET Developers have either A: gone to work for Microsoft on Node.js Technologies, B: switched from being a .NET Developer to a Software Developer or otherwise C: left the field and don’t want to see any software ever again (which always makes me sad when people burn out, but alas, hopefully they find something they love). It’s a funny world we live in.
Even though I’m fairly well connected in Portland, Seattle, Vancouver (BC) and even San Francisco it is rare for me to meet someone who wants to do pure .NET Development. If there is I’ll connect them with you. However if you know a company that is porting away from .NET, building greenfield applications in Node.js, Ruby on Rails or other open source stacks I have a few software developers that might be interested.
Even though this letter is geared toward recruiters looking for coders, there is another letter that I’d like to write to a lot of other companies, that goes something like this,
“Dear Sir or Madam At X Corp Enterprise,
Please realize that lumping a person into the position you’re requesting (.NET Developer) is a career limiting maneuver for many in the occupation of software developers. We software developers are people who solve problems, it happens that we do this with code written on computers. The computers execute that code for us thus resolving the problems that you face. This helps X Corp Enterprise do business better! It’s a great relationship in many ways, but please don’t limit our future careers by mislabeling us.
Also, we’re not resources. That’s just a scummy thing for a human to call another human. Thanks for reading this letter, have a great day at X Corp Enterprise!”
I’d be happy to refer .NETters (or Javaers or COBOLers or RPGers or whatever), but seriously, it seems to be a lost cause out there, even more so for mid-level or beginning developers. Barely a soul is looking for a job as a .NET Developer, but I know a few that look for jobs as software developers every couple of weeks.
Speaking of which, if you are looking for work and you want a filtered list of the cool companies and related information of who to work for in Seattle, Portland or elsewhere in Cascadia reach out to me and let me know who you are. I’m more than happy to help you filter through the mine field of companies and job listings. Cheers!
This is a public letter to all recruiters, human resources or other professionals that are in a *hiring department* that would like to garner referrals from me. I like to categorize my referrals into junior and senior software developers. This is not my interaction process with startups & early round companies, I know you and you know me, things work differently, so if you’re in a startup and looking for people this doesn’t apply to you. This is a letter to help guide how I can help all parties involved in the best way possible.
NOTE: I’m not a recruiter, not intending to be, nor do I work for any recruitment agencies or groups. This is something I do because I enjoy being involved with the tech scene of Portland and have great sympathy for people looking to join good teams. I fought years to find good teams and have enjoyed working with these teams. Matter of fact, I’d say a good team is orders of magnitude more enjoyable to work with than the not good teams. In other words, I try to make things not suck for everybody involved! 😉
For junior developer referrals, I have a few basic requirements and information that I’d like to know if there is a specific job in mind. If you’d just like to talk, I’ll also put you in touch with a junior developer based on this criteria.
For the junior developer the positions should be of reasonable commutes, especially in the current software development market. This means that the commute, one way, should not be anymore than 10-15 minutes either by biking, walking or taking transit. If they want to drive, that’s their concern, but I don’t want to condemn anyone to ever being stuck with a forced auto-dependent commute.
Is there opportunity that the junior dev will be working with other senior developers who will pair code, do code review and otherwise support the individual in a positive and enthusiastic way?
Is the company active in the local community and supportive of new employees and existing employees being involved? Will the encourage and allow the junior developer to get involved and possibly attend workshops, courses, meetups and even conferences that may be during business hours (but likely most are not)?
For senior software developers this gets to be even more particular, especially in Seattle, Portland, San Francisco, New York or Vancouver BC. If I’m going to refer anybody the following items are a baseline.
Does the job offer remote work or some remote work days? How does the team currently communicate with remote employees and what is the split of remote employees vs. in office employees?
Not just is there opportunity to, but is there active pairing, continuous integration or delivery setup and being used?
What is the current management paradigm around architecture decisions, user experience (UX) and other items that are often peripheral to the software development that occurs?
If these questions can be answered in the affirmative then I have some referrals for you. Even if they aren’t, these questions and this information should become standard on any job description, in MANY ways more so than the technology list of skills that are all to common. This last part is something to note for people hiring, not just recruiters.
I’ve also talked more about this far in the past (in tech years). I’ve spent many solid years hiring, firing and generally building teams of people. The following has inadvertently become kind of a series about suggestions to fix the job posts, and where and what the baseline is for building a A-game Team. Much of these suggestions hold true still today.
I started to write a blog entry a few months ago about my time doing developer evangelism. First in practice, along with product management and team leadership and then as a full time developer evangelist with Basho. Then I felt many different things, nothing which translated into a very useful blog entry. Well past any motivation to write up where and what I was doing at the time and why I decided it wasn’t something I wanted to keep pursuing, I ran into this blog entry titled “Developer Evangelism The Whole Story“. At that point I thought, “alright, I’m going to add my two cents after all”.
For one of the same reasons Keith Casey wrote his entry. People have asked me numerous times about becoming an evangelist or advocate. Be sure to read Casey’s write up, and here’s mine to throw more into that fire.
You’ll be able to go to all sorts of cities and meet a whole bunch of different people.
You’ll be on display and actually able to do something to improve the industry. Not just technologically but to help resolve sexism, discrimination and other issues and treat people well.
Do right by people as an evangelist and you’re set for a plethora of possibilities when you finally get burned out.
You get to play with all sorts of tech.
You get to travel a lot, which makes you really start to respect your home base, wherever that may be.
You’re barely ever home, usually you’re on the road with familiarity often becoming the stink of a plane or the confused expression as the TSA security circus actually recognizes you and just starts ignoring you.
Even though you can help improve the industry, you’re ability to make a home, make a difference where you live is dramatically reduced to basically nothing. For most people, considering civic involvement in the United States, this probably doesn’t even matter. For some, it’s destructively depressing.
If you get mis-portrayed, say something dumb out of jest, or the media mis-quotes you it can be anywhere from annoying to career limiting or ending. If you make the mistake of pissing of someone that has a lot of pull then it could also be super destructive – even if that person is a total jack ass and everyone routinely knows it and admits to it.
You get to play with all sorts of tech, but you lose a lot of credibility because you don’t actually build anything real anymore. This is a huge problem, and I’d even suggest most evangelists go work on an actual dev team every other year or so. It doesn’t matter who you are, you will start to be perceived as a shill of some sort by a reasonable amount of people, even though they could be extremely wrong in that perception.
Now if you still think this is a great gig for you. Thicken up that skin, get some callouses and get ready for a bad ass trip that’ll teach you about all sorts of human interactions and more. But be prepared and keep a solid look out for burn out, the degradation of any of the situations mentioned above and you’ll likely do well. If you’re still interested, here’s a few things to get your kick start in developer evangelism:
Get a social media presence, get it fast, and get a nick that you can use in almost all contexts. Don’t even pretend you can skip this step. The most successful evangelists have a huge social media presence and manage it. They manage it hard core, work it into a system, and learn efficient and positive ways to interact with that social media presence. Shut up, don’t even try to skip it, just go out there and manage it.
Make sure to spend at least an hour a day doing something technical. Hacking on Docker, writing some scripts or heaven forbid writing some actual code. This is massively important because you’ll find yourself losing direction all the time from the task switching and not getting to do these little technical things that will help you keep your edge.
Learn to speak. I don’t mean read a little book and think you know how to speak in front of a crowd. Likely, you really suck at it. I’m talking about practicing in the mirror, talk to yourself, record yourself and watch it and do all of these things without becoming nihilistic or pompous. Most of us tech speakers are so bad we’re lucky that the people in the industry are actually focused on the tech and not our stuttering horror of speaking abilities.
Drop all fear to speak with people in positions of power. Remember, everybody is human, don’t get intimidated and don’t intimidate.
Not that anybody in the software industry or tech industry or any industry needs told this but I’ll say it. Don’t overdo the drink. We’re all dangerously close all the time to being worthless drunkards. Some of us stay pretty functional on a drink or two, but that only lasts for a short time before you do indeed go downhill. Don’t deny yourself, you are NOT part of the one percent that can stay sharp and rot your brain. So keep the drink in check.
Find a way, anyway, to stay physically healthy. If you don’t the travel can very likely kill you. I don’t mean like “I’m tired and want to go to bed” killed but more like “hmmm, Tory Joe McQuerty here sure did see like they were fine, too bad we’re putting them six feet under” killed. Oh, the “I’m tired and want to go to bed” will happen all the time too, just make sure you keep that as the only killed you get.
Attain a huge amount of apathy for the extra overdose of everyone’s opinions about how everything sucks in the world. Many programmers are notoriously negative, especially if they work in the enterprise. It’s part of the daily war story if you get sucked in. Remember to stay focused on what’s important, your health and your loved ones, the job comes second. Anybody that tells you different, put them in that apathy category.
Never feel like you have to explain yourself when you need to take some family time or personal time. Just say you need to and do it. Even if you’re pretty close to people on your team, they need to respect that and let you get some time in. This is extremely important.
Don’t give to many fucks. Learn that at some point you gotta call it a day and turn in. Just drop it all and get a good night of sleep.
Summary: Think really hard about what you want when signing up for a dev evangelist or advocacy gig. It will wreck hell on your life, but it could be immensely rewarding too. But please, if you go into evangelism, practice at it and be prepared. I hate the idea of seeing more people burn themselves right out of the industry.
If you have anymore survival suggestions, please do comment!
During the work day some of the most disruptive events for a coder are phone calls, getting punched in the face or bum fights in the street. Why are these events so disruptive to programmers? Much of the answer lies in the maker versus manager schedule. Let’s talk a little bit about what someone does when they make a phone call and actually manage to disrupt a coder. NOTE: This could also apply to every musician, painter, coder, programmer, database SQL writer or other occupation that actually requires doing something around a creative solution that isn’t baked into some text book.
The Mental Train Wreck
Because in all of those situations, the coder must stop what they’re doing, complete a mental dump of all the things they’d loaded into their mind, to pay attention to the phone call somebody has just interrupted them with, the punch in the face or the bum fight outside. Let’s take a dive into what this interruption actually means.
Mental Dump, Starting the Train Wreck
The mental dump is the hardest part of the disruption for a coder. For a musician or artist, it often means they’re going to look at you (or the phone) and an immediate loathing of your person will occur. For a coder most will have their phone on ignore, like I myself do. If they do pick up, the first words spoken by the person calling will probably be indistinguishable. The mental dump takes more than a second or two.
But if a coder picks up the phone, they do it quickly, it often means they’ve not completed the mental dump yet. This in turn means they’re not going to be able to communicate with you in a very easy to understand way. Often a very boolean response will occur, such as “uhuh” or “uhno“. They’re hating you at this moment, because they’ve been removed from coding or thinking through the problem they were working.
What has happened here is a huge decrease in productivity for a coder. Imagine that train wreck above in the picture. How many hours, days and weeks did it take for the crews to get the train back on the tracks. How much effort did it take and how much time was lost by having the train sitting there crammed outside of the building tilted over and down on the sidewalk? I’ll tell ya, a whole freakin’ bloody lot of time, effort and frustration.
Time wasted: ~2 minutes. (and that’s just to GET the phone call)
Getting Frontal Cortex Loaded, AKA Re-railing The Train Wreck
This mental dump takes anywhere from 30 seconds to 2 minutes to effectively complete. At this point, a creative individual has been thrust from an effective and productive place in their mind. What’s it take to get things back on track?
The first step is to get off of the phone and settle down from the frustration of being disrupted. Getting disrupted by one of the aforementioned annoyances is very costly. Doing a mental dump is because so much has been loaded in the gray matter for use in the coding, painting, music playing or other activity. To get front loaded into a state in which actual music can be played or written, a painting can be created or coding can be done takes time. I’m not talking about a few minutes here or there either, I’m talking about 10 minutes being a low number. Often, it takes 30-45 minutes to get properly frontal cortex loaded. All of that time, upon the disruption is gone. All of it, every single minute. Sometimes a person can re-load a little bit faster then the initial loading, but often times not.
So what happens when the coder goes back to work? You guessed it, they have to get the frontal cortex loaded again. Yeah, your interruption just caused them many minutes, often 15-45 minutes just to pick up the bloody phone call.
Time wasted: ~15-45 minutes.
Maker Versus Manager Scheduling
Now we come to the serious problem. Not only did the phone call cause a disruption of epic proportions. The other massive problem is now the coder has to determine if it is even worth it to try to get the frontal cortex loaded and get back to work. Let’s take a few questions a coder has to ask themselves before getting back to work after such a disruption.
What if the phone call was 30 minutes before lunch? Nope, not worth it.
What if the phone call is 15 minutes before you’re going home? Nope, not worth it.
What if the phone call is 45 minutes before a meeting? Nope, that sure as hell isn’t worth it either. Meetings being a completely different topic that’s worth discussing, or ranting about sometime.
That’s just a few examples. So if the call disrupted the coder at a time before any other activity that requires they stop doing what they’re doing, it’s not even worth going back work on anything. With that in mind, if a coder is interrupted 30 minutes before lunch, that means another 30 minutes just got wasted because now the coder has to find some mundane task to do, or just surf the web ticked off that they got interrupted. Most programmers are often thinking of something that the great Captain Picard states so eloquently.
Time wasted: ~0-45 minutes or more.
Bum Fights & Punches In the Face
Ever been punched in the face? Ever had to deal with a bum fight? If you have you can totally relate to this type of interruption. The closest thing a manager is likely to experience is a bum fight or a punch in the face in comparison to a coder receiving a phone call.
The next time one thinks, “I’ll just give Bob the Programmer a call”, think again. Try not to be a complete douche bag in a land of naive obliviousness and maybe send an email or txt message. Maybe don’t even make the communication – because we all know how many times the answering box has a “hey I just called to say I called and you should call me so we can have a call“. That’s what one calls bullshit. EVERY PHONE ON EARTH has caller id, that’s a no shit sherlock moment.
So next time, please be considerate of your dear programmers, coders, SQL coders, painters, sketch artists, musicians, composers or others in your life. You’re not taking 5 minutes of their life when you call, you’re likely taking well over an hour and causing them much consternation.
Now that I’ve wasted 3 hours writing this post, mainly because I was interrupted by a phone call in the middle of writing it, I’ve got to get back to some work I was trying to wrap up post-turkey day comma.
Oh yeah, this was indeed a sardonic post in case it wasn’t obvious. Oh and happy holidays! 😉
Ok, so I think almost everybody has either slammed Marissa Mayer about the new Yahoo non-remote worker policy or said that it’s the medicine they have to swallow. Very few are actually pointing out however, that Yahoo was probably just really bad at managing their remote employees. In the end, I don’t care, that just means there are now going to be more people who are probably great that will be available in a tech market that is happy to hire the talent!
But I do digress, I have something else to talk about that is actually productive. I’m going to kick this off with a short story, that actually inspired me to write this post.
Remote Workers Unite!
I was in the office, a coworking office called NedSpace in downtown Portland with my fellow Bashoians Eric Redmond (@coderoshi) & Chris Tilt. Generally we all work remotely, because everyone at Basho is remote. The entire company, from CEO to HR to Marketing to Engineering, everybody is remote. Basho does a solid job of working like this, it is indeed, a modern Internet enabled software company. However today we were all in the office.
Within a few minutes, lo and behold in the glare of my Apple Cinema Display I see Scott Hanselman walk up behind me! (Isn’t this building secure?!!? Scott’s name is now Hacker Hanselman!) Wow, that doesn’t happen everyday or does it? So Eric & Chris finished up some coding. Chris headed off to return home, where he remotely works from. However Eric, Scott & I headed out for a stroll through the city of Portland to Case Study Coffee. We had a great conversation, discussing all sorts of blog entry ideas, Node.js oddities, duplications between Rail & Node.js & Java & .NET and all sorts of other things. I mean, you probably know how it goes when you have three geeky people going on endlessly about awesome nerdy stuff. Simply put, we covered a lot of topics.
…that’s when I thought…
Offices Are Often The Worse Place to Cross Pollinate Ideas
Not a little bit, but likely the absolute worse places to cross-pollinate ideas. But then I got to thinking a little bit more. Is Yahoo on to something? Is there a need or a reason why people should be in a similar place? I mean, I know for a fact the most rapid learning I ever had was pair programming with other coders. But I’ve done this in an office and outside of the office, at coffee shops and hackathons, on the rooftop of buildings and in dark and dreary bars. I’ve paired with a lot of coders and learned a lot by doing that.
Another question came up, is it really important to be in the office or is it important to be near others you are working with? More of that thinking and remembering things and more experiences popped into my mind. Whew, this was becoming a serious thinking session. I’d also had a great experience working remotely and learning at practically the same rate with friends. We were all working on an open source project. We asked questions in general chat on IRC or other places, and got instant feedback and help when we needed it. We’d put ideas into chat and discuss them readily and sometimes excessively. We weren’t anywhere near each other, specifically we were about 1400+ miles from each other in different time zones. But it worked and it worked damn well!
My correlations in trying to figure out, should employees be in office or out of office could go on. As Eric said when we all returned form the coffee shop, “correlations do not show causation, but they sure as hell imply it“. Well, I didn’t want to just imply onsite or remote work is better I wanted to know what really works or doesn’t. More thinking ensued and then…
Freedom Punched Me In The Face
Then it hit me. Geographic location doesn’t make any difference. The difference, which also makes Yahoo’s demand for no more remote working, is again the freedom of the individuals involved. The freedom to work where we are needed with who we ought to and need to and when we are most efficient and capable of performing the work best. The key is this freedom is granted, and that driven self organizing individuals make use of this freedom. It may be that one day we might end up in the office while another day we end up in a park, at home or in some coffee shop.
So forget remote working or in office working. These things aren’t correlated to someone being productive or not, the core reasons someone is productive is the ability that they have the freedom to be productive in the way that best works for them and for the company they’re providing services for. The most important thing is being able to give freedom to those doing the work to be productive. Remote or not is pure distraction and in turn is bullshit.
Don’t get distracted by the remote or onsite worker debate, figure out the best ways to work with your employees based on individual freedom. You’ll have far more productive individuals than any existing hierarchical corporate structure nonsense.