Hacker News new | past | comments | ask | show | jobs | submit login

> without an understanding of math and some amount of formal computer science are necessary evils rather than assets

I mean it's not like you need to be a prodigy to pick up enough math and computer science concepts without a formal education.

I'm a high school graduate and I've made it far enough to be an L6 at a well known tech company. I'm not prodigy, I just I spent large amounts of time coding over the years.

And I certainly don't consider what I do low-level, low-thought work, even though I can't invert a binary tree without looking it up.

If someone who's from a more traditional background grills me on CS topics they'll probably find me quite lacking. But the reality is, prodigy or not, if you're curious enough to teach yourself programming, you're not going to suddenly fall short trying to learn "enough" of the math and formal CS stuff.

Enough to me is not being able to whiteboard implementations and manipulations random data structures, but rather knowing which ones exist and when to use them... then hopping on Google to find the details.

And I mean, someone has to write the search engine processing more data than I can fathom, and maybe their work would be prohibitively difficult if that wasn't all literally on their fingertips, but there's infinitely more people doing complex system design that can afford the few seconds of context switching.

-

I find if anything people from a formal background overestimate the importance of math and CS sometimes.

It's been so long I forgot the details, but I remember as a fresh dev in my first "real" job a co-worker very proud that their refactor of a function in our hot path was working 30% faster than before.

I took one look and saw something like

    void blahBlah(blahblah){ //made this faster
       loadABunchDataIntoStringsUsingPoorlySizedBuffers() 
       processABunchOfData() //by making this very fast
    }
Use a simple memory mapped file instead of "loadABunchDataIntoStringsUsingPoorlySizedBuffers" broke his benchmark. Now the "blahBlah" function took "no" time.

Stuff like that is everywhere in programming. Times where people choose the most formally correct data structure instead of a simple cache friendly array. Or destroying performance with GC unfriendly, but highly "type sound" code.

At the end of the day, to me nothing can replace time spent coding. And in my experience, people who can make it over the initial hump of difficulty in coding are people who end up spending a lot of time doing it (of course I might be a bit biased there)




I was a programmer many years before I went to engineering school. The problem is, you don't know what you don't know until you break that barrier.


> The problem is, you don't know what you don't know until you break that barrier.

How does that follow?

There's two barriers. Knowing enough to look up the details, and knowing enough to vomit it on a whiteboard.

Now the latter is much more impressive, but the improvement in useful output for even the highest tiers of devs is marginal in my experience.

After all, what the average CS grade knows after 4 years isn't theoretical physics or PhD level CS something. It's not unknowns unknowns all the way down that you need years of study to get to the surface of what is unknown.


The same can be said about the "making it far enough to be an L6 at a well known tech company" barrier. Actually, I believe this is a better qualification in terms of capacity, since it's more selective.




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

Search: