You are missing the point that a director level resource, could only apply to a relatively smaller number of roles. Entry level IC might not be worth applying.
So despite what they say, the limitation factor might also be number of posted jobs.
I know they said they applied to anything - but still anything for that profile might be a bit more broad - entry level IC to FANG may be which pays better or a role that is open to leveling or start up or any other combos.
Thats certainly invalid. People with 20 years of experience or more, are asked questions based upon the role they are interviewing for.
If you are applying for a principal or higher engineer role and your job involves coding, you are asked coding questions. May be not just focused on a complex bookish algorithm only, but rather more close to a real life distributed programming / synchronization problem etc. for example.
Every body is asked some thing close enough. At higher levels, often focus is not on coding, but enough depth of design where a person of such profile might end up educating the interviewer - while satisfying their requirements.
That being said, ability to solve coding problems efficiently (not necessarily spit A* graph algo in sleep), but a decent close to real life coding challenge is fair game.
The last part might not be true. Though i won't generalize, let's just say that i have been writing industry code for almost a decade, 90% C (because of domain) and at least a quick review tells me, porting this to a couple of major platforms could be very practical and useful IF IF, it does not sacrifice the performance.
Well coming from an industry c programmer (embedded, networking, high throughput stuff, where c is the only choice), i am really thinking this could be of a great use. Specially for large products developed and maintained for many years and have big teams, this could be priceless if actually ported / extended. I would probably look at this and try to contribute when i can. Thank you so much, great work
you said must be eligible to work in Canada. Do you mean that you cannot process people who are say on closed work permit in Canada and would need a new permit to work for you?
Until we find a way to truly achieve network neutrality which also means (from service provider's perspective) to throttle and keep in reasonable usage limit applications such as video streaming, specifically illegal torrent usage which chokes carriers bandwidth and prevents normal users too, this debate will continue. I don't see any thing principally wrong with providers point of view (i might be biased because i work in the industry that provides these tools/software. But logically, the word "neutral" to me should equate both sides - not prioritizing some high paying customer's traffic, but at the same time not allowing a regular user to eat every one else's bandwidth to download his favorite pirated content. I feel the discussion on the topic is mostly targeted at the former only. A side effect of such capability could also be better utilization of network resources i.e. charging customers ONLY when and what they use - there by decreasing costs as well.
Moreover, the concept is quite abstract and has many similar applications. I used to work in a scenario when there was a specific gateway resource that was needed to be run by every developer for executing his code, was very expensive and people would annoy each other by suddenly remote logging into machine and disturbing others. Then we came up with a resource locking / waiting and current state showing software, along with estimates of when which machine would be free, so you could request a reserve slot. Some sophistication included things like how much of it was actually used by you vs reservation time so it could adjust appropriately.
The best I think that can be done is to tell objectively why you didn't fund a company so either they focus on resolving those issues or at worst quit asap or move to a new idea. I dont know how much feedback is provided currently but it is immensely important even to those who got selected so they can focus on their strengths and fix their issues
I beg to differ on this point. Embedded software development in general needs more of core CS/CE curriculum than any normal application development does (web, desktop, mobile). You might get away with learning to program for say android, or say Dekstop apps in .net without knowing OS, Automata, Compilers, C/Assembly language, TCP/IP. But you can't do without those in embedded. Besides, learning languages such as C or C++ would require more time and effort. So unless this guy has gone through much of those in EE already, this is a bad idea in my opinion. I would also argue that even if he had, still going through all those courses in theory is different from going through them with a programming mindset.
Skiena has a very different style of introducing algorithmic problems. Generally all comprehensive books tend to follow a pattern. Never have i seen a book in which while just being a university student i tried solving a problem described in first chapter, kept reading through seeing my attempts fail and finally learn it was the famous TravellingSalesman NP-hard problem. Always loved that approach.
I never tried stating it was hard, or making it look like it is main stream. I just said that depending upon the domain you work in, Algorithms and data structures might be more important and you might encounter them more often then in web or desktop, than an average programmer does.
So the whole line of reasoning is irrational to me. Never tried saying systems programming is more main stream then web or desktop or enterprise.
Talking about renowned, Yes people who have written kernels, operating systems, network stacks / protocols - there is huge list of renowned ones. Do you want me to spell the names out starting with Torvalds or Stallman?
Really? may be you didn't have an actual example so had to get sarcastic about it. So let me put a real scenario here.
How about a gateway device receiving some minor 3-4 millions subscribers traffic and processing like 40-50Gigs per second. I suppose worrying about hashing those ips to access individual records is a waste of time, and a simple list should work? right?
The scenario is not as common as may be building a website. But it a whole industry and a whole bread of programmers exist who do this all day. You should go out more :)
I sort of agree to most. Being able to write recurrence out of master theorem is never kind of thing really needed here. Even if you know conceptually the running time of a loop (nested ones etc.) and be able to apply that practically is sufficient.
Ah... yeah for the design statement :) i can't say much beyond that for most of the companies with established practices - you have to write a design document, often down to the level of writing data structures and function names - run through debates with others to justify your choices BEFORE you can even start to write first line of code.
I understand this partially because of being in Embedded, C/C+ domain where you can literally shoot yourself in the foot due to wrong choices and often product models are different.
E.g. at one place that i worked, code reviews and conventions were very rigid, some what more than say Linux kernel, because the product was an RTOS and associated stacks, which were sold to companies WITH SOURCE since the customers were actually developers developing end applications using our APIs. So even one comment not written according to company's coding convention often won't pass a peer code review - but i believe this is a pure exception rather than the norm.
Depending upon what sort of industry and scale you write code for, very often, it is a HUGE part.
I accept the point that over optimizing is the root of all evil and the rest of the philosophy along those lines. But knowing algorithms and data structures inside out, because where and when you have to choose what - i doubt one can be called a programmer without all that.
And i would say again, i am yet to find some body renowned, who has made their mark as a programmer, and doesn't regard all of this stuff high enough.
Having said all that, if you work in a high level language and develop client facing / application layer desktop/web related stuff - and not involving too much scaling, you won't need these things most of the times. But if not, you can't live with out these.
Lastly, since college and probably since learning to program, the best of the breed usually were the guys who went on to acm and top coder kinda stuff. It is true that building products is not synonymous, but it definitely plays an undeniable part albeit i must agree that it is slightly over valued, nothing else.
You might be working in a scenario where you can't just look those things up. You have to code them through. Learning them then through general concept AND THEN implementing is too much. For instance, if you work in the embedded domain, you won't have the liberty to use public / standard / open source libraries.
For all the arguments against the algorithmic type questions - i would add that in my ~16000 hours of professional programming, i have had to worry about O(n) to choosing Hash tables, quiet a lot of times.
Although not too often (compared to factors mentioned already), but it depends upon the domain too. I worked in embedded for the most part where the liberty of using frameworks, libraries - is far scarce, so it matters which area / programming environment are we talking about in general.
Also, i am yet to run into a good interviewer + programmer (whether more experienced or junior) who doesn't value these things as a good predictor of some one's coding ability.
And we are not talking about only scale of companies like Google or Facebook and in my humble opinion, those might get a bit tooo algorithmic as well.
But you should be able to recognize that a design you did won't scale when you have say 100k or more packets (instances) of inputs thrown at it. It won't be a problem ONLY UNTIL your list of traversal, get big enough, and frankly any software worth being discussed - gets big enough at some point.
Or that your linear traversal should dramatically improve if you could code and use a hash table instead.
Ah - and yes, loved the idea of 'can do serious work for at t least four hours a day', but wonder if there is a way to determine that.
I know they said they applied to anything - but still anything for that profile might be a bit more broad - entry level IC to FANG may be which pays better or a role that is open to leveling or start up or any other combos.