Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You're treating CS like its composed of two different divides ("algorithm programming" and "API programming"), when in fact I think you're forgetting that algorithms can be used as the proper foundation for API programming. Handeling asynchronous calls in the proper manner (as per your example) is extremely similar to the consesus algorithm I learned in my distributed computing class. I doubt I'll explicitly be asked to implement a meldable priority queue like my professor assigned in algorithms class, but is the process of designing an algorithm and its implementation to conform to a specific requirement any different from "defining the problem before finding a function"?


I heard a while back that Facebook's mobile apps contain some ludicrously large number of classes when decompiled. And their interview process has the same philosophy you've outlined here, which I think provides the obvious explanation: since algorithms are so foundational, every developer who works on one of the apps is required to first write their own from-scratch reimplementations of all the data structures and core algorithms, and add them to the app.


The two sides can both fall under the the "problem solving" category. An expanded definition of algorithms could include designing APIs. But in my example I was referring to algorithms as rigorously mathematical problems with a proof based solution. Choosing if I need a synchronous or asynchronous file read function does not fall into this category.




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

Search: