Live data from Hacker News

Ask HN: As a senior engineer content with programming chops, what to learn next?

news.ycombinator.com

31–40 of 44 posts

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#31

Earlier quoted context omitted.

I would go further and say every time I try to learn a new language, I discover multiple things that I believed to be absolute truths are, in fact, actually lies. I am a Senior as well and I personally am never happy with my programming ability - until you're Carmack (or insert one of your favourite programmers), there's something to learn. I predominantly have written TypeScript over the last several years and Rust…

Yeah and even after Rust there's still a whole world of even more advanced/difficult techniques like pure functional programming, formal verification, proof assistants... and even totally different paradigms like HDLs. The idea that once you've done Python you've done them all is hilarious. I don't know how someone could be programming for 25 years and not realise that!

Sorry I did not word my question properly regarding my experience. I clarified in a later comment. I have worked on multiple languages like C#, Java, Clojure and have deployed code to production in all of them. Python is just my language of choice to reach for to solve a problem. I have no misgivings that it could be used for all problems.

I have also familiarized myself with formal verification and proof assistants. They are in the class of "weekend projects to get myself familiar with them but I dont see myself putting them into practice right away". I do love functional programming and most of the Python code I write has a functional style, since I have experienced immense benefits with that.

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#32

Nothing. Don't learn anything. You'll waste time learning something you'll probably never use or forget what you learnt if you ever need to use it. You are a software developer; you can learn anything when you need to. Save it for then. For now, enjoy your time. Since you would probably will not do that, my second best suggestion is to learn a language which can do what python can't or not in a straightforward way...…

Hmm, is this a dig on Python? If so, sorry to hear that. My experience has been the complete opposite. Python in inherently intuitive to my way of thinking. And I have seen lots of Python applications where deployment, dependency management has not been a major problem (at least not worse than other languages). I see elegance in a lot of the Python code I read and its performance is good enough for the applications its used in (otherwise, it wouldn't be a good candidate).

Just mentioning that for every one of you, there probably is one of me :)

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#33

If you like databases, you can start exploring the internals and write one! There is no going back once you dig deep into the storage internals, KV stores, and distributed systems. plug: I made an educational project which can help you write a database in python, from scratch - https://github.com/avinassh/py-caskdb

This looks very interesting. Thanks!

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#34

You haven't even used a statically typed language yet. Saying you will be able to learn Rust in a weekend is ridiculous. There will be so many new concepts for you.

I would go further and say every time I try to learn a new language, I discover multiple things that I believed to be absolute truths are, in fact, actually lies. I am a Senior as well and I personally am never happy with my programming ability - until you're Carmack (or insert one of your favourite programmers), there's something to learn. I predominantly have written TypeScript over the last several years and Rust…

Just wanted to point out that "content with programming ability" to me is not the same as "I am done learning". I just feel that the competency I have in turning a problem into code is good enough for the time being, and it would serve me better to increase my skills in other areas for now. Software engineering after all, is much more than programming.

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#35
post #15

Assembler. The closer you get to the metal, the more interesting it is. Be the bits! Here's a good start: https://www.nand2tetris.org

Thanks for this suggestion, I have seen this before and its not really my area of interest. I do want to read Petzold's "Code" though. I hear a second edition is out!

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#36

Learn how networks work: http://intronetworks.cs.luc.edu/ Most SWEs I've met don't understand networks well despite writing software that interacts with them. Learn basic statistics. Apply it to performance testing, system modeling. Build off your knowledge of logic programming -- learn a formal verification language like SMTLIBv2 or TLA+. Apply it to find bugs in code, or to clearly write out algorithm or system des…

> Learn how to convince the CPU, memory, disk, and network to give you all the performance they're capable of.

How and where do you learn this? Can you link some resources?

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#37
Marketing. Think how often you read developers who scoff at marketing, right up to the point they try and launch a product and it struggles to gain traction. Marketing seems sleazy, cheap or simple, when in fact it's none of those things. Value creation is in huge part marketing, because if your users either don't know or don't care about the product, it isn't creating value...

Very much like programming, the only way to learn marketing is by doing it. You can read and Youtube your whole life, but it's only when you decide you're going to put it in practice that you discover that what marketing actually demands is courage. It takes courage to put yourself and your product out there, and it doesn't even matter what that product is. It could be a newsletter, it could be a software project, it could be a side hustle, it could be your twitter account.

You can get started by listening to some of Seth Godin and Jay Abraham, at least to see marketing for what it really is.

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#38

Learn how networks work: http://intronetworks.cs.luc.edu/ Most SWEs I've met don't understand networks well despite writing software that interacts with them. Learn basic statistics. Apply it to performance testing, system modeling. Build off your knowledge of logic programming -- learn a formal verification language like SMTLIBv2 or TLA+. Apply it to find bugs in code, or to clearly write out algorithm or system des…

> Learn how to convince the CPU, memory, disk, and network to give you all the performance they're capable of. How and where do you learn this? Can you link some resources?

Unfortunately I don't have any -- I'm self-taught on the job. But as an example -- pick some project that involves high-bandwidth or low-latency I/O to multiple devices. Say, line-rate network packet capture to disk. Hold yourself to the standard of not dropping any packet. Try first 100 Mbps capture, then 1 Gbps, then 10 Gbps. Try first capture to SSD, then to HDD (higher latency). Progressively restrain the number of CPU cores and amount of memory you allow yourself to use -- try to get down to 2 or even 1 core, and under a GiB of memory. Add a requirement to minimize the latency to disk -- 1 second, 100 ms, 10 ms, 1 ms. Spec the problem to push disk and/or memory bandwidth requirements to their limits for your system -- if your code can't perform at the level the hardware should allow it to -- figure out why and address it.

You'll be forced to learn how to multiplex I/O streams. How to minimize memory copies. How to efficiently allocate and reuse memory. How to minimize system call overhead. What the more esoteric I/O system calls are. How to minimize pipeline stalls, cache and TLB misses. Which tools to use to measure all this stuff. If you're not finding these techniques necessary -- make the problem harder by raising the specs, limiting the resources more, or making the problem more involved (say -- build an flow index online for efficient seeking within the recorded data).

(This was basically my first major software project that forced me to learn performance optimization up and down the stack.)

Re: Ask HN: As a senior engineer content with programming chops, what to learn next?

#39

Earlier quoted context omitted.

> Learn how to convince the CPU, memory, disk, and network to give you all the performance they're capable of. How and where do you learn this? Can you link some resources?

Unfortunately I don't have any -- I'm self-taught on the job. But as an example -- pick some project that involves high-bandwidth or low-latency I/O to multiple devices. Say, line-rate network packet capture to disk. Hold yourself to the standard of not dropping any packet. Try first 100 Mbps capture, then 1 Gbps, then 10 Gbps. Try first capture to SSD, then to HDD (higher latency). Progressively restrain the number…

[deleted]
Post reply on HN