
Ask HN: Chances for mature newbie - Bumsonfire
I&#x27;ve been playing around with computers on and off for 30+ years, but now at the age of 45 I have discovered a love of assembly language (x86) and reverse engineering. 
So my question is how can I get a job taking my learning further, money is not a big deal for me,so willing to undertake very Junior level work,but I feel my age will be a big blocker.
======
fecak
The key for you will likely be getting in the door. The hurdle is not so much
your age (especially for Assembly) as it is your lack of experience. I don't
think you'll find the same level of ageism for Assembly jobs as you might for
other types of programming work.

You won't get in the door just applying to jobs and saying you've got 30 years
of being a hobbyist and love Assembly. You'll have to demonstrate something
you can do, and ideally it will be something interesting to the person
receiving your message/application. This becomes a marketing issue, and you
can market yourself as a junior programmer and career transition candidate
willing to take on junior work at junior prices for the chance to get in the
door.

You can usually disguise your age at least a bit by omission in resumes. A
resume isn't a full biography, so we don't need to list every single thing
(especially since you will likely have lots of irrelevant professional
experience). We can also delete things like graduation dates (if you attended
college) in order to avoid someone guessing your age.

I'm the same age as you - if you're priced correctly for your skill level,
your age might even be considered somewhat of an asset (maturity) in certain
companies and jobs, but the key for you is marketing whatever skills you do
have and leveraging those to get the skills you want (more programming).

------
jakecodes
I've had a few old guys on my teams in the past and they've been great.

You aren't old. They were 55+.

When I interview people, age does not concern me (45 wouldn't even make me
blink). It is only if I think that person will be an asset to my team. And if
they are, why should age bother me?

More important questions I ask myself is: Is this person going to be self
sufficient or are they going to need a lot of assistance?

Is this person a generally positive person who is willing to communicate with
others and me about any struggles they are having so we can fix it?

etc...

------
smoyer
Loving assembly language is a great trait for an embedded systems programmer.
It's also (in my opinion) almost mandatory if you want to be a good C/C++
programmer. Those languages are close enough to the metal that you often have
to know what's going on at the instruction level.

There are still tons of projects/products that use very small microcontrollers
or microprocessors. You're not going to run Linux and Java on an embedded
system that's got 8KB of EEPROM and 256 bytes of RAM.

Good luck!

~~~
i336_
I'm genuinely curious how popular µCs with 256 bytes of RAM actually are - the
marketing for stuff like the Arduino and the whole IoT thing, while an
annoying mosquito, is very effective at suggesting that the <1K scale is all
but forgotten.

How much of a deployed base - and perhaps more importantly, how much future
demand - is out there for this sort of thing? Would it be worth it for me (as
a random person on the Internet, not OP) to spend the next N years learning
these microcontrollers' instruction sets, errata and idiosyncrasies?

Like OP, I'm incredibly interested in assembly language, and "really tiny
microcontrollers!" is one of the instinctive responses I also gave in my own
answer, but I'm not sure how widespread demand for it is, so I was somewhat
more cautious.

~~~
sokoloff
These µCs are Harvard architecture (contrast Von Neumann of typical
computers), with the program being stored in ROM (typically Flash) and the RAM
being only for variables. The program size, therefore, is not confined to 256
bytes.

They are absolutely here to stay in consumer products. Whether the job market
will be good and constant over the next 25 years is something that I can't
say, but they're likely not going away, and to the extent they do, they'll
likely be replaced with something so similar that those skilled in the art
will still be able to adapt.

~~~
i336_
Ah, I see.

I wonder if compilation for Harvard architectures is any more or less
difficult than for Von Neumann. I'm guessing there are pros and cons with
both.

Thanks for mentioning that they're here for a good bit yet, I'll definitely
take a look at them.

------
jonwinstanley
Why not document one of the projects you have been working on, maybe a medium
post, a Youtube video and link to them here. Make sure you mention all the
skills/techniques required.

Next time someone is looking for those skills, hopefully your name will show
up in their Googles?

~~~
Bumsonfire
Never even thought of that, hence my reason for asking here. Thank you for
replying.

~~~
tacon
Since you are looking to connect with new people and new work, you might want
to include your contact info in your public HN profile.

You can crank the Medium post or Youtube video strategy to the max by
targeting the people you want to meet. First make a list of all the most
prominent and connected people in your field of interest, say "reverse
engineering". FollowerWonk is one place to start that list, e.g.:

[https://moz.com/followerwonk/bio/?q=reverse%20engineering&q_...](https://moz.com/followerwonk/bio/?q=reverse%20engineering&q_type=all&frmin=0&frmax=0&flmin=0&flmax=0&stctmin=0&stctmax=0)

Now start a blog, or maybe a Youtube channel, where you post about reverse
engineering topics. Approach a target for an interview about reverse
engineering today, and how they and their company are approaching the issues,
because you are passionate to learn everything about reverse engineering. Make
the post all about them, with their picture, their bio, etc. Almost no one
turns down such an offer. Your interview post becomes a line item on their
resume, and they share the link to all their friends. Do ten of these. Ten
leaders in reverse engineering now know your name and return your phone calls.
Let it be known you are open to new opportunities, and they may direct you to
their friends who are hiring, etc., etc. You end up with some of the top
search results for current topics and issues in reverse engineering.

~~~
patrickgordon
Not OP, but, interesting post, thanks for writing it out.

Have you used these tactics yourself?

~~~
tacon
Not yet, but the basic idea is laid out in the ebook by Robert Graham about
cold calling for customer development. Here is his blog post about it:

[http://blog.asmartbear.com/cold-
calling.html](http://blog.asmartbear.com/cold-calling.html)

A careful listening to Mixergy interviews shows two or three of his guests
have used the same strategy to get started. It is a very general technique,
but it also has a significant level of effort, so you can't really do it in
multiple niches at once. Thus, any one person won't have valid statistics
about it.

Someone should really write an entire book about this general approach. I
think it would still work even if your targets knew what your goal was.

------
drblast
There is a demand for reverse engineers in the security field. If you know how
to use IDA Pro and you're confident with reverse engineering malware, which
most people find intensely boring and tedious, you can probably find a job
doing that. There are also excellent RE classes at Recon
([https://reconcx](https://reconcx)) although that requires an investment of
time and money.

A word of caution... doing RE in a mediocre way is fairly easy. Doing it well
requires knowing, well, a lot of shit about a lot of shit. Encryption,
compilers, information theory, high level compiled languages, network
protocols, etc. are all required knowledge to not get stuck at some point
while doing that job. And sooner or later you'll find you'll be writing your
own RE tools out of necessity.

This might sound cynical, but the good news for job seekers is that there is
often a higher demand in the security industry for a mediocre reverse engineer
who is willing to make a lot of guesses, abandon problems that are too
difficult, and move on to the next thing quickly. If you're willing to learn
in the job it's almost an ideal place to start.

------
PeterWhittaker
There are a couple of paths that might work.

One would be to start working on an OSS project that is well supported locally
and to attend relevant meetups. Get known in the community, get credibility,
and, after a while, let people know you are looking for work.

Another would be to start in testing - if you have the mindset for it. I know
quite a few people with non-technical backgrounds who started in testing and
moved onto careers as developers, integrators, and more, all with non-
technical backgrounds. Testing is more about mindset, curiosity, organization,
and detail, than about specific technical skills - or at least some types of
testing are.

FWIW, YMMV.

~~~
Bumsonfire
Interesting ideas, definitely worth considering, thank you.

------
i336_
Assembly language is sadly not widely commercialized. I'm sure there are lots
of vacancies out there, but the positions are likely incredibly specific and
require a lot of specialized knowledge about a particular field.

Both assembly language and reverse engineering are vast, ambiguous fields of
knowledge, so it's difficult to provide an on-point answer. A couple things
come to mind though:

\- Quite a lot of demoscene-related sourcecode has been released over the past
few years (covering many individual productions along with supporting tools),
and quite a lot of it is in assembly language. Considering that you've been
tinkering for 30+ years, DOS/similar-era stuff may be of particular interest
to play with or explore. This would best be considered akin to soldering
practice, to use an electronics analogy - DOS-specific knowledge (including eg
low-level VGA or SoundBlaster/GUS control) is not likely to be helpful
commercially. That said. old technology is similar to learning a language like
Latin, and provides the advantage of neatly sidestepping the general
social/human confusion concentrated within the current focuses of
technological development.

\- Many people are likely to generally recommend microcontroller development,
but I understand chips with eg ≈256 bytes of RAM or ROM (where hand-assembling
code would be useful) are somewhat rare nowadays. This may be interesting to
explore though.

\- Finally, considering that you really like reverse engineering, you could
make yourself available for hire for medium/long-term contract work reversing
major applications or systems. Depending on the system in question this may be
a lot of fun or incredibly tedious; reverse engineering is generally
nontrivial work, as on the one hand there's the occasional tedium of picking
IDA up when it doesn't realize it's fallen down, and there's also the general
strain of ensuring the technical specifications you produce are complete, bug-
free, and provide 100% coverage (or, in the case of self-modifying code,
"100.∞% coverage").

As an aside, I think your age is actually a big asset - I don't think enough
emphasis is generally put on the fact that age and maturity means an applicant
already has a lot of "life" things taken care of. Obviously domain-relevant
skill(s) remain key, but it's possible an employer may be willing to provide
additional education to someone who's been around the block a bit. Case-by-
case-specific though.

This forum doesn't provide a way to edit posts and comments after an hour, but
you can always update it via a top-level reply.

~~~
Bumsonfire
Thank you for taking the time to provide such a thoughtful answer. I was
thinking of starting on messing with hardware, you've given me thoughts of a
starting point.

~~~
i336_
Great to hear! :D

Like the other commentators here I'm also curious what you've been working on.
I'm very fascinated with assembly language and machine code myself and
interested to get a head start with that too.

~~~
Bumsonfire
I've been taking some firmware files apart, specifically bios files, just to
try and understand better how computers work. I've also been messing about
with shellcode, I find that fascinating.

~~~
i336_
Wow, that's awesome.

You've probably heard of Coreboot, an open source BIOS that's been ported to a
handful of systems (230 total different configurations, along with a QEMU
target for playing with). It's also the foundation of all Chromebooks. This is
very short but may be fascinating reading:
[https://www.coreboot.org/Developer_Manual](https://www.coreboot.org/Developer_Manual)

I'm not quite at the shellcode-comprehending stage yet, although I realize
it's incredibly simple. Agh - I have a basic working knowledge of C, but
nonexistent understanding of low-level hardware at this point :)

[https://www.nayuki.io/page/a-fundamental-introduction-
to-x86...](https://www.nayuki.io/page/a-fundamental-introduction-
to-x86-assembly-programming) has been on my to-follow-up-on list for a while,
along with [http://beginners.re/](http://beginners.re/). (Both found via HN)

------
ericssmith
I was delighted to see most of the answers here encourage you to continue from
where you are in your interests. Only one comment mentioned abandoning your
love and going to where everyone else is. Bad idea. You will find that if you
keep pulling on the threads that interest you, worlds will continue to open
up. And there is definitely work in those worlds.

Age is definitely not a factor. The speed with which you are able to learn
definitely is. Good luck. I think this is awesome.

------
gaius
Get some demos up on Pouet [http://www.pouet.net/](http://www.pouet.net/) no
finer portfolio in the ASM community than that!

------
onetwotree
I think that ageism might be less of a problem than you think. While it
certainly exists at companies that have a certain culture, I've generally
worked for companies that explicitly reject "Valley Culture" and we often try
to hire older engineers. The difference in experience, work ethic, and overall
attitude is huge and positive. I'm the second youngest engineer at my current
(small) company at 31, and it's great.

Your main barrier is experience, but if you're willing to go for a junior
level position, that shouldn't be an issue.

So generally, look for companies with a more mature culture - avoid buzzwords
like "rockstar" and "ninja" (secretly, everyone should do this), steer clear
of "unicorns", and read the bios on a companies website, and you should be
able to find a good fit.

------
Bumsonfire
Sorry to sound like an old record, but I truly feel humbled. I have never in
my life received the encouragement I have received from total strangers here
today. The best way I can repay I feel is to make a success of my new to be
career and give back just as much.

~~~
boniface316
I will be in your boat soon after my military retirement. When I need to look
up for someone, I am expecting it to be you my friend!

------
kevindeasis
Read this:

[https://medium.freecodecamp.com/being-a-developer-
after-40-3...](https://medium.freecodecamp.com/being-a-developer-
after-40-3c5dd112210c#.z5dsyafx1)

------
ebbv
For me your age wouldn't be a factor but your lack of experience is.
Especially if your goal here is professional Assembly development, those jobs
don't usually go to someone with no experience.

If you really want to get into programming, I'd go for something higher level
like PHP, Ruby, JavaScript, Python, etc. Then create some stuff in the
language(s) you've chosen. This will give you a shot at getting a junior level
job in that language.

When I hire someone to a junior level position, I'm still not going to hire
someone with no experience. It's going to be someone with less experience but
still some. I don't have the time to teach someone starting from zero. You
need to go from zero to a low level of experience on your own.

~~~
gizmo
Somebody who expresses a love for assembly programming won't necessary love
php programming as much. Your advice may be practical, but there's more to
life than practicality.

As others pointed out: 45 is young and you can do low level programming for as
long as you've got your health. At 45 you still have half your career ahead of
you.

It's not so hard to demonstrate assembly knowledge by putting some projects on
github. Low level programmers are in high demand, so it's just a matter of
interviewing until you get a yes.

------
maxxxxx
I don't think you'll have a chance at a lot of Silicon Valley companies but
there are plenty of companies who may give you a chance. Especially since you
seem to be willing to do junior work and take a junior salary.

------
tomelders
I'll tell you what I tell all my friends and acquaintances when they ask me
how to get "into" programming.

"First find a problem to solve, then we'll talk."

I know it's glib, but I genuinely believe that learning to program or learning
to be an engineer is, in and of itself, pointless. And every time I've tried
to teach people the fundamentals of programming, they get bored, move on, and
never come back. It could be that I'm a bad teacher - and I am - but I think
there's something else at play.

I think it's that the reality of being a programmer is very different to what
people think it is. For example, people think you can lean to program to a
point were you "know" how to program. As though at any point a programmer can
accomplish any task by sitting at a computer and bashing the keys in just the
right way to solve any problem as if the solution was pre-ordained, just
hanging in the aether waiting for you to pluck it into existence.

In reality, it's a never ending journey of learning. You can never stop
learning. There will never be a day when you can stop educating yourself and
proclaim to the world that you are now, and will forever be, a programmer. And
I think when that dawns on people, they lose interest.

Also, programming is just the tool. The job is something very different. I
could teach you how to swing a hammer in no time at all, but you'll be no
closer to being a sculptor or a joiner or a stone mason. A web developer can't
write a high frequency trading algorithm without first learning a lot about a
lot of other subjects.

People often want to learn to program for all the wrong reasons. But if your
desire is to solve a problem? Well that's a different story.

If you can find a problem AND you have a desire to solve it then you've taken
your first step towards becoming a programmer... or a doctor... or a farmer...
or anything else. And if you can also think of a good solution, that's your
second step. What follows is a few million more thankless, frustrating steps.
If your problem is best solved with the help of a computer, you will become a
programmer.

So I would say this to you. You're probably going to have a hard time breaking
into assembly as a career at your age for all kinds of reasons. Some valid,
some not.

But if you can use what you know to solve a problem, and it's a problem people
want someone to solve, or better yet if it's a problem people don't even
realise they have! If you can do that, then all the challenges you would
otherwise face in your quest to become a professional assembly programmer,
they all disappear. You won't need a job. The people who have all the jobs to
give, they'll need you.

~~~
Jugurtha
This is primo advice. I'm sort of in OP's position for I can't find work and
don't have experience _because_ I wasn't smart enough to find problems to
solve.

I've had Python's doc and interpreter for years, but it's not until I had a
problem and I wanted to solve (mobile credit transfer for subscribers on
different networks) that I started to actually do Python.

I haven't solved the problem because I hit a roadblock back then (a
technicality I missed that forbade a certain tier of SIM cards to do what I
_assumed_ be possible), but I've learned more during that tiny silly project
than I've learned in years.

You make an excellent point about using a hammer vs. being a stone mason. It's
not enough to have discrete skills, one also needs to have the _glue_ that
binds those skills to make a coherent whole. i.e: programming, abstracting,
managing time, breaking down a problem to manageable bits, tracking an issue,
testing for different cases, saving knowledge and things you learn, etc.

This glue is very important and I still don't have enough of it. For hardware,
it's slightly different but there's a lot of overlap. I started a small
project to build an interface to allow some cars with head-units with a
certain feature (like the ones the Tesla has) to work with something else. And
just putting it down in writing helps, even if it's just because it displays
the date I wrote it and reminds me I should get back to it.

Everyone who asks me about this kind of stuff, I just tell them to find stuff
to do and build their toolbox early on so they don't make the same mistake
I've made.

------
saynsedit
Be more confident and you'll get any job you want. No one here on HN knows the
future and you know yourself better than anyone does.

------
Bumsonfire
So many great answers with encouraging practical advice, it's heartening.
Maybe I'll be as much help to someone someday.

