<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx</link><description>Thanks for all your insights on what is attractive or unattractive about job postings, and about working on developer tools. A great many of the comments were strongly aligned with each other; no one likes “alphabet soup”. And a number of them illustrated</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9982034</link><pubDate>Fri, 19 Mar 2010 18:56:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9982034</guid><dc:creator>Richard Berg</dc:creator><description>&lt;p&gt;Let me guess, the &amp;quot;aha, monad!&amp;quot; guy's last name was Snover.&lt;/p&gt;
&lt;p&gt;@Abhijeet - yes, DevDiv is part of STB&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9982034" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9977299</link><pubDate>Fri, 12 Mar 2010 03:55:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977299</guid><dc:creator>Abhijeet P</dc:creator><description>&lt;p&gt;Eric,&lt;/p&gt;
&lt;p&gt;The Job Search tool on the MSFT career site has a &amp;quot;Division&amp;quot; dropdown. I can't identify the option for DevDiv jobs. My best guess is &amp;quot;Server&amp;amp;Tools Business&amp;quot;. Does this seem right?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977299" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9977120</link><pubDate>Thu, 11 Mar 2010 20:52:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977120</guid><dc:creator>David V. Corbin</dc:creator><description>&lt;P&gt;Two observations.&lt;/P&gt;
&lt;P&gt;1) Back in the late 1970's (at University) we were using a Pascal compiler on a Univax mainframe (Batch!). The compiler would actually make assumptions and attempt to continue to compile the program. This cut down on the number of iterations (which could take 24 hours) - the school did have a policy that any code which contained a "fix" of this nature was an automatic failure. Ironic, that this is unheard of in today's environments.&lt;/P&gt;
&lt;P&gt;2) Sometimes a comma DOES matter. There was an old "joke" about a prisoner who was about to be put to death. Although I forget the exact syntax of the question, the reply was: "No don't kill him". The intent was "No, DON'T kill him", but the listener took it as "No don't, KILL him". Bet THAT prisoner wished the comma was explicit!&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;There was one of those on StackOverflow today. Someone wrote something like "this method does not return true as expected". Is that "As we expected all along, this method does not return true", or "this method does not return true, which is what we expected it to return"? It would have been more clear to write "this method returns false, as expected", or "this method returns false, unexpectedly".&amp;nbsp;-- Eric&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977120" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9977092</link><pubDate>Thu, 11 Mar 2010 20:01:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977092</guid><dc:creator>jsrfc58</dc:creator><description>&lt;P&gt;Eric wrote:&lt;/P&gt;
&lt;P&gt;"The basic pattern of lexing and parsing is the same all over because analyzing language in general is incredibly hard. We deliberately design programming languages so that they can be analyzed via simple, easy-to-write lexers and parsers; analyzing more "natural" languages is way too hard."&lt;/P&gt;
&lt;P&gt;Good points, and thanks for the reply. I think one of things that bugs me, though, is when I use a language like C or C++, and inevitably miss a semicolon somewhere, the compiler sometimes complains that it has found 5-20 errors in my code. In essence, it becomes a lexical trainwreck under the hood of the IDE. When I was first trying to teach myself C, this became an almost insurmountable obstacle because I wasted a lot of time looking for errors that really didn't exist.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;The C# compiler has huge amounts of "error recovery" heuristics in it to avoid this problem. What we do is try to "reset" onto something that we know is good. So for instance if you are parsing "class C { void M() { class D { }" then we say oh, we didn't expect class inside this method body, let's assume that the brace was missing, give an error, silently insert the brace, and continue on." There are all kinds of heuristics like that which attempt to reset the parser onto something that we know is good so that we can "start over" parsing from that point and not give errors for it. -- Eric&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;I know Intellisense is constantly improving (for example), but I think this brings me to another point: why is there an insistence on scanning character by character, left-to-right, and down through the code? Maybe I haven't seen enough compiler/interpreter implementations behind the scenes, but that is what I've gotten from various books/online examples. &lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;We don't. The current&amp;nbsp;C# compiler parses "top level" stuff in every file first, skipping method bodies and then goes back and parses each method body in each file individually. That way we can do analysis of whether, say, the class hierarchy makes any sense before we attempt to analyze the method bodies that are going to use that class hierarchy. -- Eric&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Here's another way to look at it. In writing, if there is a missing comma in a sentence, it typically does not cause an entire page of text to implode on itself.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;You have good error recovery heuristics in your brain. -- Eric&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;And yes...I'll look at monadic parsers...thanks for the info!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977092" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9977009</link><pubDate>Thu, 11 Mar 2010 18:06:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977009</guid><dc:creator>David A Nelson</dc:creator><description>&lt;P&gt;Eric, in the "factors that make working on developer tools at Microsoft attractive" category, is it still true that you have to work at the main campus to work in DevDiv? I heard that at one point, but I have also seen evidence of people working in DevDiv from other locations (notably Hawaii). I would love to work on developer tools, but moving to Seattle just isn't an option right now.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;The vast majority of developers in DevDiv are on main campus, yes. There is also a minority of people working from remote locations; it does happen, but it is rare. -- Eric&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977009" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9977003</link><pubDate>Thu, 11 Mar 2010 18:02:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9977003</guid><dc:creator>David A Nelson</dc:creator><description>&lt;p&gt;@Gabe&lt;/p&gt;
&lt;p&gt;&amp;quot;Most companies can be profitable for years without any given position being filled. Meanwhile, an average unemployed worker with a family will only have a few months before they have to get a job regardless of what it pays.&amp;quot;&lt;/p&gt;
&lt;p&gt;True, but your ability to &amp;quot;walk away from the table&amp;quot; is not solely influenced by how long you can go without a job. It is also very heavily influenced by your ability to get and accept other offers. I never go into any interview assuming that I am at a position of weakness compared to the potential employer. I always assume that they need my skills more than I need their money. I can make that assumption because I have confidence that in most cases I am more highly qualified compared to the other candidates for the job than the job is desirable compared to other potential jobs. That means that the employer has to convince me to work there more than I have to convince him to hire me; and that puts me in a strong negotiating position when it comes to salary and any other negotiated detail of the job.&lt;/p&gt;
&lt;p&gt;Of course, if you don't have that kind of confidence in your own value, then you can't make the same assumptions, and you won't be in the same kind of strong position. And it could be that my assumptions are not always correct. But they have been correct often enough that I have never even come close to the point where I had to accept a job at less than I believe I am worth. I am not trying to paint myself as a rock star developer that everyone should want to hire. You don't have to be a rock star to have confidence in yourself. Even if you think you are only in the 50th percentile of the candidates for a position, if the position is in the 45th percentile of available positions in terms of desirability, you are still in a strong negotiating position. Remember that the less skill that the job requires (which means the more qualified applicants are available), the more it has to compete with other jobs that require similar skills.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9977003" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9976631</link><pubDate>Thu, 11 Mar 2010 03:59:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976631</guid><dc:creator>jsrfc58</dc:creator><description>&lt;P&gt;Eric wrote: "I think it is generally character-building to build your own compiler at least once, either for a language of your own or for a subset of an existing language."&lt;/P&gt;
&lt;P&gt;Ok, but are there any decent build-your-own compiler/interpreter books out there? I've tried looking at a few over the years, including the infamous "Dragon Book" (odd, I just noticed there is a 2nd edition of this book that came out in 2006), and well...I'm always sort of struck by how they all tend to fall into same basic patterns of lexing/parsing/etc. Why is that?&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;The basic pattern of lexing and parsing is the same all over because analyzing language in general is incredibly hard. We deliberately design programming languages so that they can be analyzed via simple, easy-to-write lexers and parsers;&amp;nbsp;analyzing more "natural" languages is way too hard. (Try Inform7 some time if you want to see an incredibly awesome programming language that reads like English; I can only imagine how hard that parser must have been to write.) -- Eric&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Has there been much innovation in terms of how program code is split into tokens, etc.? Note, I'm not referring to JIT compilation, garbage collection or anything like that. I mean the actual initial parsing of the code itself.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;Sure. For example, there's been some research into monadic parsers. They're very useful when you have one language embedded in another. Consider writing an analyzer for ASP markup containing HTML, which is itself containing VB, which is itself containing XML literals. -- Eric&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Part of me wants to bypass the whole process and come up with a completely different way of lexing/parsing program code. Of course, this would probably involve coming up with a new language too.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;Go for it! -- Eric&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976631" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9976479</link><pubDate>Wed, 10 Mar 2010 21:19:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976479</guid><dc:creator>Gabe</dc:creator><description>&lt;p&gt;Chris B: By power, I meant precisely the ability to walk away from the table. Most companies can be profitable for years without any given position being filled. Meanwhile, an average unemployed worker with a family will only have a few months before they have to get a job regardless of what it pays. Of course a person who already has a job and is just looking around can easily afford to walk away from the table, and thus has a better chance of negotiating a higher salary. It seems to me that on average this just rewards disloyalty.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976479" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9976340</link><pubDate>Wed, 10 Mar 2010 17:46:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976340</guid><dc:creator>Chris B</dc:creator><description>&lt;P&gt;"The winner in a negotiation is most likely to be the one with the most experience and most power."&lt;/P&gt;
&lt;P&gt;I disagree. &amp;nbsp;I think the winner in a negotiation is most likely to be the one that is most willing to walk away without any agreement. &amp;nbsp;This party likely has other options which are potentially more desirable. &amp;nbsp;I'm definitely not a skilled negotiator, but I think the most powerful thing you can have on your side during negotiation is an alternative. &amp;nbsp;If you select that alternative, the other party must find one as well or walk away with nothing.&lt;/P&gt;
&lt;DIV class=yellowbox&gt;
&lt;P&gt;Absolutely that is the case in most negotiations. However, power is a tricky thing. I took a negotiation class once, taught by a former NFL salary negotiator. He described a spectrum of negotiation styles with "Kansas" at one end and "Chicago" on the other. The Kansas style is "&lt;EM&gt;Hey, have I got a deal for you!&amp;nbsp;You could do that thing for me, and in return, I'd do this thing for you, and we'd both get higher profits out of it than we're making now!&lt;/EM&gt;"&amp;nbsp;The Chicago style is "&lt;EM&gt;Hey, have I got a deal for you! You could do this thing for me, and I could refrain from burning your house down!&lt;/EM&gt;" I think we'd all prefer to be "in Kansas" when negotiating a deal, but we live in a world where some people "go to Chicago", so it is best to be prepared.&lt;/P&gt;
&lt;P&gt;My point being that sure, the ability to walk away is power, but it is not the only form of power. The ability to inflict a consequence upon the party that exercises their ability to walk away is also a form of power. -- Eric&lt;/P&gt;&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976340" width="1" height="1"&gt;</description></item><item><title>re: Attracting Talent, summarized</title><link>http://blogs.msdn.com/b/ericlippert/archive/2010/03/08/attracting-talent-summarized.aspx#9976019</link><pubDate>Wed, 10 Mar 2010 05:33:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9976019</guid><dc:creator>Gabe</dc:creator><description>&lt;p&gt;I think it's perfectly valid to ignore any &amp;quot;programmer wanted&amp;quot; ads that don't include a prospective salary range, the same as I would avoid any car dealership that didn't have price stickers on the car windows or dating ads that state &amp;quot;no liars or jerks&amp;quot;. Particularly this is because that implies that an employee must negotiate their salary. While it's perfectly legitimate for some jobs (like litigator, CEO, or athlete), it doesn't make sense for programmers. It's like basing my salary on whether I can tell you why manhole covers or round or how to move Mt. Fuji.&lt;/p&gt;
&lt;p&gt;Of course anybody could be a good negotiator, but it's my experience that the aggressive, egotistical, manipulative hotshots are the ones who end up getting paid more and promoted more, and those are precisely the type of people I don't want to work with, much less work for. I want to work for a company that values my skills and experience, not my negotiating skills.&lt;/p&gt;
&lt;p&gt;The winner in a negotiation is most likely to be the one with the most experience and most power. Since I rarely have to negotiate for money (maybe every few years) and I can only survive a few months without a job, I have little ability to negotiate with somebody who does it every day and can probably survive years without filling whatever position I applied for. Why would I want to put myself in that position if I can avoid it?&lt;/p&gt;
&lt;p&gt;Incidentally, I remember learning in psychology class that the reason women systematically get paid less than men isn't due to discrimination so much as that women just aren't as aggressive in negotiating their salaries.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9976019" width="1" height="1"&gt;</description></item></channel></rss>