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

> What should I learn to stay relevant in the next 5 – 10 years?

Mathematics and algorithms not tied to any particular language. Avoid paying too much attention to the "next big thing", that's counterproductive.

The field of computer science is too fluid right now -- and for the foreseeable future -- to expect to be able to choose a language or environment that has any serious staying power.

For example, 10/20 years from now, everyone will have to learn how to write parallel algorithms to a degree not even imagined today, for lack of appropriate current hardware. That future is virtually certain, but there's no present way to even prepare for it.



> 10/20 years from now, everyone will have to learn how to write parallel algorithms to a degree not even imagined today

So you could learn about low-level code and compilers. Application of graph and set theories. Automated modeling.

As far as I know, there have been developments for more than 10 years that aim towards better parallelising compilers. I believe the current compilers can already use some SIMD instructions when they conclude that the working set is possible to split for parallel execution. (Without programmer hinting, that is!) As the problems become better understood, I expect this trend to continue. Right now it's done by some binary compilers. The next step will likely involve using the same logic in JIT compilers and hence in some language runtimes. After that? I have no idea. Maybe going way beyond map-reduce by applying the same logical solutions to bigger data sets and allowing for more delayed execution. Instead of doing map-reduce by hand, why not have a logical "warehouse compiler" which generates these jobs and their pipelines for you automatically?

My point is that there are fields with known hard problems. As technology and theories evolve, some or perhaps even many of these fields will find new applications outside their current (possibly narrow) scope. Finding interest in them, and tinkering with the problems will expand your own knowledge about the field - as well as the practical applications. From there, applying that knowledge in other fields should become a possibility.

If you're ever-curious, just focus on the fields you are already interested in. (You will discover new ones that overlap.) Find out what's still missing, and then... let there be hacking.


>> 10/20 years from now, everyone will have to learn how to write parallel algorithms to a degree not even imagined today

> So you could learn about low-level code and compilers.

No, you could learn mathematics and algorithms (which I already said). A least-squares curve-fitting regression method works the same in all languages. A Fast Fourier Transform works the same in all languages. Quicksort works the same in all languages. These examples have in common that they are all expressed in universal mathematical notation, and they all carry out the same basic algorithms in the same way, regardless of which language they're expressed in. But all of them would need to be modified to take parallelization into account and exploit it to its fullest.

> As far as I know, there have been developments for more than 10 years that aim towards better parallelising compilers.

That's true, but it's also true that the real challenges of parallelizing algorithms have yet to be addressed in any meaningful way, for lack of suitable hardware. One example is the problem posed by race conditions among independent processes, which is a big argument in favor of immutable variables and functional languages. But these issues have to be examined in light of specific hardware -- they can't be fully worked out in advance of the existence of the target hardware.


Agree.




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

Search: