3 ms·
Isn't this the same as saying that you shouldn't program in Haskell, Erlang, Lisp or Prolog without also being able to program in assembler? And isn't that the
by RiderOfGiraffes 17y ago
Isn't this the same as saying that you shouldn't program in Haskell, Erlang, Lisp or Prolog without also being able to program in assembler? And isn't that then the same as saying that you should be able to design circuits with NAND gates? And doesn't it go on to say that you should understand how diffusion processes are used to make integrated circuits?
Actually, I'm with you, but the question is: where do you stop, and why? Personally I've build a CPU from an FPGA, and before that I designed a CPU from NAND gates. Even so, I wouldn't insist that my applications programmers know how to do that. C is useful, assembler also, but I wouldn't insist on it, and even those who only know C++ or Python are still productive programmers.
- nopal 17y agoI think you raise a very good question. I hadn't explicitly considered it before, as I was writing from my feelings on what a Web developer should know. Let me try to define my cut off. It's not where the abstraction stops, because TCP/IP/SSL aren't part of the average Web framework (maybe some provide their own server, but I'm not aware of any), but it definitely includes everything the abstraction for framework does. Is it abstraction + 1 level? Maybe. I have a feeling different languages and areas have different cut-off points -- Web dev differs from Erlang dev. For the Web, I think the cut-off point is TCP/IP because it is so central to the way the whole thing works, but is not too technical to be hard for the average developer to understand. As far as SSL/TLS is concerned, I provide a specific example of when an understanding of SSL is needed. There are reasons go deeper (http://developer.yahoo.net/blog/archives/2009/10/a_engineers_gui.html http://developer.yahoo.net/blog/archives/2009/10/a_engineers... talks about Ethernet frames and payload sizes), but I think an understanding of TCP/IP and the encapsulation they implement will allow a knowledgeable Web developer to understand the technical details. I don't think there's any place to stop, necessarily, and I think these discussions are useful because they help to shape what we define as important knowledge. So, while I may not have a concrete answer to your question, I think we have a good starting point at which to draw the line.