Live data from Hacker News

Ask HN: Web Developer looking to move to Systems Programming seeking advice

news.ycombinator.com

1–10 of 14 posts

Ask HN: Web Developer looking to move to Systems Programming seeking advice

#1
I've been working as a PHP developer for almost 7 years now. I started doing small PHP projects while still studying for my CS degree and it sort of progressed from there. This career path worked more or less fine for me as it always provided decent income, jobs were fairly easy to find and at times projects were fairly interesting too. However at a personal level I was never really interested in the subject and on my free time I always found myself hacking on something else.

At this point I feel that to continue working as a programmer I need to change my field. Programming can be very interesting and rewarding experience to both programmer and surrounding community, but it can also turn the other way around if you lose your motivation.

My real passion lies in systems programming I believe as I was always interested in operating systems, programming languages, algorithms and related stuff.

I would be very interested to hear if anyone did a similar transition to systems programming and how did it go. How long did it take for you to learn everything? Did you take a more general approach or did you target a very specific area? How long did it take to get your first job as a systems programmer and what it was?

Any kind of related experiences would be very helpful to me when making this decision. Thank you.

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#2
I am not a systems programmer myself, but if you are looking for resources, I can recommend the book "Computer Systems: A Programmer's Perspective". We used this textbook in some systems classes I took in school, and I thought it was pretty helpful and informative.

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#3
post #2

I am not a systems programmer myself, but if you are looking for resources, I can recommend the book "Computer Systems: A Programmer's Perspective". We used this textbook in some systems classes I took in school, and I thought it was pretty helpful and informative.

Thank you. I will definitely have a look at that book.

This is what I have on my list so far:

The C Programming Language

C Interfaces and Implementations: Techniques for Creating Reusable Software

Expert C Programming

Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms

Structure and Interpretation of Computer Programs

Introduction to Algorithms

Compilers: Principles, Techniques, and Tools

Hacker's Delight

Cracking the Coding Interview: 150 Programming Questions and Solutions

Advanced Programming in the UNIX Environment

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#5
You need to understand that systems programming is very different from PHP. You have to worry about many more conditions. (What if another thread calls function X, just before someone calls this function? I need a mutex to protect this data structure. But what are the performance effects of that? Do I need to think about how multiple cores affects this? Etcetera...)

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#6

You need to understand that systems programming is very different from PHP. You have to worry about many more conditions. (What if another thread calls function X, just before someone calls this function? I need a mutex to protect this data structure. But what are the performance effects of that? Do I need to think about how multiple cores affects this? Etcetera...)

[deleted]

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#7

You need to understand that systems programming is very different from PHP. You have to worry about many more conditions. (What if another thread calls function X, just before someone calls this function? I need a mutex to protect this data structure. But what are the performance effects of that? Do I need to think about how multiple cores affects this? Etcetera...)

Yes, I'm aware of what is involved in systems programming and what kind of problems I might end up solving. However my knowledge is mostly theoretical or based on spare time hacking or university classes practice. The point you are raising is valid though. One should be aware where he is going to stick his nose :)

Based on your previous post I see that you are an embedded developer. Would you mind to shortly tell how you started and what you found most difficult or most important in the beginning or even later in your career?

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#8
post #7

You need to understand that systems programming is very different from PHP. You have to worry about many more conditions. (What if another thread calls function X, just before someone calls this function? I need a mutex to protect this data structure. But what are the performance effects of that? Do I need to think about how multiple cores affects this? Etcetera...)

Yes, I'm aware of what is involved in systems programming and what kind of problems I might end up solving. However my knowledge is mostly theoretical or based on spare time hacking or university classes practice. The point you are raising is valid though. One should be aware where he is going to stick his nose :) Based on your previous post I see that you are an embedded developer. Would you mind to shortly tell how…

How I started: I got hired right out of college (with a math and physics degree, not CS) for an embedded position. From that start, I've been in embedded for almost all of my career.

What I've found to be important/different: Debugging can be really hard. You can't always run a debugger; you can't always print something out. Sometimes bugs can come from interaction between different threads, which is something that you don't run into in many kinds of programming. You have to watch for multiple threads accessing the same data, and you have to figure out what you need to do if it happens. You need to remember that any thread can stop running between any two assembly instructions - a C statement is not atomic.

I've never done system programming, but in ignorance I think it's harder than what I do. It's got all of my problems, plus a bunch more...

Re: Ask HN: Web Developer looking to move to Systems Programming seeking advice

#10

Advanced Programming in the UNIX Environment is a very detailed book which will refresh a lot of concepts. Needless to say C skills need to be polished (K&R). Or you can go the hard way and start contributing to the testing of Linux kernel.

Joining an open source project will probably be necessary for me in order to get decent level of hands on experience. There is also a possibility of getting some mentoring which would be really good for me.

What do you think about MINIX as a learning tool? It seems to look as a good place to start but I don't know much details about it's internal design except that it's using a microkernel which is different from most operating systems in use today. So I'm not sure about the practicality of spending time on MINIX. My other open source project choices would probably be Linux or one of the BSDs.

Post reply on HN