171 karma · joined April 23, 2019
That's why companies should allow laptops.
> Take-home assignments are unpaid work
True, they could be optional. You may not get the job if you don't do it. Honestly, if you can't spend one or two hours on a take home assignment during a 7 day period, you certainly have different problems than applying at this company.
> Pair programming during interviews makes people uncomfortable
I agree, pair programming during an interview is mostly a no go. Not because of the issues you mentioned but because most interviewers are totally unqualified to do this properly (unfortunately, most interviewers are also unqualified in general to conduct interviews). It takes a lot of skill to conduct pair programming interviews and draw the correct conclusions.
> People who currently have good jobs are unwilling to consider contract-to-hire
In US, there is practically no difference between those three. You can be fired any day anyway. But yes, if you have a secure job that is good, the bar for switching is high, but so what? Why even switch? It's your choice then... Luxury problem!
> Credentials, including graduate degrees, are no guarantee that someone is a good engineer
I would go as far as saying your credentials and degrees are horrendously irrelevant in predicting your skills as an engineer. The only thing you might be able to conclude is that a GPA 4 M.I.T. graduate probably can pick up missing knowledge quickly, as opposed to a no degree dish washer who learned "how to code" in a 6 week bootcamp.
On that note I have experienced first hand, Berkeley and Georgia Tech CS majors, who were absolutely incompetent on the job and just had no idea what the hell they were doing, with little improvement in sight...
I could never imagine working on a side project while having a full-time job. That will inevitably mean you are doing neither of these things well.
A new grad, compared to a 10 year veteran :D. Yes sure, it levels the playing field, totally. As if language and frameworks would mean anything. I don't even want to know what kind of "veterans" would compare to a new grad. If you are worth anything at what you are doing, you would kick any smaller team of new grads out of the park, even when working alone, in a language you don't know and with a framework you don't know. New grads essentially know nothing about software engineering, nada...
It's baffling to me how any company would think otherwise. Perhaps they should review their hiring policies then.
While military action is not feasible and in this case counterproductive, aggressive sanctions might help. Sanctioning these nations back into stone age if they don't change their course...
Right now, there is no accepted means to stop this from happening.
For that comparison to work, java would have needed to only have checked exceptions, with some added language features to deal with them cleanly, and then it might actually have been a viable design. Littering your code with try-catch is what makes exceptions infeasible for error handling.
If you want to compare Sia to anything, compare it to Dropbox or OneDrive. S3 was made for an entirely different purpose and Sia can't even remotely compete with it.
As a personal data store? Maybe. But wait until this thing becomes more popular and hackers start making a mess. Will be interesting to see how stable this "fully decentralized" network is, once it gets the full attention from bad actors as all the cloud providers.
Sounds like this has good chance of bringing the "human intelligence on deep-learning auto-pilot" into the world of developers. Don't think, just accept what the computer tells you. Over time, why think at all.
There is no bigger enemy to concise, clean code, than too much auto-completion. If it doesn't pain you to repeat patterns, then there is literally no incentive no to litter your code with anti-patterns and copy paste. Now it's even worse, because this copy paste gets "smart" enough to look alright, which is in itself the very definition of an anti-pattern.
* I need to develop for this shitty platform, which I hate, because my customers are on it
* I want to develop for this awesome platform, because I just love it and my customers are also on it
If Apple loses touch & favor with developers, their platform will slowly but surely die out over a decade or two. Apple is expensive, the only reason for Apple to even exist is because they deliver quality products. If they ever go down the road of consistently failing this core value, they will die more quickly than reindeer thrown down a cliff.
And I would even question that you need particles. Particles might just be what we can experience in 3 dimensions.
I always find it funny how humans are so eager to draw generalized conclusions based on their own meager 100 years of scientific existence. We should be more humble and realize that we know jack shit about anything.
Bottom line: Pick the language most teams at your company are familiar with. At Amazon that simply is Java for anything that is not frontend, period. Even getting into Kotlin presents a major obstacle. Clojure? Yeah right.
Edit: Just to clarify. Working in a big company is not meant as a restriction. In fact, having worked in several startups before, these would do well to adopt the same principles for programming and prohibit this "university graduate" way of developing software. In the end, if your startup is going to survive, it's going to become a big company itself someday.
Now we currently use Java here. I worked with other programming languages in companies too, for instance C and C++ which were a nightmare with no equal. Don't get me wrong, when I was in college I just loved creating crazy shit with template metaprogramming and preprocessor metaprogramming. Once you mature out of it, this is just the most craziest thing you could ever do.
The reason is simple. Even plain, stupid Java is already incredibly hard to verify during a CodeReview. Spend 2 hours in a row trying to find problems with other's people well written Java code and your brain feels like it explodes. Now with C++ that same task is almost impossible and will likely require 8 hours of your day for the same code volume. With Haskell I would go out on a limb here and say it would require 24 hours of your daily time to handle the same code volume...
Not to mention that most programmers even at Google and Amazon would not even be able to either read or write such code and people like me, who could and did in the past would just shake their heads and move on. Nobody wants to deal with such code outside of university...
The real crux of the matter is that these companies don't want to pay top salaries and thus don't get top developers. As long as there are people who navigate themselves into such niches and are proud of it, the salary for these specialized jobs will stay where it is. Simple as that.
Also just because someone can't come up with the coolest solution for your project, doesn't mean they aren't good developers. This is even more biased than algorithmic interviews, because algorithmic interviews have structure. I actually CAN solve a puzzle in 20 mins. You definitely can not solve a project in 20 minutes or even an hour. It is impossible. And the best candidates will be those who sit back, analyze the problem for days or even weeks and come up with a good solution for your project. This approach is so infeasible for general interviewing that I don't even know where to begin. You are basically filtering out EVERYONE and take the one person who knew enough upfront to accidentially solve your problem best...
"You can't invert a binary tree". Well doh! Maybe you should go through the effort of at least looking at some of the basic algorithmic concepts again, you know just to show that you even remotely care to be hired by the company. They have a much harder job than you do. They get hundred thousands of applicants per month and need to filter them out. You are one person applying at maybe 2-3 companies a month or week.
To me, this sounds like someone who thinks too highly of himself and "he doesn't need to prove himself to a FANNG company". Well think again, writing Homebrew doesn't mean anything. Pretty much anyone at a FANNG company could do that, but not everyone wants to do it. If you want to work at FANNG instead Homebrew, you need to prove yourself to them, not vice versa...
Is it really too much to ask to spend a few days solving some programming puzzles on a whiteboard? If few days are not enough, then maybe you really aren't as smart as you think?
I think people these days really tend to always put the blame on others. What about starting to look at yourself more critically, think about if you are really a "senior" engineer? I work in tech for years now at FANNG companies and "senior engineers" are in a different league. I think I will get there in one or two years but it has been a long ride. These people are paradigms of programming that can always give you useful insights and advise. They excel at a wide range of soft skills and management too.
If you see what most companies (outside of FANNG) consider "senior" you will know why (1) senior engineer means absolutely nothing and (2) why FANNG is not interested whatsoever if you were a senior engineer somewhere else...