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

Yes, someone in another thread is discussing about skill sets to be learned to engineer software, but I think academy already does a decent job.

To engineer a good architecture you need time to thoroughly think and explore alternatives. Coupled with deep field knowledge and an even deeper know how, gained by means of experience. And to build the best is impossible by definition: you can only hope to build a better one.

I didn't know what a fast programmer was until I had to work with one. The king of copy and paste. All his neurons on his fingertips. He showed to me that thinking with their hands wasn't limited to manual workers. Luckily for me, his awesome speed allowed me to become his "boss" a couple of months after being hired. And I'm not being sarcastic here. The manager saw he was better left typing and me better left thinking.



That's why, perhaps, in pre-Java era, in good schools they taught "big ideas in CS" instead of Java syntax and how to OO everything.

Algorithms, Data Structures and reasoning behind them, Scheme courses of CS basics (based on SICP) and Operating Systems, so a student could understand the principles and design decisions.

Then such student could code in any language, because syntax and common idioms are much less important than appropriate data structures and processes. Then, perhaps, they will use a modern file-system as a database (like this very site back-end does) instead of bullshitting each other about what re-implementation of optimized in-kernel routines in Java is more popular, etc.

I know syntax of about dozen languages, but I am inferior programmer due to lack of appropriate theoretical background. I could spent days trying to figure out, should a request be a closure or an assoc or this fancy but costly "persistent-map", and these nuances like aliasing and locality in Clojure and CL.

Of course, one could always Ctrl-C/Ctrl-V from millions of online tutorials and "get shit done", but I cannot write anything without understanding why this instead of that, not because they say so in some narcissistic, over-confident blog-post. Thank god programming is my hobby, not my job.

So, it is not about syntax or how pointers were arranged (in structures and ADTs or in classes and objects) it is about whats and whys instead of hows. Coding is easy. Programming is difficult.


> I know syntax of about dozen languages, but I am inferior programmer due to lack of appropriate theoretical background. I could spent days trying to figure out, should a request be a closure or an assoc or this fancy but costly "persistent-map", and these nuances like aliasing and locality in Clojure and CL.

I have a deep understanding of various areas of CS and maths and I never resort to "Ctrl-C/Ctrl-V" to get things I don't understand done. I rather spend enough time to understand them. Every. Single. Time. Ah, and I didn't attend a university almost at all.

You could do the same, you know? If I could learn all of this, without any help from friends or from lecturers or from senior programmers (until very late in my learning), basically with books alone (from a library - that was before the Internet!), then you could have done this easily. But you didn't and now you're whining and shifting the blame and making others responsible for your personal failure to learn.

Really, stop that and start learning for yourself, it's not too late!




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

Search: