top | item 17534845

Ask HN: Reasons to stay in Software Engineering

44 points| _anon_ | 7 years ago

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 / C++ ).

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:

* 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.

* 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%.

* 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.

So why should I stay in the software domain ?

54 comments

order
[+] a3n|7 years ago|reply
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|7 years ago|reply
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?
[+] pandler|7 years ago|reply
Now that you’re a truck driver, what are your thoughts on the future of that industry with regards to self driving trucks? E.g. is it something drivers are worried about in your experience?
[+] cjhanks|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
I've been hearing about saturation for about 15 years and honestly there are no signs of it, not even close.
[+] ankurdhama|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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.

[+] abledon|7 years ago|reply
After reading Cracking the Coding Interview... I was more than satisfied about getting a job as a "Software Developer" instead of "Software Engineer"... then going home after job, not thinking about job, big O in the shower etc... whats the point of life, if we don't have the time to investigate "this" thing we call living.
[+] drvdevd|7 years ago|reply
I’m in the same boat ... but at this point I try not to feel bitter about it. I feel that if a company gives me an interview like that I’ll just do it - 0 prep usually - and if it doesn’t work out, well I’m probably dodging a bullet because I did learn a lot about their culture right off the bat (and I feel you should be equally skeptical about someone who doesn’t try to gauge your skills in any manner).

For better or worse, this practice will take their company wherever it’s meant to go.

[+] plasticchris|7 years ago|reply
I had your attitude before, with a similar amount of experience. The industry isn't changing it's practices, so seek out more specialized roles related to your experience. This reduces the white board factor.
[+] rahimnathwani|7 years ago|reply
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'.

[+] ex_amazon_sde|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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.
[+] stevenwoo|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
> 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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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|7 years ago|reply
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.