Hacker News new | past | comments | ask | show | jobs | submit login
Being recruited in the USA (calepin.co)
165 points by masylum on Jan 4, 2012 | hide | past | favorite | 146 comments



I think the poster might be a little naive about the H1-B process and how unattractive it is for small companies. Make no bones about it. Its a major hassle, and if you leave it to the company it will (usually) never happen.

So advice for people in the same boat in the future, If it is something you really want to do, then you need to know exactly how the process works at every step of the way and also have a really good Lawyer that the company can talk to if they have questions. They can help you if tricky things come up (and they will if the company applying for you is small enough).

I advise you not to go with a lawyer from a big firm, those guys just want to see dollars ... and if your case is small and tricky they will not be interested. trust me. Try to find an individual or small firm that is responsive and knows the ins and outs of the process far better than you ... if possible ask them to tell you the trickiest situation they've helped a client with before ... that should give you some idea of how good they are. Usually they can bill you for their time spent talking the company, or their lawyer down from the ledge (this will happen), or if they handle the process then you or the company can pay their fees.

Lay out the process when the company asks about it (because they will usually not know), let them know that its not complex, just a pain in the ass and that you will handle most of the legwork (you're prepared to do this right?) ... some people chip in to help with the fees if they're so inclined ... this is frowned upon and I think the law has been changed to make it illegal, use that information as you want.

Above all, be persistent, upbeat and constantly in touch, do not think that a company is going to jump through hoops to pay $5000 to get you. And remember that some of the requests that are made of the company (like tax returns etc) might cause them to stall, so be prepared for that.

It will come down to how bad you want it. good luck


Sadly, the drama doesn't even end after getting your visa. Over six months ago I applied for an H1B transfer to a new job- they replied requesting a confirmation letter from every employer I've had since college saying that I am, indeed, a developer, and not some sort of fraud. My transfer is still pending, making every return journey back into the US a stressful experience.

This, after I've already been working in the US for two years- you would have thought they'd have asked for the letters when I applied the first time.

My H1B three year limit is in November of this year. I can apply to extend for another three years, but I can't wait to see what nonsense they throw my way when I try.


From my experience, renewing the visa is not too difficult if you (or your company) have a decent immigration attorney. The only annoying thing is that you'll have to go to a US consulate outside the US to get the visa stamp in your passport.


I used to live in San Diego and always found it baffling that the US requires people to go through this strange procedure.

In San Diego, it is a russian-roulette type of play: you go to Tijuana (right across the border) and you either get a visa extension or you don't. If you don't, you're stuck in Tijuana. I know people (from Europe) that had to arrange for a trip home because they were denied a visa extension (J-type).


They probably make it a pain because they don't want you to spend the next decade making money here and sending it back to the mother country.


Since most of these laws are written by politicians and not economists it's more likely that they want to appear tough on immigration to avoid "dey took our jerbs!" style anger from the electorate. It's sort of like how clubs force people to wait in line outside even when there is room. If they let everyone in, it might start to feel crowded and less fun.


Except that doesn't explain why they'd make getting permanent residency so difficult. If they were interested in keeping your hard-earned dollars in the US, they'd try to keep you in forever.

Instead you have to deal with the wonderful world of employer sponsored green card and your 15 year-long wait.


You appear to be complaining about effect, not cause.

Every US immigrant I've spoken to wants to stay here, build up savings, buy a house, etc. I do too. But if there is no path for me to become a permanent resident then, yes, I'm going to take my savings and go home. I don't want to, but I won't have a choice.

Making the immigration process difficult is counter-productive for everyone.


Wow, having someone implement a square root algorithm on the spot, that's quite a question to ask. I agree that is a terrible question because not many top developers would be able to answer it on the spot unless they had recently happened to have implemented it. It's not like it's an obvious algorithm. I could mention the existence of Carmack's root algorithm, which I don't have memorized but I do know he got from someone else, and flop around a bit.

It's weird there are so many companies claiming to not be able to find people but you hear about their hiring process and it's no wonder.


Newton's method is dead simple to implement, you just have to remember it. http://mitpress.mit.edu/sicp/chapter1/node9.html


Esoteric algorithms would be much more useful questions, IMO, if the interviewer gave you a birds-eye overview of an algorithm you cannot possibly have heard of and then have you implement it. That actually tests your chops rather than your memory.

For example, everybody knows merge sort, but assuming they didn't, draw out a couple iterations in a graph and ask them to code it.


If you're handy with simple algebra (and can remember that the derivative of x^2 is 2x) then you can remember the picture. If f(x) = x^2 - N, then you're looking for the (positive) zero of f. You take a succession of tangent lines and look at the zeros of those. So, you start with a guess (call it x_0), take the tangent line at your guess (so it has slope 2x_0 and goes through (x_0, x_0^2 -N)), then find the x-intercept of this line and make it your new guess. This is all Newton's method is. With square roots, it takes the form of averaging your previous guess and N over it.


If true, that'd make it an awesome interview question. After all, the professed goal of these kinds of questions is to see how somebody thinks and approaches programming problems. If they flop around without a clue, it's then the interviewer's job to start them on the right track. Surely any competent programmer should be able to come up with some kind of a iterative solution and then have an intelligent discussion about how it could be improved.

(I don't think it's an awesome interview question in practice though, too many people do already know how to do it.).


Now, it's entirely possible that I shouldn't work wherever you work but I think this is a terrible question to ask. The experience of 'flopping around without a clue' during an interview is both unpleasant and massively distracting. My experience so far as both interviewer and interviewee is that seeing how someone responds when freaked out is only useful if the job involves being in that state most of the time.


The only reason somebody should be flopping around with such a softball question is if they for some reason think that they're being asked to find a near-optimal way of computing square roots. The only reason the candidate would be allowed to get stuck in a dead end for a long period of time is if the interviewer doesn't know what he's doing. But I see absolutely nothing wrong with asking questions of this general type.

And again, I do not think this is a good interview question. I just think it's bad for a different reason than the original poster claimed. Which was that it's supposedly not solvable even by top engineers unless they've recently implemented the algorithm.


Implementing a square root algorithm is actually very simple:

    def sqrt(x):
      a = 1.0
      for _ in range(100): a = (a + x/a)/2
      return a
This is just Newton's method to find a solution of the equation a^2 - x = 0. For certain classes of jobs knowing Newton's method is definitely required, as it is the simplest and most widely used numerical method. And even if you don't know Newton's method I expect any programmer worth his salt to be able to come up with a bisection algorithm.


Geez. It's time for me to retire.

I've written 100,000s lines of code and released 9 different commercial products over the last 15 years, and Newton's method is far from being in my working memory.

Now, if you ask about best practices in shipping software...


Easier to remember is the bisection method: essentially, a binary search for where the graph crosses the x-axis. It's what I would have pulled out if I got asked the square root problem in an interview:

http://en.wikipedia.org/wiki/Bisection_method


Interestingly enough, I recently wrote a post explaining how to take a binary search and derive Newton's method from it: http://stevekrenzel.com/articles/newtons-law

It's a fairly straight-forward transformation.


hehe... I interviewed at a hedge fund once, 6 technical interviews in a row. One of the interviewers summed it up well when he said: "Brace yourself... The next guy is fresh out of CMU and is going to ask you questions you haven't thought about since school" (which had been about 10 years prior).


Read again what I wrote: there exist jobs that require knowledge of Newton's method, and in those cases this would be a valid interview question. This is not in disagreement with your "there exist jobs that do not require knowledge of Newton's method". You're likely to need to know about Newton's method for jobs in the area of machine learning, robot control, or some kind of physics simulation.

That said, Newton's method is not rocket science. The basic algorithm is iterating this line:

    z = z - f(z)/f'(z)
Where f is some function and f' is its derivative. In many cases this will rapidly converge to a root of f (i.e. z will converge such that f(z) = 0). As far as algorithms go, this one is pretty damn simple. It is not in my working memory either, and I expect that many people rederive it when they need it.

The idea behind Newton's algorithm is that you approximate the function f(x) with the tangent line L at z:

    L(x) = A + B*(x-z)
    with A = f(z) and B = f'(z)
Now L(x) is an approximation of f(x). How well an approximation this is depends on how much f(x) looked like a line in the first place. Then instead of solving f(x) = 0 (which is our goal, but hard) you solve L(x) = 0 (which is not exactly our goal but almost our goal, and it is easy). So:

    f(z) + f'(z)(x-z) = 0
Rewriting:

    x = z - f(z)/f'(z)
Now the approximation of f(x) at that x is 0. Because it's only an approximation to f(x) it will probably not make the real f(x) = 0. Therefore we apply the method again and again with x as the new starting point:

   z = some starting value
   until f(z) is small enough:
      z = z - f(z)/f'(z)
Because we're iterating, this method works even if f(x) doesn't look much like a line. For example x^2 - a doesn't look much like a line, but Newton's method is very effective at computing its root to compute sqrt. To see how outrageously effective it is, lets compute sqrt(2.0) with it. Lets start with a starting guess x = 1.0. We get the following numbers:

    iteration    x
    ---------    -
    1            1.0
    2            1.5
    3            1.416666666666666
    4            1.414215686274509
    5            1.414213562374689
    6            1.414213562373095
    7            1.414213562373095
Note that at the 6th iteration already all 16 digits are correct.

Newton's method is perhaps the most beautiful algorithm due to its simplicity and effectiveness, and worth knowing even if only for its beauty. It is also quite probably the most important algorithm ever invented. It is used everywhere from division in hardware to optimizing all kinds of things and solving differential equations.


Last time I implemented it, it was in FORTRAN 77.

No. Not really. During a test I quickly coded the solution to a numeric problem in BASIC on a Casio PB-700. It was fun to watch the HP-41 crowd tearing their hair off. That's when I first learned pg's "beating the averages" lesson.


Machanics are not asked to recite from memory how to install a cruise control. The fact that programmers are is just to make us feel bad so we accept low pay.

They need us so badly that they grasp at anything to show us we dont deserve to be paid. Its economics.


How sinister! I have an alternate hypothesis: they want to filter out people who can't solve simple problems, and the people coming up with the problems sometimes forget that a problem is only simple if you remember (say) Newton's method and the fact that square root finding is equivalent to solving x^2 - num = 0.

This seems more plausible to me. Recruiting is hard.


Yep. It's Hanlon's Razor.

You'd be surprised how many people with a master's in CS show up to an interview and can't write a recursive method to compute n factorial out on a whiteboard. Hell, I'd say about 10% of the people I interviewed couldn't successfully complete FizzBuzz.

Technical weed-out questions are an unfortunate but necessary part of tech recruiting until other, better signals of ability are widely available.


Yes, because it's not like any such signals are now available: http://devinterviews.pen.io/

Seriously, this is one reason I like the emphasis smart companies are putting on github accounts. Better signals are available, and portfolios are one such signal, and one that works great for many other professions.


tl;dr; - Too many good people have 'portfolios' that they can't legally show me; until that changes, I have to ask people to code on a whiteboard.

Here's the more nuanced version (in which I largely agree with jnbiche):

The stuff listed in that article under "An Alternative" describes the exact tech interview I used to give. And we had several people pass it with flying colors who we later had to let go because they couldn't actually translate a requirement into code.

So we adjusted our interview to make sure that people had the ability to write basic code. I'm not talking about stupid puzzles or API quizzes. I'm talking about 'show me you understand what recursion is'. I'm talking about 'given a detailed description of the FizzBuzz problem, can you write me a loop (in any language; pseudocode is fine, too) that outputs the right answer? And can you adjust your code if I change the requirements slightly?' Stuff that anyone who codes on a daily basis should be able to breeze through.

This was dead-easy stuff. Just me and the candidate in a room - there wasn't a giant audience, there was not ticking clock, and I was explaining the algorithms. And again, quite a few people could not do it.

If they could do it, we moved on to the original interview where I asked about technology, past projects, etc. Some people didn't pass that part of the interview.

Believe me, we were stoked when we got a candidate who listed open-source projects on a resume or brought it up in the interview, because we got to see real-world code that the candidate had written. But that was a relatively rare occurrence.

This brings me to the crux of the 'until other, better signals of ability are widely available' comment. I think it's widely agreed (at least, in a place like HN) that code is the best signal of ability. But there are many, many candidates who write excellent code that no one outside of their company will (or even legally can) ever see. If I turned away candidates just because they didn't have a github account, I would have missed out on some of the greatest coders I ever worked with. There are plenty of people who passionately write excellent software every day, but who do so under NDA. They may not work on OS projects in their off time because they may not have any (or they have kids, or other time-consuming hobbies).

So for a lot of fantastic coders, the best possible signal of their ability is not publicly available. I would even go as far as to suggest that this may be true for the majority of fantastic coders. Everyone has to pay the bills, which means 8 hours of writing custom business software for a lot of people. I know for a fact that some of the best stuff I've ever written is buried with companies that failed, never to see the light of day. I can't show that in an interview. How many other people are in the same boat? http://xkcd.com/664/

Obviously, one huge part of the solution to this problem is for companies to open-source their code. That movement has already begun; lots of successful companies have come to the realization that keeping their code 'secret' has no value while allowing outside review and contribution has immense value. And some smart companies which use a lot of open-source tools and libraries are paying their employees to contribute bug fixes and features. Those trends are starting to address the 'widely available' part of my comment, and the day may eventually come where employers can simply throw away resumes which don't have any links to code contributions. In fact, if you're looking for another bullet point on your presentation to your employer about "why we should do open source", I would suggest mentioning the hiring benefits to the entire community.

But until we hit that critical mass, I'm still going to have to ask people to implement n-factorial on a whiteboard.


Oops, I fat fingered a downvote, but this deserves upvotes.


I actually do know offhand that I use the Taylor series to calculate it, and that the Carmack method works by using a couple tricks of binary floating point format to do a really good starting point and then run the Taylor series through a single round of iteration. I've also implemented it myself before since library methods were too slow. This probably puts me in the top 0.001% of developers world wide in terms of what I happen to have memorized and from personal experience about square roots. However, I don't offhand remember the details at all and wouldn't pretend to. I would never use this an an interview question because it doesn't test for anything at all. 99% of candidates would have no clue regardless of skill level, and of the 1% who knew anything, most would be because they happened to study the right "interview tricks" site while cramming for the interview. So I still think these sorts of questions are absolutely terrible for the purpose of finding competent developers.


Top 0.001%? Newton's method was high school math for me. Surely more than 1 in 100,000 programmers can remember basic Calculus.


Depends on what the job is though, if your building web apps and your unlikely to ever need to even use a built in sqrt function I don't think it's a good question. A good question would be one the candidate doesn't know but can think their way through. For a lot if candidates I'd imagine this question wouldn't let you learn to much about their problem solving.


My solution was far worse than this one... :)


Binary search is a pretty obvious algorithm.


Sometimes you have to improvise. If you have never heard of newton's method, binary search should probably come to mind next. It should be O(log N) which is a bit worse than constant-complexity square root but not too bad.

    DELTA = 0.0000001
    def sqrt_bin_search(squared_value, lower, higher)
      middle = (lower + higher) / 2.0
      if ((middle * middle) - squared_value).abs < DELTA
        middle
      elsif middle * middle > squared_value
        sqrt_bin_search(squared_value, lower, middle)
      else
        sqrt_bin_search(squared_value, middle, higher)
      end
    end

    def sqrt(x)
      sqrt_bin_search(x, 0, x)
    end


that was my answer!


I'd have to agree with your point:

"Most of them are doable but I think they are probably missing amazing developers that may not know how to solve those problems, but they are capable of solving real-life problems (fix this bug, port this library, refactor this code...)."

I do believe some startups are missing out on some amazingly talented developers by making this your rubric. Some people just don't some solve puzzles well, in the same way some people don't perform stellar on tests, but does that mean they are not capable of writing great code. Not at all. I've met some stellar coders who do not solve timed puzzle or timed tests well.

Will someone please explain to me exactly why solving a puzzle is a indicator of potential workplace success. Do you want to hire puzzle solvers or actual developers? Should I spend my time improving my puzzle solving skills or churning out code that solves real-life problems?


I agree, its utter nonsense for the most part, it seems some companies just want you to jump through a bunch of hoops and to make you feel stupid. I think having you work on a small contracted project or something related to the business domain would be a lot more useful.


That would probably be more useful, but it doesn't scale. An interview like that takes up a ton of resources and can leave a bad impression on a candidate.

Not only are you paying for devs to help and evaluate the candidate, you are doing this over a much longer period than a traditional interview, and you have to pay the candidate for the work they did, even if you're going to throw it out.

Nobody wants to force candidates to jump through hoops or make them feel stupid. That's a recipe for bad word-of-mouth and never hiring good devs. When I conduct interviews, I always try to make people feel like they did an OK job. I don't want them to get off the phone thinking they did really poorly. I try hard to seem impartial, but that's often quite difficult to do.

The root problem is that nobody knows what the hell they're doing in interviews. We don't know the best way to evaluate candidates, so we try various things that are ineffective or wasteful. Eventually we'll figure it out.


if its for web dev, make them do something that has a web UI, give specific contraints and then write an automated integration test for it (such as using selenium), run this on the incoming submissions, only review the ones that pass, this is just a quick idea... there are ways to automate this....


I can think of a number of things why it's used:

1) It tests if you're able to think on your feet. Anyone can Google for help/solution/code for a problem, but most people want to know if you can think for yourself and that your first reaction to a problem isn't to go for the browser. They want to know what you're thinking and how you can solve a problem.

2) It tests how you handle stress. Do you blank out and panic? Do you start shaking uncontrollably and can't speak properly? Crunch time gets stressful, and if you're easily stressed out your desired employer may see this and think you're not a good fit.

3) It tests teamwork. A lot of times, interviewers will drop hints or advice on how to solve a problem. I've heard that some programmers will just disregard it or try to fight it and solve it their own way. It's a good time for an interviewer to see if you're someone they'd want to work with.

EDIT: If you're going to downvote me, you should leave a reply why you found my comment to be deconstructive or irrelevant.


Puzzles are human benchmarks. Like all benchmarks, their objectives are:

1) They have to be short enough to complete in a "reasonable" amount of time.

2) They have to have enough resolution to distinguish between good, better, and best.

3) They have to be representative of the real life problems that the person / computer will be solving.

Most benchmarks only meet objective #1. Further, benchmarks that only meet objective #1 are easily "game-able".

Benchmarks which meet objectives #2 and #3 invariably don't meet #1, which makes them hard to use as a benchmark.


This thread depresses me; I just read every comment.

As an American, the visa stuff makes me sad, because it tells me that the system is broken. But what really gets to me, as a newbie developer, is the interview and hiring commentary. It makes me feel like there's just no hope for somebody like me-- I don't have a CS degree and come from the world of humanities and liberal arts. The furthest I went with math in Uni was Discrete. I don't take tests well, and I'm no good with heavy duty algorithmic methodology (though I do know some of them). I don't have any formulae memorized. I tend to think of programming like I do writing: I have great grammar, punctuation, and spelling.

I'm afraid I would fail miserably at these gauntlet-style tests applied by big SV companies. I love technology and I love building things and what I'm doing now, but the path of achievement and improvement professionally from novice to indispensible pro often seems cloudy to me. I think our culture needs to spend more time and money on apprenticeship and helping less experienced developers reach that next rung on the ladder. I'm happy that there seems to be some movement now in that direction, with Khan Academy, Codecademy, Code Year, &c.


Some of the very best people I've ever hired have no degree.

We hire based on experience, talent, and culture fit.

Our problem when hiring is that those things are so hard to determine from a CV. We need some mechanism to filter the literally hundreds of applicants down to <50 so we could feasibly scan the CVs and then interview some.

At that point, saying "compsci degree" on the job spec helps. But, for me and for the people I've always worked for: It's never been a requirement, if you can code well and can communicate effectively... APPLY FOR THE JOB.

Anyone who wouldn't hire you isn't worth working for, for they aren't hiring the best candidates who in turn make the best colleagues and create the environment which is really satisfying to work in.

Just understand that hirers need filters, and the degree is one of them... and tests are just microcosms to give an indication of your approach to a problem (the answer is frequently less important than seeing the way you approach the problem).


Don't let it get to you. The best developers I've worked with didn't come from CS background at all.

Employers worth working for will know to look at what you've built and your passion creating/learning rather than whether you can quote a square root function from memory.

We're fortunate: if you wanted to get a job as a lawyer you couldn't just go and win some cases to prove your ability. But developers can always build something cool to show what they can do. It won't get you to Google or IBM, but it'll get you to any startup worth its salt.


Thanks. Does Google still demand CS degrees? I ask because I can think of several people doing dev there now that don't.


Not if you're recruited, no. I've had on-sites at Google for coding positions, and my degree is in visual arts! I suspect if you're just sending in an application to the site they may use degree subject just to filter out the insane number of applications they get.


If you're outstanding at your field, Google probably wouldn't mind, but if generally my impression is degrees are highly valued there.


Good demos & demo code will go a long long way. Your liberal arts background may give you a good design and product eye.


Legally, you cannot seek employment while you're in US (B1 Visa). Hell, you're not even supposed to work and be paid while in the US. You can be reimbursed for travel, accommodation, food, etc. You can work if you're work is in agreement while you were in your country (outside US) but came to US to talk to your client, blah blah.

Yes, April 1 is the day H1 Applications are officially opened for filing for worker coming in from October 1. However, with the recent lack of demands, blame the US economy and a much more strict Immigration rules, you're likely to be able to apply till end of year or even more. Last year's quota was available till late November if I can remember correctly (2010's quota was available till Feb of 2011).

But, do not wait for April 1, get your lawyer (or the company's lawyer) to start the paperworks and be ready before April 1. That way, you're likely to know the result earlier.

Of course, founders (executive roles) can look at L1 for a better alternative Visa than the H1.

Note: Your lawyer will also advised you to leave US soil before applying for your H1 else you're complicating yourself. Translation, you're soliciting yourself (being interviewed, meeting prospective employer) and that is not allowed.


Given that the H1B must be sponsored by an employer, how are you supposed to find one if you shouldn't "solicit", go to interviews, meet people ?

Is this a catch-22 ? Nobody ever got legally an H1B ?


One way would be to that the companies interview you in your countries. This usually happens with on-campus recruitment.

Other way is that you are on some other visa (other than B-1), that does allows you to solicit, give interviews, etc. For example at the end of F-1 study visa, you can go around and shop for some time to get a job, and the company will then sponsor for your H1B.


Actually, at the end of an F1 visa, provided that you got a degree, you can work under OPT for 12 months, with a possible 17 months extension if you're in STEM.

At the end of those (12+17) months you can seek H1B.


It's worth noting that the H1B is not the only type of visa that exists for hiring developers. Australians are able to use the E3, which is like a H1B but only available to Australians. Consequently it's easier to get, as long as you have a degree/work experience.


I came here to post this because most people don't know about it.

It has some key differences to the H1B however:

- It is a 2 year visa (H1B is 3 year) and renewable indefinitely (typically H1Bs allow one renewal);

- The E3 by default is a multiple-entry visa;

- Renewing the visa inside the US is a huge pain. It takes months from USCIS and it's more expensive than obtaining a new visa (which can only be done outside the US);

- You don't renew your visa, you renew your status. This means if you leave the US after the visa expires but your status has been renewed you have to get a new visa anyway;

- The H1B visa requires a labor certification for the position and "proof" that you were unable to find a domestically qualified candidate. The E3 visa only requires the labor certification so has a much lower barrier to entry.


Technically, you can't renew an existing E3 visa. You must re-apply, and as I learned a few months ago going through the process, the subsequent visas will be E3R. Also, and E3D is apparently easy to obtain. It allows "dependents" (spouse, children) to accompany you to the US, even permitting them a small amount of part time work.

In addition, an E3 does not allow "dual intent". i.e. you may not seek permanent status in the US while holding an E3 visa. This means no Green Card applications, including the Green Card Lottery.

One other thing that may not be unique to the E3, but is worth understanding is that your tenuous presence in the US is bound to the employment quite tightly. If you quit your job, or are let go (startup winds up, etc), you must exit the US within 10 days. That's 10 days to pack up your things and leave the country.


> even permitting them a small amount of part time work.

The E3D lets a dependent of an E3 visa holder obtain an Employment Authorization Document (EAD). Once obtained, the EAD allows the dependent to work in a regular full time job - it's not restricted to a 'small amount of part time work'.


Interesting, I've read conflicting reports about dual intent - do you have any sources? I'd provide mine but it would require a lengthy google session to retrace my steps :)


http://canberra.usembassy.gov/e3visa.html http://www.theroadtosiliconvalley.com/moving/e3-visa-austral...

There is a way around it on E3 but also a high chance the consular officer will decline you. Best to get a green card on a H1B. Use E3 as a way in (for Aussies), then transfer to H1B and apply for Green Card IF you believe its worth it. Remember the US government can tax you up to 10 years after you have given your green card back should you want to go home..


obviously off-topic, but could you please clarify (and may be post some links?). Does this means, that if I now cancel my greencard and leave usa back to my home country, up to 2022 usa irs will have some rights on my income?


Correct!

http://www.taxesforexpats.com/expat-tax-advice/citizenship-s...

If you move back to say Australia there are still negative tax consequences in so far as some Australian tax strategies that are quite beneficial will have those benefits negated when the US tax system is brought into account.

This will vary from individual to individual so seek a professional tax agents advise for your situation.


Is that more of a "who cares, I'm in Australia now", or will the Aust. Tax Office support the US IRA by disallowing deductions?


Probably too late to ask, but how USA enforce this BS?


Here's one source to the counter:

"An application for initial admission, change of status or extension of stay in E-3 classification, however, may not be denied solely on the basis of an approved request for permanent labor certification or a filed or approved immigrant visa preference petition."

That's straight from the horse's mouth: http://www.uscis.gov/files/pressrelease/E3PolGdnc_121505.pdf

So, you can enter the DV lottery, or apply for an employment based green card. But you still have to be able to prove you intend to return to your home country at your next E3 interview which is something you have to do anyway but I guess it would be a bit harder than if you had no GC applications.


Plus the spouse of an E3 holder is allowed to work.


I am on a E3 visa (australian).

The process is easy and I didn't have any problems at all. All I needed was a degree (any university degree) and to be offered a job formally for a 'professional' position.

6 months into my employment here in seattle, I realized the role was completely different to what I was hired as ('consultant' sucking up money from microsoft vendor contracts) and no real design and development. So i got an offer from another company and left. I thought this would be a nightmare but as long as your not unemployed less that 10 (or was it 15) days you can submit to make adjustments to the visa. I am now happily with another company in seattle and going on 1 year in the USA.

Any regrets? Yes. Healthcare is too expensive. My wife is having a baby in february and even with insurance it will cost us about $5000. In australia it would have been free and the government would have paid us a baby bonus of $5,500.

If anyone has any questions about the process email me at lukemh *at gmail.com


Depends on your private insurance. If private is via the company the costs should not be more then your co-pay (few bucks). The baby bonus in OZ definitely helps.


How long did it take to hear back from USCIS about changing your E3 to a new employer? I've heard it can take months in the worst case, or weeks in the best case. I long thought that bouncing out of the country and getting a new visa would be easier and I've heard of people doing that when changing employers. I'm guessing you either had a flexible new employer who was prepared to wait for you, or that waiting to hear back from USCIS isn't even necessary - you're actually allowed to start work for your new employer as soon as the LCA is approved?


It took about 3-4 months. I did not leave the country and started with my new employer within the 10 days. My new employers' lawyer lodged the I-129 (application for change) during employment with the first employer and I started with the new before the approval came back under advisement of the lawyer. If it came back rejected I suppose I would have had to leave pretty quick.


That's great to know. You probably just saved me and my wife a few grand and a lot of hassle bouncing in and out of the country! This is a great visa, but it seems (to me, at least) like they rushed thru defining some parts of it.


I had no idea this visa existed. Thankyou.


This often baffles me, as a foreigner in America (currently in a position where I occasionally hire people).

The American employee is probably the least protected in the West. Firing is about as simple & cheap as it gets outside of an Indonesian sweatshop. Many start as contractors anyway. The upside should have been that companies would be quicker to hire. Instead sprung a weird culture of "the four hour interview" (sometimes several of these).

There's actually not that much you can find out about someone before hiring them: "Show me a piece of code you've written" - hopefully it's on GitHub or similar, ideally forked by some other people too - "Tell me about some design decisions you made when building this". You should also try to gauge personality, motivation, curiosity and chemistry.

That's about all you'll know, regardless of how convoluted your process. But fortunately you're not in France, so if it doesn't work out you can always go your separate ways.

When companies take too long to hire it usually indicates fear of making decisions. Interviewers are afraid to say someone's a good/bad fit. The CTO is afraid to look bad for hiring the wrong person. It's probably not going to be a fun place to work if you want to create new things.


Hey I've got a green card and I'm having major problems, not really sure why. Just today I was rejected from a job where I absolutely aced the interview process. No feedback as to why but I'm thinking there is something lost in translation. I'm from the UK, been coding C++ for over 10 years and love it, even coding in my spare time. When I meet people at interviews I get good feedback, answer 99% of the questions no problems and generally do well. Yet still, for some reason and despite the massive demand for software engineers, I'm just not getting anything. Never had this problem in the UK... but just wanted to let you know that it seems you're not alone.


My impression is that the market is much different for people wanting to do systems and c++ development. Very few postings, and those that do exist are getting swamped underqualified applications, among others.


we are hiring system level people at 10gen to work on mongodb so if you are interested ping me christkv at 10gen


Will do, thanks!


I want to know what the stigma is over remoting. I know 37signals has quite a few remote engineers and they are doing quite well. There are loads of good engineers literally all over the country. But for some reason the Bay area would rather spend twice as much looking for local engineers than just hiring ones that are on the other side of the country. What gives?


Having remote workers requires a very different operation style and a lot of trust in yourself as a manager, trust in your workers, and trust in the technology you're leveraging to communicate. Can you as the manager lead from afar -- its harder than you might think. You can trust workers to actually work, you can just let them go for not doing so. But it's harder to trust your remote workers to engage with the company and their peers digitally. It's not easy. Also, the technology may be a pain to use, and kill any good intentions or habits you may have started.

The similar problem with remote is that the manager and their team must consciously prevent the "silence" the author alluded too. Likely, the silence was not intentional. People get distracted in "realspace" and easily can neglect remote worker. In order to have a remote team be viable, you have to overcome this barrier. That's where the trust/competence of all parties comes into play.


There are other problems with remote workers. You can't have a face-to-face conversation. A remote worker can't go into a coworkers office and help track down a tricky bug. These issues can be alleviated to some extent by email, phones, and video-conferencing, but those things require a fair amount of work to set up and still aren't the same as having the person in the office.


I've started another thread on remote working in order to compile differente experiences and solutions

http://news.ycombinator.com/item?id=3428195


I'm willing to bet on-site engineers (especially those with H1B1s) are more loyal. It cuts both ways though - a freelancer knows they are first to go if they company needs to cut back.


Freelancing is not the same thing as a remote employee.


Hey, 20y old programmer here. I feel like I could never pass an interview with these brain teasers.

Also, I've never really had an interview. And I've had some pretty good jobs, but I never got them for solving math problems.

Seems to me it requires a person that falls in one of these categories:

- having a job that includes solving math problems - I'm web/mobile - motivated enough to prepare for it (I could believe that) - I would probably do this if I wanted the job - people who are so freakishly smart they can solve it right away - This is my idea of Google engineers, but it's not me - people who have fun solving math problems - I love to see things working, so not me

What do you think is the best strategy to increase my chances if I ever get to do an interview like that?


I'm in the same boat as you (20,web/mobile). I've done my fair share of interview and here's what I've found:

Anything that's worth doing involves a heavy amount of math. Most of my day is spend doing UI and I tend to deal with a heavy amount of math each day. So I don't know what you mean by "I'm web/mobile" but unless you are purely a designer*, your doing math.

The math that they ask at interviews usually doesn't involve anything that isn't reasonably expected to be in an algorithms book. To that extent they usually avoid some of the more specialized algorithms. eg, I've had BSTs but not Red-black trees but it's not unusual to have a question on RBTs depending on the company.

Other than knowing your algos really well that's about it.


Most of the puzzle questions are straight out of a CS education. Actually it mostly concentrates on about 3 classes worth of CS, your algorithms course, your operating systems/multi-threading course, your networking class and maybe your discrete math course. Of those the most important is your algorithms course. Those happen be the harder classes too and are the core of a CS education. Unless it reveals a deficiency that you had in your CS education or some skill set they are hiring for (and even then), it's okay to say: I've never encountered that before and then try to work through it.


I agree that the puzzles are bad interview questions.

But if you want a _specific_ job, it's always a good idea to find out about the interview culture (if you can, it's almost impossible for small companies) and then prep for the interview at hand.

I guess that falls under "motivated enough" :)

If you want to be prepared in a general sense, get "How would you move Mount Fuji", a book on those interview puzzlers. The upside of most of those puzzles is that the answer is blindingly obvious once you read it the first time. So read that book, and you're done ;)


I'm going through the process myself, and getting to work in the US is extremely complicated. Whenever I talk with local people (even immigrants) how hard it is to get a visa in the US nobody believes me, but sadly it's the truth. Remote workers is not the solution though, you should be able to get a visa easily for a highly specialized job.


If you want an H1-B, you need to apply to start work on October 1. We didn't even put in an application for our H1-B candidate until September and he received his H1-B in early October. Clearly just another demonstration of the USAs primitive immigration policy!

You also have to be very careful coming to San Francisco to look for a job and then applying for an H1-B ...theoretically that is against 'the rules' so make sure both you and your future employer are comfortable with the situation.

I'd say try again next summer, I'd bet you find success. The $5K for an H1-B is nothing for a great dev!


I've had similar things happen to me. The best approach is to be on top of how the visa works, the quotas, the timings and the best visa agencies a potential employer should use to get you in. Often companies assume it's going to be easy and pull out after making commitments based on that assumption (and also go silent, like in my case)

That said, the author seems to be quite employable, I hope someone spots him for some remote work or lets him join a branch somewhere in the EU and transfer him across on an L1 visa.


Right now I'm currently working at teambox.com, I just wanted to share my experience.


Agree. I am currently hiring in Shanghai and even though the salary my company offers is way above market average (it even surpasses the average in Singapore), but I am still having a _very_ hard time to find experienced candidates with more than 5 years of software engineering experience. No, my coding questions are straight forward and no tricks embedded. I do ask some open-ended engineering questions, just to see if a candidate can narrow down the solution space by posing assumptions.


please, details


Details on..?


I imagine he wants company name/links to job postings.


It's been my experience that even without the visa issue, US companies tend to shy away from hiring remote talent. I am a US citizen with a solid mobile development background, and have gotten great responses from companies that have reviewed my resume, until they realize that I currently live outside the US. It seems that while the visa process may be an issue, getting over the "hurdle" of hiring remote workers still seems to be a major issue also.


Not an uncommon situation in my experience. Hiring in the valley has never been less skillful or less transparent. Even if you are not a developer and you do have many successful projects you still have to answer sometimes rediculous questions from people who really don't know any better.

Even professional recruiters are at a loss as to how to deal with this.


Wow, silence. So strange. Also strange about the visa. H1-B's were 'gone' this year (all were claimed fairly early), but they should have known that if they had looked into it at all. Unless you've had one before, the earliest you could start in the US is next November, but you have to be hired by April so they can apply on your behalf.


They got other H1-B's easily before, but apparently this year they run out so fast!


It's actually more common for them to disappear quickly. I was extremely lucky the year I got mine- there were still some available around April. As I understand it, that's a rarity. Hooray for economic downturns?


Thanks for sharing the experience. I went through the H1B visa process a number of years ago. Although it's pretty tough being treated like you did, I think you and possibly the offering company went into the arrangement without enough information. I remember that the H1B pool is relatively small (in the 10's of thousands) per year. And that well connected immigration lawyers and sponsoring companies usually exhaust that pool within the first day they are released. After that, it's virtually impossible to get a H1B. And when you if you're lucky enough to be able to wrangle a H1B, it's a pretty convoluted and costly (for the sponsoring company) application process. Good luck with the next round of H1Bs, the sponsoring company (and lawyers) need to get in quickly! You sound like a well qualified dev, and it's a shame that the US misses out on good talent because of an inadequate immigration system...


A close friend (in the UK) was approached by a company (In the US) this June with the offer of a job. The H1B process wasn't started until August and he picked up his successful application in mid October. The quota (55,000 or so) goes quickly, but varies by the year and can take several months to be filled completely


Visa cap was a problem during 2006-2008. Starting from 2009 it became much slower. (for example, in 2008 whole main h1b cap was taken with in 1st day of april and even between these who "took" it there was a lottery. On the other hand, for 2009 visa cap was used only in September)


I went through a similar process twice. In my case it went rather smooth, but I am a scientist not a programmer. I made this post to summarize my experience: http://bit.ly/zMEHfr


In case anyone is afraid of clicking on random bit.ly links, the above link expands to:

http://brunosan.eu/2012/01/04/being-recruited-in-the-usa/


I thought NIV was usually used with application for EB2 Green card. Is there a NIV category in H1B too?


I went back to my Visa application. You are right. I´ll edit my post. There are certain cases where there is no cap. The one that applies to me is "A nonprofit research organization or governmental research organization." 8 CFR 214.2 (h) (19) (iii) (C)

My mind played tricks (back when I was researcher there was that option to increase your chances). However I do remember that presenting a legal case that my skills were worth was an important factor to get the H1B.


I'm curious about the author's opinion of the puzzles he had to answer while interviewing. I know most of us in the US are used to this style of interview, so it would be interesting to hear more about Pau's experience.

I've been reading up about hiring and interviewing, and shockingly enough there isn't any good research I can find on effective hiring practices. I worry that asking puzzles and brain teasers is just a fad that isn't doing anything to pick out the best candidates. There's no real evidence that we're doing it right...


Personally I would reply that I'm an application developer and none of those questions are related to my job. 'this' refers to the object, I don't give a shit how it works. From their questions, I would say they're searching for a low-level library developer with a strong background in mathematics.


>> " 'this' refers to the object, I don't give a shit how it works."

Well, it is quite important knowing how `this` works in JavaScript. See: http://www.digital-web.com/articles/scope_in_javascript/


Also its really important to know how float works in javascript. because 0.1 + 0.2 != 0.3 in Javascript.

I don't know why "application developer" == "Don't have to know how the thing I'm using works"

Quite frankly I can never get away from knowing how the thing I'm using works. My greatest wish is that in 2050 we will create a computer language that has no performance penalties and all the JITers/vms/compilers are invisible to me. Until then I'm forced to learn all the inner workings of my languages if I want them to run reasonably.


I can pretty much guarantee that "I don't give a shit how my language works" is not something most employers like to hear.


I liked a lot all the puzzles because they were really challenging and I didn't expect this kind of questions. Although, I found the theoretical questions better to prove how experienced I am on the some fields.


Worth noting that H1B is more difficult to get without a college degree (so I've been told). I have no credentials and the companies I'd like to work for don't care for them either, but unfortunately the government cares because that's their only grading system for people (it's not like they're gonna look at your GitHub profile).

There have been several companies in the past years that expressed their interest in hiring me but were put away by this problem. I don't blame them, I blame the system.


I think it's a Bachelors degree or the equivalent years of experience, with one year of a degree being equivalent to 4 years of work experience. So you would need 12 or 16 years of work experience...


It's actually 3 years of work experience per university year. For most countries outside the US that's still at least 9-12 years of work experience.

When people ask me what the downsides of dropping out of college were, this one is the most important.


thanks for clarifying!


That's funny because in the real world I think it's more like the other way around, 1 year of work experience is like 4 years of a degree. (Note: I'm currently studying cs)


Yeah, 1 year work experience > 1 degree IMO


totally agree on that one :)


how do you delay a function to the next tick in javascript?


That phrasing isn't very precise, but I presume they mean to use setTimeout and pass a timeout of 0 [0]. That link has some discussion of this use and suggests using window.postMessage instead, at least on "modern browsers", for a suitable definition of modern.

[0] https://developer.mozilla.org/en/DOM/window.setTimeout


Im assuming we are talking client-side and 'next tick' means when there is a millisecond of free time. Just use: setTimeout(function, 0)

Technically supplying '0' as the milliseconds is bad in old browsers, so you might want to say 10...but I've used '0' a lot without fail.


setTimeout(fn, 0);


Immigration is such a complicated issue – talented workers attempting to immigrate into the country, and bureaucracy getting in the way.


The H1B visa is designed to provide foreign workers to a business in instances where doing so does not affect American workers. When the visa is denied, don't jump to the conclusion that the bureaucracy failed. The more likely result is that the bureaucracy worked because the company was either trying to hire a foreign worker for a job that many unemployed Americans could do or that they were trying to undercut currently-employed Americans' wages.


We have very high unemployment. Also, the national identity and cohesion is swamped by a far too large influx of foreigners. There should be an immigration moratorium. Essentially zero people should be let in until there is robust job growth.

There should be a much longer moratorium on granting foreigners citizenship. Immigration rates are far too high and on a course to create serious overpopulation problems in north america. https://www.numbersusa.com/content/


It's exactly this thinking that can kill science and startups. That there is unemployment, does not mean there is unemployment in every branch of the industry. In branches, where there is a lack of qualified workers, you need to take in immigrants, or you will become uncompetitive.

Also, remember that there are many people who just want to work in a different country temporarily because it is good for their career+. E.g. here in The Netherlands, we have a high influx of Chinese students and PhD candidates. But nearly all of them return once they have a degree (a degree from a Western university usually gives them good positions in China).

+ There seems to be a widely spread belief in the US that the rest of the world is envious, and would preferably want to live in the US. I have been in the US very often, but I'd never want to live in the US permanently. Social welfare, healthcare, paid leaves, pensions, etc. are so much better arranged in West Europe.


> this thinking that can kill science and startups

If an industry does not employ the native people in a country, or only enriches a clique of owners, then who cares if it leaves? In any case, this line of argument is malarkey. There is no evidence of restrictive immigration driving away business. Typically you just get an industry with higher capital investments and higher wages.


> If an industry does not employ the native people in a country, or only enriches a clique of owners, then who cares if it leaves?

That's a pretty extraordinary premise. Do you have evidence to support the idea that Silicon Valley only enriches a clique of owners, or that it wouldn't employ Americans? Or is this purely hypothetical?


I for one, would welcome the entire Silicon Valley to move somewhere else.


Perhaps you could get some actual idea of what goes on in the visa process rather than spouting mindless nationalistic rhetoric.

It's not like the visa process allows unskilled, unemployed workers to pour into the country. It's a lengthy, expensive process that allows employers to hire for jobs they couldn't otherwise fill from other available candidates. This brings intelligent, educated and skilled immigrants who are perfectly capable of paying their own way and who bring a massive net gain to the US.


It's true that the overall unemployment rate is alarmingly high, but my understanding is that the employment rate among software developers is quite low. In my area, at least, my sense is that there aren't enough developers looking for work to meet the demand for their labor. I guess it's theoretically possible to train unemployed nontechnical people to write code, but I don't see any viable plans to make that happen.


putting my very first comment in HN here.

Does anyone have any experience or know the process with transferring from F-1(ESL school) to H-1B?

From What I've been told the process is F-1 > OPT > H-1B but currently,I'm in ESL school and can't get OPT.

Briefly background :BSc from Thailand computer science,6 years experience with .Net full stack,Agile,Scrum,CMMI level 3,lately really into mobile app development(iOS almost 1 year) 

I started applying for jobs by looking on the job listing site and even post my resume on craigslist. got several job interviews at the time apparently by phone which both directly from company and recruiter.

overall,the interview went pretty well then last question I was asked what is your currently work status I told them F-1 student visa.... nailed it...Well,never get a call back.

never give up I jump in every single opportunity, read every searched result to start my startup in USA (e.g. blueseed,startup visa act).

Went on one face-to-face job interview and finally,got a job offer as software engineer and assistant software architect they told me that they are willing to sponsor me for H-1B. They made a contact with one law firm and I got a couple forwarded emails from them which being said how the process works and how much will it cost blah..blah..blah (the company tried to show me that they were starting the process getting me a working visa).

the law firm asked what school are you in right now I said I'm in ESL school then they said you will get a better chance if you are not in ESL school but either graduate school or college which majoring in any field that related to the job.(software engineer).

This led me to my question above and I would like to know your opinion that Is there any chance for me to get a working visa in this situation? 

Thank you.  


Fellow US citizens, we should be grateful for what we've got :P


I think there's not so much a talent shortage so much as there's a shortage of engineers who are gifted at contrived puzzle questions and willing to accept average pay for exceptional ability.


In my experience interviewing candidates for Amazon(1), there is definitely a talent shortage. We get a surprising amount of applicants that can't write a basic program. Personally, I reject 4/5 of all applicants at the phone screen because they couldn't write a very simple program.

I use a collaborative code editor so I can see what the person is typing, and I don't give trick problems. I pose the question, and ask them to think about it before coding. Once they've landed on an acceptable solution, I ask them to write it up. 80% of the time it's broken or they can't finish it (these solutions should be 20 lines or fewer). On at least one occasion the answer was copied directly from stack overflow :\.

Trick questions are all the rage, but I'm not convinced that they actually highlight a competent developer. The problem (in tech, not specifically at Amazon) is we're all trying to emulate Google, and since they ask brain teasers then we have to ask them too, because it must be the one true way.

In summary, I think there is both a shortage of good devs, and contrived puzzle questions are not actually an good for evaluating a candidate.

(1) These views expressed are my own, and not necessarily the views of Amazon or its employees. Disclaimer added at my own discretion, not due to any corporate policy.


Amazon has a terrible reputation which may distort who shows up. I have done conducted plenty of interviews for a few company's and having a solid reputation drastically improves the quality of candidates show up.

EX: Microsoft has middle of the road reputation and I know people that would literary consider with them at 120k to be a better option than 140k at Amazon.


That's a fair point.

There are certainly people who apply to Amazon after having made a couple websites, thinking that Amazon is just a website so they're qualified. What they don't see is all of the intense engineering that happens to keep that website running. A very small portion of our engineers ever write HTML.

Amazon does have a reputation of being cheap (and it's well-deserved), which is probably causing a lot of great devs to avoid the company entirely. That would skew the numbers in favor of less talented devs. However, I don't believe our rejection rate is higher than the industry average. 80% rejection at phone screens is pretty standard.

Edit: Also, for your particular example, Microsoft was _way_ better benefits than Amazon and a better office environment. I can't comment on pay, since I don't know their typical payscale.


My personal experience with amazon recruiters has been poor. At a college career fair they basically shoved off anyone who was looking at internships (while treating full time like they were gold). I've never interviewed with them because I really don't care about a company that won't give me the time of day if it isn't aligned with their immediate needs.


The underlying problem in tech hiring is that it is difficult to assess candidates in an interview format. Many of the skills and personality factors that make someone a success are dependent on context. Transplanting an engineer to a new context is uncertain, even for putative rock stars.

Many of us have presumably seen our share of brilliant people flame out because they could not adjust to the ambient value system, and figure out how to get the right things done. Often these people flourished in a prior context: school or another company with more or fewer constraints.

Assessing that context match is hard. The most successful way is to have a mutual trial period (ex: internship). Failing that, in interviewing for a full-time position, the closest you can get seems to be by trying to simulate what it'd be like to work together. That's why you try to throw them at coding exercises or difficult problems. "Brain teasers" are silly but coding challenges where you see how far they can go with some direction are actually pretty useful. They give you a large dynamic range within which to quicky hone in on someone's current skill level. More interesting than their current skill level is how quickly you think they can progress, and so that's what you try to simulate in an interview.


That is definitely an underlying problem. Interviews are too short and too stressful to accurately show how good a candidate is.

I'm not particularly good in interviews because I get nervous and stumble over my words. It is not at all like a real working environment, so I think any conclusions you draw from one are necessarily flawed. I recently read about Heroku's interview process, and I think it's great that they can invest so much in evaluating their candidates. They give each new candidate a project to work on and make a hiring decision after it's been completed. (See http://www.craigkerstiens.com/2011/12/02/how-heroku-works-hi...). I also think it's unsustainable as their company grows but I would love to be proven wrong.


This is just a helpful tip and not a criticism. Amazon has a very bad reputation among skilled developers and most are avoiding you for that reason.


People perform differently when they are being watched not to mention interviewed. Some deviate substantially.

Also, that collaborative editor might not fit their fingers due to a habit.

Even more: often people just don't like each other and the interviewees feel that, get nervous and perform poorly. I know someone who was dismissed as completely unqualified on the phone screen interview where I work and then Amazon hired him and he's quite successful there.


Nobody should be asked brainteasers in a Google engineering interview. I have no idea where those bogus "20 Google interview questions" lists with stupid puzzles come from. But really the interviews are supposed to cover things like coding, algorithms, and systems design.


Reminds me http://rajeshanbiah.blogspot.com/2009/01/how-to-interview-ca... BTW, who's your inspiration for better interviewing process?


You keep using that word 'shortage'. I do not think it means what you think it means.

There is no such thing as a shortage in a free market. It's an oxymoron.


3 hours max. Lol. How about 8?

As far as the interview. Stupid questions asked by stupid people who can't tell a techie from their asshole. Should be a technical discussion not an interrogation. Their loss.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: