> I would love it if anyone repeating the tired talking point, that solutions for rich people's problems will magically transmogrify into solutions for real problems with actual impact on human potential and quality of life, could name even one example of this that's come out of U.S. technology startups in the last ten years.
Android. It was a technology startup purchased by Google.
Stripe, it has enabled small working class merchants throughout the US to make multiples more money. Every farmers market I go to now days has merchants who can now accept credit cards (my spending has increased dramatically!)
Multiple other mobile payment and banking solutions have helped people around the world gain economic freedom.
Stripe wasn't trying to solve rich people's problems. Stripe was started for the explicit purpose you just stated -- to enable small vendors who couldn't otherwise afford credit card processing to take credit cards. It's a great example of what can happen when you actually apply effort to a real problem instead of hoping that some side effect of what you're doing will solve a real problem.
I don't really see where you're going with Android.
I may be biased, I work at MS, but I've always loved OneDrive. It just works everywhere. On my laptops, tablets, and across both Windows Phone and Android.
Google keeps doing UX things with photos and Google Drive that confuses my #1 usage scenario (finding photos). It also has some strange integration with Google Docs. It all sorta works but, again, the UX changes pretty damn frequently. OneDrive has reliably stuck with "here are a bunch of files."
Which OneDrive do you mean: OneDrive or OneDrive for business which is actually sharepoint online even though it's not called that, but there is another product called sharepoint online?
I didn't really use OneDrive but had a bit of a bash at OneDrive for business... It has all the same basic features as Drive implemented in a slightly clunkier interface. Workarounds possible but really, why bother when Drive is better? Example: I wanted to show a list of thumbnails and allow someone to "flick through" them. Impossible. There was some app/plugin thing called ImageViewer that I had to get from some store that sort of worked a bit, install process was arcane, and it wasn't a folder it was in some weird menu.
I can't talk about OneDrive really cos I never used it (I signed up before realising that OneDrive and OneDrive for business are different things.... Zapier has recipes for OneDrive but not OneDrive for business....) oh and not to mention the OneDrive app that ships with windows 8.1 is not OneDrive for business so if you are an office365 customer and you buy windows and try to use OneDrive, it won't log you in.
It is an utter atrocity. An abomination. Also in office365 you can't add custom spf records, and when I finally got OneDrive installed on windows 2008 server it just wouldn't synch some files. I ended up installed Drive instead.
Every foray I have into the world of Microsoft is fraught with nonsensical, arbitrary restrictions and inexplicable bugs.
The OneDrive for Business is a recent rebranding thing. :(
OneDrive the consumer product is awesome and fun. It is incredibly transparent, IMHO more so than other solutions out there on the market. (Admittedly the differences are minor, just the added touch here or there)
Awhile back all the different consumer cloud storage providers kept one-upping each other on storage capacity, so I am sitting at some stupid high amount of GB for my OneDrive account.
I just had some LED bulbs burn out ~9 months after purchase.
Any potential cost savings just became really hard to recoup. I'm what, 6-10 years out now to save a $30 or so?
Cheap incadecent gives great quality light. Expensive LEDs give good quality light. Cheap LEDs ruin sleep patterns. Race to the bottom (and a lack of consumer awareness or ability tonbuy high quality bulbs) means LEDs are going to end up causing quite a negative impact for a non-trivial number of people.
FWIW my HOA put in shiet blueish LEDs everywhere outside. The entire complex now looks like a zombified wasteland. Evidence that I need to attend more meetings.
The misleading or unneeded credentials on job postings is a huge problem.
I've seen job posts for social media managers that ask for an MBA. I've seen jobs for blog post editors that ask for an MBA.
Actually I think ever job that isn't Software Engineer might very now ask for an MBA.
FWIW my Fiancée specializes in researching technology and social trends in the Asia Pacific (APAC) market. She's authored multiple industry leading reports on the region, and has collected some really great work experience.
Any company that wants to launch or move into the APAC market should be eager to talk to her (and based on China's growing GDP I'd advise looking in that direction!), but every job she applies for wants an MBA, and she cannot get past resume screening.
Of course skills listing in technical job postings for non-Tech companies have a similar problem. Whenever you have someone who is not within an industry filtering resumes (or even worse, you are trying to make a machine do it), problems like this start to appear.
Oddly enough the increasing use of useless machine resume filters have made head hunters all the more valuable. I hand them a job description that explicitly says "has 2 out of these 7 skills" and I give some very broad skills. E.g. if I am hiring for an embedded engineer, I'll include skills like "worked on portable games such as GBA or Nintendo DS".
This has ended up solving 90% of my recruiting problem.
(I'm at Microsoft, FWIW, every engineering team here does hiring their own way)
My team does whiteboard questions, but we try to keep them practical.
Typically they are the types of problems that we'd expect new engineers to have to look into on their first day. Oftentimes the questions are less "come up and an answer" and more "let's explore this problem domain and see what we can uncover."
As an example, the interviewer will write up on the board a data structure that is too big and has redundant fields in it, and start a discussion about how to optimize that structure. The optimizations go more and more in-depth as the candidate gains experience thinking within the problem space.
Another problem, the interviewer will give an example of a synchronous operation and work with the candidate to break it up into a set of asynchronous calls.
My team tries to avoid "puzzle questions with 1 correct answer".
I do ask simple data structure questions just to test basic programming skills. On occasion someone does make it through who cannot even write a FOR loop.
My standard go to question is "Please do an in order print of this already sorted binary tree."
It is 5 lines of code, and ~80% of candidates who haven't seen a tree in a decade can still figure it out.
IMH the goal isn't to try and trick people, it is to try and see if people can hold a conversation about a technical topic and make valuable contributions to a discussion.
I hate to show my ignorance, but why the focus on binary trees? I've been programming for decades, but there are plenty of things I've never touched because I just didn't have a need in the particular job. Binary trees are one of those things.
What I mean to say is, I have tended to use existing libraries that might make use of binary trees, but that I have never had to print or modify them. If modification is necessary, it's always through the library. So while I understand the basic concepts, I'm having trouble understanding why it would be a useful interview question.
Do developers at Google and Microsoft actually manipulate binary trees on a daily basis? Like, ALL of them? I can understand that they would be a common thing in the bowels of some code, but surely not all developers in either company would run into them on a regular basis?
I recently went through an MS phone interview and didn't do as well as I would have hoped. I did learn quite a bit though. Here's my advice:
1) Actual programming and a technical interview are not and never will be the same thing. Assume you know nothing. And I do literally mean nothing.
2) Start with a basic intro to programming book in a language you aren't familiar with and try to do simple tasks in a language you already know. This simulates a bit how it feels to program under pressure. Things you know you know seem not to come out quite as quickly. This helps to emphasize point #3.
3) Practice. Practice. Practice. Practice. Practice. A decent chunk of your typical interview questions exist out there. I'm not saying to memorize them, but be familiar with their solutions. Eventually you'll get to the point that an approach for solving a new problem will come from pieces of old ones.
4) Since coding is done on whiteboards, do not use a compiler. Pencil and paper.
5) Find someone to give you an honest-to-goodness mock interview.
I'm currently interning at MS (India). I am a physics student with programming as a side hobby. (Not yet sure what to do as a career)
While this may be quite different from interviews for MS Redmond/etc full time jobs, this was my experience:
In my interviews, I mentioned off the bat that I wasn't great at algorithmic stuff. Now, don't get me wrong, I can do them, I'm just far, far behind the curve. (Students, esp. CS students, in India spend lots of time on sites like SPOJ and CodeChef solving algorithmic questions; I prefer to do stuff in open source). The interviewers were understanding. I got asked fun stuff like "what do you enjoy about [project I work on]". "Walk me through some large problems you grappled with on [project] and how you solved them". I got to have great back-and-forths on these things. It wasn't easy explaining nuanced and intricate problems, but I was able to give them a rough picture which I think is what they wanted. Shifting the focus from "can he solve this puzzle" to "what work has he done in the past" was great.
There were also algorithmic-y things, but not the usual kind. For example, one interview focused on designing and optimizing a build tool. The idea was that we had a bunch of components, with dependencies on other components, and I had to efficiently generate a viable order of building. There were some other constraints which I forgot. I realized that the problem was similar to a garbage collector (not that I knew how to model that either :P), and did some sort of mark-and-sweep thing. Then, after being asked by the interviewer, I optimized out some for loops and stuff.
I didn't need to know any algorithms beforehand. Sure, if I had known how `make` does dependency management, or had read up on garbage collectors, I would have done it faster. But I didn't need to know anything, and it worked out.
My fellow interns had really rigorous algorithmic interviews. They were okay with that because they were good at them. It's understandable that "solve this puzzle" is the default since not everyone has real world projects they've worked on (students). I don't like the status quo, but I don't think the interviewers will be intent on maintaining it either. If you have stuff you've worked on that you'd prefer to talk about, I think they'd like that.
If you think the interviewer will be open to it, I suggest mentioning it. They will know you're not from CS; you can mention that you don't have much practice with algorithmic stuff.
Major YMMV though. Also I've done very few programming interviews so the advice here could be totally misguided. :)
> As an aside, do schools today teach power, energy, voltage, and current in the standard curriculum? I know I was taught that (and Ohm's law) somewhere between elementary and middle school, but that was many decades ago...
I got it in my second level of engineering physics in college. Before that I had learned some of it independently for my senior project.
This was in the early 2000s.
I guess the answer is "depends on the curriculum".
I'd argue that forum sites are primarily document based.
We've managed to emulate the functionality of a 1990s (or 80s!) dial up BBS and scale it up 100x (now instead of a thread having 200 replies it may have 20k replies), at and we are only needing a few thousand times the bandwidth and CPU power to do it!