What type of software engineering would most suit me?
February 18, 2018 7:21 AM   Subscribe

I've heard a lot of people complain that the traditional algorithmic interview process doesn't reflect what software engineering is actually like. But I actually love solving interview problems. Is there a field of programming that DOES resemble the very cerebral, abstract, puzzle-y nature of an algo interview, and how do I break into it? As usual, there are snowflakes below.

Generally, the more theory-based and math-y my classes have been, the more I've enjoyed them. (Some favorites include: reinforcement learning, theory of computation, data structures, algorithms.) Classes I definitely did *not* enjoy were systems classes (operating systems, computer architecture). Classes I was on the fence on were more practical, project-based classes (mobile computing).

I did an internship last summer doing mostly front-end work thinking that I liked design so I'd like front-end, but front-end engineering seemed basically like the boring side of design. I'm definitely not interested in it for full-time.

The biggest wrinkle: My academic record is... not great due to mental health reasons. Further academic study is out of the question, as is working for any company that uses GPA as a component of decision making. I recognize that this does limit my options severely straight out of college, but I'm hoping I can spend the next few years making up for it and eventually transition to a field I'd enjoy. I'm just not entirely sure how to make that transition.

Smaller wrinkle: I'm female, and would prefer to avoid the more notoriously toxic/elitist segments of the industry, or any field with a 1:100 or worse ratio of women to men. This is negotiable if the field would otherwise suit me perfectly.

I'm currently still looking for an internship for the summer, so I do have one more chance to try something new out. I'll be graduating next December.
posted by perplexion to Work & Money (10 answers total) 7 users marked this as a favorite
Anything where the resources are expensive or time is short is going to pay someone to sit and work out a really good solution. Plenty of institutions have large backend servers with a database and limited resources along with the need for many concurrent connections.

You might look for a shop that do a good amount of database-related work, be it mysql / oracle / mssql / etc. The new hot thing is serverless / cloud / nosql, but there is a plenty of work on good old racks of hardware running db servers and web pages.

I think you've got a good plan. Find a job you enjoy, solve some hard problems, and then use that to move up to a job you like more. On top of that, very few people find their perfect job out of college, you will grow and change, and new challenges will interest you.
posted by nickggully at 7:47 AM on February 18, 2018 [1 favorite]

Bad news: vast majority of software engineering work is going to be either systems work or “boring” (to you, and many, many other people) work of shuffling some bits of data around (CRUD-like work, even the acronym sounds gross and boring).

Good news: there is still work to be done in optimization and puzzle solving, that do not involve more advanced degrees.

I agree with nickggully that a DBA-like position could be a good fit, with the caveat that it still involves a lot of systems-like work. With databases though, the systems work is usually systems-of-computers rather than systems-within-computers and is handled by experienced people in general. Things an entry level person would do is more along the lines of finding out where a resource intensive query is coming from, how to make it better, etc. This will get you a bit more work that is puzzle-like, but everything in bad news still applies to some degree.

It sounds like the best fits for you would be data analysis. Biggest challenge there: most of the places that do this work are very male-focused and toxic, and will want to see advanced degrees with high GPA. In order to be cost effective, most of this work will be in finance; there is some in other industries, advertising/marketing, insurance, research. Try looking for “junior analyst” positions at smaller companies.
posted by jraenar at 9:17 AM on February 18, 2018 [1 favorite]

Being a software engineer who is critical of algorithm-heavy interviews, let me expand on that criticism. It isn't that we don't use those skills, it's that those skills aren't the only ones we use. An interview process that focuses only on algorithms misses out on a lot. You don't learn much about the candidate's skills at eliciting requirements, doing high-level system design, working with other people, etc. If it's whiteboard-only, you don't even learn about how they write code, test it, or debug it. It's also an artificially narrow environment: a huge part of software engineering is maintaining legacy code (and writing new code that will be as easy as possible for other people to maintain in the future) which is fairly different than working on a toy problem for 60 minutes.

All that said, some jobs do use theory and algorithms more than others, and toxic tech culture is worth considering. Have you thought about trying a data science-y internship? Or an internship with an org that isn't purely software/tech and is more science or research oriented, like Broad? You also might check out higher education jobs; universities employ software devs and can be good places to work (though there are a lot of IT-type jobs in higher ed that wouldn't be a good fit for you, you might be able to find a research group looking for an entry-level dev). And definitely target an internship at a place that is also hiring people full-time, where there's the potential for you to turn the internship into an offer at the end of the summer.
posted by orangejenny at 9:24 AM on February 18, 2018 [1 favorite]

The two groups that came to mind immediately are the "quants" that program the computers that buy and sell securities on Wall street and cryptography. Both may be out of reach for you since they are mostly PhD fields, but I think the latter is suggestive. Data security is somewhat routinized these days, but chasing known leaks and white hat testing can involve some detective work. Almost by definition, you are trying to think of the things no one else thought of.

On a somewhat related subject, quality control can involve a lot of boring testing, but it also can involve figuring how to demonstrate an elusive weakness.
posted by SemiSalt at 9:32 AM on February 18, 2018 [1 favorite]

Another area to consider might be working for a quantitative research group at a university. Pay will not be as high, but there are more opportunities to work on pure algorithmic stuff.

But I agree with everyones' sentiments above that this kind of work is only ever going to be part of the work one does as a developer. The workaday tasks are just part of what comes with the territory, plus taking on extra tasks that might be totally unrelated to your job; the coding skillset can often have people assume that you can solve any problem with computers.
posted by rachelpapers at 10:00 AM on February 18, 2018 [1 favorite]

I agree with many sentiments of the answers above. Can I suggest that you may not have enough experience yet to really know what you like and what you hate? Or put a slightly different way, that your likes will vary over time?

I've been a software engineer for almost 20 years now and at my current position for 10. I work in a niche industry at a very small company, which I really like because I get to do basically everything, so the sorts of tasks I have to accomplish vary. This has its downsides; it also means I have to do everything, even the stuff I don't particularly like to do. Sometimes I get to design and build a really cool thing from the ground up and sometimes I have to hack up a bunch of ETL tools. Like most everything in life, your work will have aspects you like more than others, the best you can do is try to set yourself up in a position where the pros outweigh the cons. The best thing might be to just adopt a short term strategy of take-all-comers since typically interns are not given their choice of what task to accomplish. Try to observe and learn what you can and then after you have a little bit of experience make some choices about the direction you want to go. There probably isn't a perfect puzzles-only utopia job out there. You will probably have the opportunity to switch jobs several times. All that said, though, absolutely dodge the shitty brogramming environments, you'll hate it (any sane person should).
posted by axiom at 12:49 PM on February 18, 2018 [3 favorites]

Two things come to mind that you might be interested in looking into: Bioinformatics and VFX. Bioinformatics has interesting problems and a reasonable gender mix, but my impression is that graduate school is the usual way in, so that might not be a fit for you. (That said, I know a guy who started in games development and then moved to bioinformatics.)

VFX firms always have openings for render wranglers, an entry-level job that gives you plenty of time to play with in-house software and demonstrate that you can do more interesting work. Depending on the company, they may have needs for business process software (boring, yes), artist scripts (a little more interesting), shaders, effects, and render engines (each more challenging and also rarer than the last).

You could try contributing to Blender, and talk about doing it in your resume and in the interview. At the right company, they'll like that. It's a big, sprawling piece of software, some parts of which are heavy on algorithms that you might love digging into.

In my experience, computer animation and VFX have a high proportion of women in management and are reasonably professional. That's not a guarantee that every company is great, but you should be able to find a company which is at least okay.
posted by clawsoon at 5:35 PM on February 18, 2018 [1 favorite]

Computational work in the sciences might suit you. Especially life sciences if you want to aim for a less masculine and deranged environment. Datasets are big enough to require algorithmic cleverness, and the problems are interesting in their own right.

More generally, there's a niche of "programmer who understands this math-heavy hard-to-understand application area well enough to talk to the experts". It's a good niche, because you are needed and useful, but you have to be a little political to avoid being seen as "the help" (a particular problem in finance). People use the phrase "domain knowledge" for some reason. "I enjoy developing new domain knowledge" is a good phrase to use, if the interviewer is culturally a tech person.

I don't know about the GPA issue, but I do know my 3.5 was low enough to keep me from working at several companies, and now matters not at all. So it's uh, not exactly a sensible or rational system.
posted by vogon_poet at 10:42 PM on February 18, 2018 [1 favorite]

oh, also, everybody is right to say that there's no job where you can get away from boring plumbing work. it's needed everywhere; even like DeepMind researchers working on StarCraft-playing AIs had to write this boring API to link their systems to the game.

the best you could hope for is getting a promotion to something where you could push that work onto subordinates and pretend like it doesn't matter while taking credit for it not breaking, but environments where that happens tend not to be healthy.

if you're looking for a summer internship and are still and undergrad, don't rule out aiming academic, even if you don't intend to go back to school. a lot of labs would like someone who could program computers, like as a paid employee.
posted by vogon_poet at 10:52 PM on February 18, 2018 [3 favorites]

AI would be great and involves a ton of algorithms. Computer vision requires a lot of this too. You could work on self driving cars! As a female programmer, you will be in demand by the many companies working to improve their diversity.

Do not follow the advice above about quality control. That is not algorithmic at all, and you would be cutting your salary down to 1/3 what it could be. DBA is ok but also lower earning potential and probably actually less interesting to you.

Avoid toxic environments by seeing whether their leadership seems idealistic and ethical, rather than arrogant and acting like a bro.

Become an awesome female AI programmer!!
posted by vienna at 7:27 AM on February 19, 2018 [2 favorites]

« Older Charging an Electric Car With Long Cord   |   Abstract Reasoning Practice Test Help request Newer »
This thread is closed to new comments.