
Ask HN: How do I get back into systems programming after 7 years away? - siwtcher00
At 40 I&#x27;m getting back into IC-style systems programming at the POSIX and Kernel level after being away for more than 7 years doing managerial stuff.  I&#x27;m finding it super hard to get back into it. I&#x27;ve forgotten most of the information that was on my fingertips such as the semantics of calls, the arguments, data structures etc (I spent the last day reminding myself of the pthreads API for example).  I&#x27;m also super rusty on operations such as bit-hacks to check for alignment etc.  I never even used to think about these sorts of things, they were muscle memory.  I&#x27;m wondering if I&#x27;ve permanently lost it.  I feel like I&#x27;m having to relearn everything from scratch. Any tips on how I can fix this&#x2F;move faster or am I just past it?
======
h4b4n3r0
You will still benefit from your past experience. Novices don't know what to
pursue, so they waste a lot of time. You're past that, you have the luxury of
just knowing which fluff to ignore.

As to how to get back into it: it's the same way as you get into any other
non-trivial field. Starts working on a small but concrete problem, and then
just build from there. That's the only way to accomplish anything non-trivial.

------
itamarst
I'm currently relearning how to write memory efficient code for first time in
... 12 years? It takes a little time, but it will all come back, don't worry.

If you have the time/resources, I hear Recurse Center is nice place to go take
some time to (re)learn some skills -
[https://www.recurse.com/](https://www.recurse.com/)

------
AnimalMuppet
You can't move faster. You're also not past it. You're going to have to
relearn it, but relearning it is faster than learning it the first time. It's
going to be frustrating at first, but it's going to come faster than you fear
it is.

------
somethingsimple
Sorry for not answering your question, but how do you get a job like that?

I miss that stuff so much. Did it from my late teens (yep, professionally) to
mid twenties, then moved to America and all my jobs here have been services
related in .NET or Java.

~~~
siwtcher00
Any one of the vendor companies churning out products (software or hardware)
will have a need for people who do systems. It's not glamorous or overly well
paying but its enjoyable

------
exikyut
Two things;

1\. For bit hacks, consult (but be careful not to drown in)
[https://graphics.stanford.edu/~seander/bithacks.html](https://graphics.stanford.edu/~seander/bithacks.html)
and [http://www.catonmat.net/blog/low-level-bit-hacks-you-
absolut...](http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-
must-know/)

2\. From the perspective of writer's block, your 7 years are an elongated
period of the kind of absolute/perfect refreshment we sometimes long for: you
literally cannot remember how to ride the bicycle. This is awesome! If you
make the effort to relearn some things "from scratch", as in putting the
effort in without trying to tickle your memories to kick in, you'll fold the
last 7 years of managerial knowledge and experience into your new mental
models. Everything has a flip side.

You've probably already had a look at the Arduino model. Dropping the Java IDE
(and API) in the nearest bin in favor of C and your own preferred text editor
is probably not the worst decision - but the clones are cheap, the bootloader
makes it that much harder to knock completely over, so there's that.

POSIX is, for what it's worth, slowly fading in popularity.
Enterprise/business still favors it a lot, and maybe you'll find somewhere
that will find it relevant for the next 10 years, but I have (at 27) some
hesitancy. Learning how Linux specifically does things may pay off more, for
better or worse; I don't consider Linux to be the best-of-the-best, but it's
what most people reach for the most nowadays. So learning other systems (the
BSDs, etc) may also be useful and come in handy for environments that prefer
alternatives.

If you're interested in the IC level, picking up Lua, Python and JavaScript
may come in handy.

The cheapness of >100MHz and >8MB RAM means that what was done with assembly
language years ago is often either

a) done on a 250MHz-500MHz chip running Linux with an interpreted language
doing the "not-so-heavy" parts of the lifting

b) done with Lua or a lightweight Python or JavaScript implementation

At the end of the day this does make maintenance viable for a wider range of
developers, and decrease iteration time on top of that.

For reference, this was written from the perspective of universality/relevance
to the widest range of opportunities. It's not exhaustive, just an overview.

------
captain_perl
Andrew Morton should be your role model. He left mgmt. to become a linux
kernel maintainer, and ended up at Google:

[https://en.wikipedia.org/wiki/Andrew_Morton_(computer_progra...](https://en.wikipedia.org/wiki/Andrew_Morton_\(computer_programmer\))

------
sbjs
I like the other advice here a lot and echo it, but I want to add one thing:
don't panic! If you panic, it will actually slow you down and reduce your
ability to concentrate. Just relax and accept that it may take time, and by
just relaxing and not worrying about it, you will go faster :)

------
quickthrower2
You might be slower now but you will get up to speed again, and those
management skills will also make you better. You'll be better than if you had
stayed doing the same thing the whole time.

------
dontJudge
You know what you forgot. Most others don't even know what they don't know.

If it's the kind of work you want to do, I'd say stick with it.

