
Ask HN: Reasons to stay in Software Engineering - _anon_
I did my B.Sc. from a fairly reputable university in Electric Engineering. Since I enjoyed programming during my studies I decided to go for it and accepted a full time job as developer ( mainly C &#x2F; C++ ).<p>I really do like Linux, OpenSource projects, blogs like e.g. hackernews etc. To me it felt like a passion: So much cool stuff I can read about, all accessible only with a computer and an internet connection.
However, I recently decided to do my masters but currently have some serious doubts whether I should focus on software or just completely change my track. The problems I have are:<p>* Everyone can be a &quot;software developer&quot;. Even thought I went through a really though and challenging university degree, which I finished distinctly above average, I have to go through whiteboard interviews. This won&#x27;t change with additional job experience. For some reason, companies do highly mistrust my skills and degree. 
Other jobs, equally well paid, do not require this.<p>* You have to know _a lot_. Programming languages, Tools, Operating Systems, Tests etc. On top of that, specific domain knowledge is required. Unfortunately, my brain forgets and if I work with different technologies, after 1 year I will not start at 0 but definitely neither at 100%.<p>* After all it&#x27;s &quot;just&quot; software. Besides yourself, nobody really cares how you solved the problem. Sure, it&#x27;s quite appealing to think through a complex system, tune it, develop it etc. but often it includes cumbersome work and decisions are made elsewhere.<p>So why should I stay in the software domain ?
======
a3n
Like EE, the exposure to various Fields is potentially huge. It was my
favorite thing about software, after software itself.

With my BSCS, I worked in aerospace, telecommunications, finance focused MoM
(we are dated by our buzzwords), manufacturing supply chains, indigent health
insurance, auto sales, dark pool trading, and medical device manufacturing.

I'm now out of software because I was a B player, and my freshness date
expired.

Now I'm a long distance semi truck driver, and I'm currently sitting in my
Kenworth T680 as I write this. It's the ultimate experience if you're a loner.

I miss the money, and the software writing itself, but I've never had a
meeting since I started truck driving. I don't miss the development practices
churn, or what I call work about work.

I do still automate some parts of my personal administrivia, mostly with
python and Bash.

~~~
fermienrico
Could you please shed some light on what made you pursue Truck driving after
being a software developer (besides the meetings of course)? Was it out of
choice or necessity?

~~~
a3n
Necessity. After leaving a software QA job without the next job in hand, I had
one interview in a year. Blame it on whatever you want, that was my reality.

As for truck driving ... "They were hiring."

EDIT: I do enjoy it, it's a big and beautiful country, and the work is pretty
easy.

------
cjhanks
Software interviewing has become necessarily (though unfortunately)
adversarial for two major reasons; a lot of people are lying on their resume,
a lot of engineers have inflated self-worth. If you're competent... don't
worry, you will break through. But keep in mind, experience in this trade has
a lot of value - and companies can only absorb so many people with 0
experience at any given moment in time.

That said, should you change your track from pure EE?

My personal experience in hiring has been that people with pure CS
bachelors/masters are usually a worse fit for highly technical roles than
those with another STEM degree. I think this is because it is harder to teach
yourself electrical engineering than entry level software development.

A _average_ candidate knows how to program. A _good_ candidate knows has deep
domain knowledge in something. A _great_ candidate has deep domain knowledge
and can turn that into code.

------
shados
The effort to reward ratio is as good as it gets. Professions with similar or
higher reward usually do so only with a lot of effort. Think litigation
lawyers or doctors that pull crazy amount of overtime. There's a lot of jobs
in the software field that will pull in 6 figures with great conditions and
reasonable effort. That's why everyone is fighting each other to enter the
field, for better or worse.

And while "everyone can be a software developer" right now because the demand
is so high (we're in a middle of a mini-dotcom-boom), it won't always be that
way. Expect to see saturation in the next few years. Yes, the self taught
person who works their butt off will be able to make it, but it won't be
common, or will be limited to entry level positions, which will become more
and more competitive. We're already seeing this happening a bit.

~~~
wetpaws
I've been hearing about saturation for about 15 years and honestly there are
no signs of it, not even close.

~~~
shagie
Some time back I wrote this (
[https://news.ycombinator.com/item?id=16148087](https://news.ycombinator.com/item?id=16148087)
)

I'd be willing to take either side of a debate for "is there a shortage of
people who, when given tight specifications for a piece of software (write a
function that takes X as input and provides Y as output) that enumerates all
of the corner conditions can produce a program in a language that they are
familiar with."

At the same time, the "person who can work with the business user on the
software, think about the architecture of it, identify the design necessary,
come up with the estimate that actually matches the time frame that it will be
done in with a reasonable error... and produce software that takes X as input
and provides Y as output while being aware of where the edge conditions may
exist and ask for clarification on how it should work"... I believe there is a
distinct lack of that portion of labor.

Furthermore, there is also a lack of people who are able to move from the
first labor pool to the second, and a lack of mentors who have the time and
ability to help that group move to the second.

I don't think its incredibly difficult to hire an entry level person as long
as one sets the bar low enough and has people within the origination who are
capable of providing the design. On the other hand, it is very difficult to
find the people who can give the necessary instruction to the entry level
people to allow them to become productive within their ability.

As an aside, I also find that within the entry level group... there are a
sizable portion that have the attitude of "I learned language X and that was
hard enough, I'm going to stick with it and not learn anything else." That X
can be found for all languages and none have the monopoly on it. However, it
is disconcerting for me to see those individuals... I started out as a C
programmer, and then Perl (full stack web - some JavaScript in there) and then
Java (enterprise), and then Java stand alone (swing application)... and while
I'm still a Java programmer, I can see other languages looming on the horizon.
Java will become the COBOL, and while there are still COBOL programmers out
there, its not something that one wants to get stuck in for another two or
three decades waiting for that last app server to be turned off before they
can retire.

\----

At the "anything past entry level", I still find that the number of qualified
applicants drops off substantially. For entry level, the applicant pool is
very, very large. I am now despairing that many of that pool don't have the
necessary skills to move beyond following someone else's design.

~~~
catdog
> and while I'm still a Java programmer, I can see other languages looming on
> the horizon. Java will become the COBOL, and while there are still COBOL
> programmers out there, its not something that one wants to get stuck in for
> another two or three decades waiting for that last app server to be turned
> off before they can retire.

I don't think this will neccessary be the case, Java is far from being in
maintenance mode. It looked like it would be some years ago but there now is a
lot modernization going on, both inside the language itself and inside the
ecosystem. Maybe it might loose its top position, who knows, but I don't see
it being practically dead anytime soon.

Sure enough there will definitly be those weired "COBOL like" enterprise
things building on top of all of the bad ideas from the early Java days which
stay forever and which nobody not already familiar with wants to touch for
good reason.

------
ankurdhama
In my experience: Software engineering will always be frustrating unless we
remove all the intermediate layers of people thats sits between software
engineers and the end-users/business. So if you can find such an organisation
then probably you will find reason to stay in software engineering. Finding
such organization would be really tricky.

~~~
superice
I work in such an organisation, albeit a rather small one (~ 60 people). It is
absolutely not easy: some people are not cut out for it and would prefer a
strict specification and focus on writing the best code, which clashes
sometimes with delivering quick-'n-dirty customer value. Other people are just
not that good in recognizing the patterns in businesses. I think our end
result is better than that of most companies, but at the same time it is much
more difficult to manage properly, so I can see why so few organisation take
such an integrated approach.

------
booleandilemma
I was recently speaking with a recruiter who advised me to “prep” for tech
interviews. “Read Cracking the Coding Interview”, he said. “Do some
programming problems so your skills are fresh”.

I’ve never prepped for a tech interview and I’m never going to read a stupid
book that’s supposed to coach me.

What am I prepping for? I’ve been a programmer 10+ years. I’ve had 10+ years
of “prep”. Is that “fresh” enough for you?

Tech interviews have gotten way, way out of hand.

~~~
rahimnathwani
tl;dr:

\- None of us know everything about every environment, even though we often
imagine we do

\- If you want a job, and spending a few hours prepping on data structures and
algorithms (either to improve your performance, or to verify your performance
is in fact perfect) will help your chances of success or your confidence, why
not do it?

You might want to consider:

\- Just because you don't want to follow the recruiter's advice, it doesn't
mean it's a 'stupid book'.

\- Although the recruiter mentioned 'programming problems', the problems in
the book may test a wider (or just different) range of skills than what you
(or I) consider 'programming'

\- The fact that you've 'never prepped for a tech interview' may have impacted
the set of environments in which you have worked, and it may be hard to know
whether you would enjoy working in those places where preparation is 'table
stakes' (i.e. necessary but not sufficient) for success.

\- Companies that interview in ways that require/expect some preparation might
be (intentionally or unintentionally) filtering out candidates who are not
willing to do what is required to achieve their aims. (If you're not willing
to spend a few hours with a book to increase your chances of landing a great
job for the next 2-3 years, then maybe you wouldn't be willing to learn
whatever JS library is required to succeed at your next project.)

You and I have not yet had the pleasure of meeting. But I know other people
with 10+ years of coding experience, and the majority would improve their
chances of succeeding at a given interview loop, by preparing using 'cracking
the coding interview'.

~~~
mmt
> would improve their chances of succeeding at a given interview loop, by
> preparing

It seems to me that you're presupposing that "success" equates to ending up
with an offer.

I posit that for some professionals, success is actually deciding (ideally
mutually) if employment is desirable/beneficial. The decision may well be that
it is not, but that would still be a success.

In this latter situation, preparation time might be better spent researching
the background of the team on would be joining, the company itself, and
technical and cultural environment, in order to ask better questions during
the interview, rather than studying so as to achieve what could be, arguably,
described as gaming the technical screening portion of the process.

------
ex_amazon_sde
A degree in EE has been a big plus in some teams I worked in, both in terms of
getting hired and day to day work.

Be aware of this: 99% of teams/companies out there are not solving
quantitative problem. They are throwing chunks of code from stackoverflow at
some app. They use every framework, tool, methodology of the year and look for
those names on your CV.

Yet, there's a niche where people do data driven development, understand and
use statics and mathematical models, and do real engineering like aiming to
solve a problem with the minimum amount of complexity and code.

Aim for that. There are teams like this in Google, Amazon, Facebook and other
smaller companies. You have to go and hunt for those. Stay away from coder
jobs.

------
jiveturkey
devs with 20 yrs experience have to go through whiteboard interviews. thinking
that this is an insult is wrongheaded.

hardware jobs pay less. many times, much less.

~~~
alecdibble
In my experience, a web job can net up to 4x salary vs a much more difficult
hardware engineering role. I know because I went form hardware to web and the
average compensation is much higher. Additionally, web jobs tend to be less
stressful.

~~~
fibers
But why?

~~~
alecdibble
I think, because of smartphones and smart gadgets, the demand for hardware and
gadgets has reduced dramatically. A lot of gadget ideas can be built as an
app. Plus, most businesses need websites or web apps now so there is much,
much more demand in for web engineering.

~~~
deweyusa
You are right about phones. I saw this a lot over the past years myself. I
started in hardware back in the 80's when it was all big components. Then,
with smartphones, it became clear that most little pocket gadgets of the 90's
were obsolete. However, doesn't someone still need to make the phones and
computers of tomorrow? Aren't those people going to be paid well since there
will be fewer of them? I'm not saying it's not true, it just seems odd that
software would be compensated so much better than hardware. Does anyone else
have any thoughts on this?

------
stevenwoo
Why are you getting a masters degree? Are you doing this while working full
time? What is your end goal for a masters degree?

The interview process for software developers is as you write, terribly broken
at a lot of companies from the point of view of most developers. I do not see
this changing in the foreseeable future and it does not matter what software
you have written in the past, you will get the _opportunity_ to prove yourself
all over again for the rest of your career.

One possible solution is to work for yourself. This solves some of your issues
and introduces a whole different set.

------
smilesnd
The interview process sucks, and it probably isn't much better for other
careers. I have friends that have master degrees unable to find jobs with no
logical way to explain it. Experience and having a good personality isn't a
golden ticket to a job.

You really don't need to know a lot. You choose to know a lot probably because
you either feel uncomfortable not knowing the whole picture, or because your
just curious. I have meet a ton of great developers that their knowledge base
was their language and libraries because that was all they needed to know to
be great. One guy I know that hires peoples ask one question in interviews to
gauge peoples knowledge "You click the address bar of a browser type in
www.google.com and push down enter on the keyboard what happens?". There are
some people that give 5 min answer and some that could spend a hour just
explaining the keyboard interaction with the operating system across 4
different operating systems for a hour. Find what domain you enjoy and just do
it.

Everything is "just" something, and their is no way around having to do
cumbersome work and making decisions to get some where doing anything.

You should stay in software because you want to. If you need others to
validate a reason for you then you probably should get out while you can. Keep
it as a hobby, but the second you start questioning something like this you
either need to try something new or go on a camping trip and drop some mind
altering drugs so you can find a answer. Maybe do some volunteer work in a
third world country.

------
au750
First of all, you don't have to stay in the software domain if you don't want
to. However, your concerns do not seems to be very specific to the software
domain:

* Everyone can be a "software developer". Everyone can also be a [whatever]. Why would you want to have a whole profession for yourself? If you don't have to prove yourself during the interview, you'll have to do it on the job. This is not going to be different somewhere else. In general, is better for you if your colleagues have to meet a minimum competency standard.

* You have to know _a lot_. There is a lot and there is a lot that changes. There is also a lot that stays the same and a lot that you can transfer from an area to another. Once you are a good at design, architecture, Test Driven Development, Pair-Programming etc. you are not going to forget everything just because you have to use a new programming language.

After all it's "just" software. How you solves the problem and write your code
internally is going to influence how good it works (bugs, performance) and how
fast you can change and improve it. People will care about that. Usually, you
are going to work in a team and your colleagues will also care about your
solutions.

------
dbattaglia
I stay because I love it. Coding is my passion, and I'm grateful every single
day to be paid well to do something I enjoy. I'm not entirely convinced that
other professions don't suffer from the same negative aspects either (bad
management, terrible deadlines, cargo cult-ing, some boring tasks). For me,
outside of maybe working in pro audio, I can't imagine doing anything else.

> "For some reason, companies do highly mistrust my skills and degree. Other
> jobs, equally well paid, do not require this."

I think if other jobs were able to directly test your technical skills in an
interview they probably would. I personally hate whiteboard style interviews
as well but, having sat on both sides of the interview process over the years,
I see a lot of value in seeing people's code. Personally my preference is a
take home coding test, but interactive coding is fine too if the problem isn't
too tricky. Probably this is because I am self taught and don't have a degree
to lean on that colors my opinion so take my words with a grain of salt I
guess.

------
inertial
> After all it's "just" software. Besides yourself, nobody really cares how
> you solved the problem.

More that once I've come across such crossroads, and the answer for me is:

(i) Find a niche in which you can excel, master your domain and then people
will "care".

OR

(ii) Don't worry about how others perceive you as long as you are having fun
along the journey. Find a way to stay happy.

------
ljm
To avoid repeating what has already been said, also try to look more at the
how and not just the what.

If you’ve got a talent for it, then look at your career in terms of how you
can increasingly fulfil that ‘how’.

That could be your own business or a company/vision/mission that really sings
to you.

You might get a few bad experiences along the way but they would only serve to
remind you of that ‘how’, and give you more resources to do it better.

For me that means blending my passion for proper agile, coaching, and
compassion, into my dev workflow such that I will always leave a team or
company better than I found it. There have been plenty of situations where I
failed to do that but it only empowered me to learn and adapt.

That’s not a yes/no answer, it’s just another perspective.

------
bitL
Start your own company; you are probably highly talented and our industry went
recently insane, trying to normalize to the lowest denominator. Build a
product with high quality and charge a lot of money for it to dysfunctional
companies that are in despair and incapable of their own excellence. Most of
them are like that these days. Never put all your eggs to a single basket
though. Invest all your income above your needs and some safety margin to both
stable investments like index funds and to high-risk investments like what
blockchain was recently. In ~10 years you should be way better off than almost
anyone you know (unless there is some wide-spread societal collapse that can't
be ruled out).

------
mathattack
Your second point contradicts your first. You don’t need credentials to do it
but you need to know a lot. People with good word of mouth reputations have
much better job security (perhaps spanning multiple firms) than most other
fields.

The key question is “Do you like the work?”

~~~
drvdevd
I think there’s also the mistake of assuming having “programming credentials”
means you are prepared for every “programming” job. Whereas, in reality, each
job is it’s own microcosm of domain knowledge (even if you’re using the same
languages/frameworks between jobs!)

So you have the opportunity to ask “Do you like the work?” under many
different circumstances.

------
tcrow
I find writing software to be a very tedious exercise a majority of the time,
punctuated by moments of intense joy and concentration. However I still do it
because I see it as an indispensable tool for turning my own ideas into
reality and its hard to put a price on that. If you're worried about
interviews and what not, pick a domain your intensely interested in and let
your passion glow during the interviews, I know from exp. that many good
employers would rather have a knowledgeable passionate hire than a dev who
knows "everything" but couldn't care less about the domain.

------
badpun
In my experience, whiteboard interviewing is uncommon here in Europe, with the
exception of American companies. Non-American companies either don't want you
touching a white board at all or give you only basic white board excercises,
mostly to see how you comunicate and if you're not a total fraud.

------
mabynogy
For the wage, being a manager is better. If you really like programming,
you'll find that boring.

My strategy is to build stuff with other folks, create a value and try to
transform that to real money (with a startup for example).

I think your real question is more around what you wanna do with your life.

------
meiraleal
> So why should I stay in the software domain ?

Because you are already heavily invested and is part of the current elite of
software engineers, probably. If you still like it, why leave it?

~~~
coldtea
> _Because you are already heavily invested_

[https://youarenotsosmart.com/2011/03/25/the-sunk-cost-
fallac...](https://youarenotsosmart.com/2011/03/25/the-sunk-cost-fallacy/)

------
scarface74
_Everyone can be a "software developer". Even thought I went through a really
though and challenging university degree, which I finished distinctly above
average, I have to go through whiteboard interviews. This won't change with
additional job experience. For some reason, companies do highly mistrust my
skills and degree. Other jobs, equally well paid, do not require this._

I don’t give any credence to the college someone graduated from when I’m
conducting job interviews. I have a computer science degree, but I’ve seen too
many people graduate with a computer science degree that cAn talk theory all
day long but couldn’t program their way out of wet paper bag. On the “smart
and get things done” quadrant, they were completely on the “smart” quadrant.

I have been a software developer for over 20 years, but unfortunately I spent
way too long at one company and became an “expert beginner”[1]. So I’ll just
talk about the last ten. For all intents and purposes, I may have gotten three
solid years of usable experience out of my first 12. I’ve had 5 jobs in the
last 10 years - my interview experience.

1\. A semi technical interview. No white boarding. I just described my
experience and thought process about delivering results. They were a startup
and liked my practical experience delivering code.

2\. I did a pair programming test where they had a project with failing unit
tests and I had to refactor the code to make the tests pass. I think they had
a written test with some practical questions and a coding part.

3\. By now, my years of experience and practical worthwhile knowledge had
finally gotten somewhat in sync. I was applying for senior level roles. They
asked technically questions, a whiteboard interview where they wanted me to
design a scalable, fault tolerant system and a normalized database system.
They quizzed me on my design decisions.

4\. A team lead position where the hiring manager asked me about my 90 day
plan to create a software development department and to come up with a
migration development plan to move them off of an old Access backed system.

5\. A white boarding discussion about the company’s current technical issues
with scalability, automation, fault tolerance and suggestions about how I
would tackle them.

I did have to do a whiteboard coding exercise that consisted of writing a
merge sort. I did it, they made an offer but after seeing the interview
process, I knew that was a company I would never work for at the position they
were interviewing for. They did make me an offer though.

 _You have to know _a lot_. Programming languages, Tools, Operating Systems,
Tests etc. On top of that, specific domain knowledge is required.
Unfortunately, my brain forgets and if I work with different technologies,
after 1 year I will not start at 0 but definitely neither at 100%._

I consider myself a full stack developer/architect from the web down to (cloud
hosted) net ops/Dev ops/development. I can go in with no infrastructure and
design a pretty good system at each level. Yes if I am not constantly working
on a part of the stack - especially the front end - I do have ramp up time to
get at a high level of efficiency. But people do it all of the time.

This is no different than any other high paying profession. You’re expected to
know a lot about your field or at least be able to ramp up fast.

 _After all it 's "just" software. Besides yourself, nobody really cares how
you solved the problem. Sure, it's quite appealing to think through a complex
system, tune it, develop it etc. but often it includes cumbersome work and
decisions are made elsewhere._

Most software development involves maintenance of other people’s code. People
very much care about how you implement something.

As far as being able to make your own decisions, the secret is working for a
small company. But only do that _after_ you gain some real world experience
and can learn from others.

------
RickJWagner
Simple. Money, money, money.

------
angersock
The money is so damn good.

~~~
Raed667
Is it? In France it is just "OK" at best. Guess depends on where you are.

~~~
sametmax
Either be a freelancer, or work for American companies remotely. I do both.

French companies pay freelancers not only more than employees, but they are
way more annoying with the later. They just give you a better status for some
unfair social reasons.

American companies will generally have more interesting projects and higher
budgets. They will pay you more than a French company, while it will still
feel that it's cheaper for them.

As a freelancer you can still pay for taxes, social security, etc. and yet
double what you would had made. Plus you get flexible hours and you can work
from home.

The downside is that you can't suck, be lazy, or sick for too long. You have
basically no safety net.

~~~
Raed667
I'm already in France for with a worker visa (CDI). Changing that to a
freelancer status (auto entrepreneur) is a huge administrative pain.

