Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Have you successfully done a career do-over, and how did you do it?
243 points by ccdev on Feb 13, 2018 | hide | past | web | favorite | 167 comments
I'm not talking about switching professions at some point in your life. More specifically, doing your career over again in the same profession, in order to redeem your past failing career.

Either you got "too comfy" in your job, didn't learn much, then found a very tough time being a good fit for other jobs. Or you simply have stopped being a good hire for other reasons. What did you do to redeem yourself in the eyes of your respective industry?

I suspect its not as easy as many people make out.

I was a great C++/OO dev for 10 years before I got bored, starting doing management, business focussed roles and more high level devops style work. After 10 years of that I wanted to move back into pure coding. With great experience should be easy right? Wrong.

I got a mid-level java/python dev job and it was difficult, I was out of touch and everything was different or new. Languages, styles, CI/CD, DI, git, containers, unit testing its a huge amount to learn. After a year I got laid off because I was getting paid like a senior but not keeping up with the grads.

A few years later I'm productive and useful in this new world but I dont really like it. I'm enjoying Scala and functional programming but with so many libraries and tools I feel like everything is so difficult and complicated. It takes a lot of study effort to keep up. Also I'm never sure if its because the applications I work on are badly designed, or I just dont really understand modern design. I have a business specialty which keeps me employable but I miss the old days when things were simpler.

Being "old" at 40+ really isn't so easy - I'm not sure you can ever redeem yourself in the eyes of the industry. Best you can hope for is get a non-tech domain specialty and find a big stable company that values experience and try to keep working on interesting projects. Once you're laid off or fired once its really hard to be the super confident hacker you were at 25.

EDIT - thinking about if you want advice. Get a business specialty or technical niche. Dont get too lazy, if you aren't learning on the job for a few years in a row, change the tech in the project or leave. It should be easy to keep employed but you have to keep working at it. Best career money-wise is to move to management, but its difficult to move back. Dont take the high paying job on a dead end project without a plan to get out.

I'm only 32 but that's kind of where I'm at right now too.

Mastered Objective-C and Mac & iOS development 10 years ago, now it's all Swift and nobody's really hiring for iOS devs in my area (Chicago suburbs), and nobody's hiring for native Mac developers anywhere, period. And all the best practices in iOS have changed drastically since then, too, in terms of both coding and UX.

Learned Ruby on Rails 8 years ago, but it changed so fast that most of what I knew about it has become irrelevant, and I never was very good at Rails in the first place.

All the best practices I've learned in HTML/CSS/JS/jQuery/Less/Sass are becoming outdated pretty quickly.

Spent 5 years mastering Clojure but it's obviously very niche and I don't have any experience with big data or anything else Clojure is usually used for, only traditional web apps.

It feels like there's no way to keep up with the industry while staying relevant and employable.

When you get into technology, you should go under the assumption that you will be a student for the rest of your life. Otherwise you will get left behind. My Dad is in tech (I followed his footsteps). For as long as I can remember growing up he always had a book with him in his free time. He started with punchcards.

I don't mind learning, definitely. I got into this field because I'm passionate about software and I enjoy programming a lot. But while I have a full time job and a large-ish family to support, it's hard to fit "3 years of professional React.js experience" into my spare time to put on my resume, so that when nobody's hiring iOS developers anymore, I can still get a job. That's what I'm talking about. A lot of the skills are very transferrable, but I've already been turned down for a few jobs simply because I just don't have the in-production experience with the exact technology they're hiring for, even though I could pick it up pretty quickly.

Want to get some production experience with react? Tons of webdev projects are using it at Mozilla. Come on over and find yourself a good first bug :-)

"But while I have a full time job and a large-ish family to support, it's hard to fit "3 years of professional React.js experience" into my spare time ..."

I'm sure your got the bugs, but the gp ain't got the time

I was in your position, been working with iOS since the beginning until I decided to just get the fuck out of iOS and start doing some useful things.

Went all in with building single page applications in JavaScript and Node, front end, back end, and database administration, and haven’t looked back.

Fuck iOS now, native mobile development benefited from a craze where everyone thought mobile apps were the new web apps, but the truth is, most mobile apps only make sense in the context of a larger application ecosystem, usually supporting a web app.

Node and javascript? Those technologies change and move faster than anything else in the industry. What you're doing now will likely be obsolete within a couple years.

So what? You’re not never going to find one thing to learn for all time. Things change. The point is to get started and then follow the industry.

Who cares if what I do today is obsolete in a few years, by then I’ll be doing something different.

Don't learn the language. Learn the fundamentals. The fundamentals remain constant.

Tough to get hired on fundamentals these days.

A lot of jobs out there only test you on fundamentals. Hackerrank questions allow you to pick whatever language you like.

In most jobs you will not get a foot in the door if all you claim to know is fundamentals. If you do not know the languages or frameworks they work in the interview is over as they are not going to spend the time training you. They want you to get in and be effective as soon as possible, not pay for your on the job training.

Personally I have found that this is relevant only for front end work. For the backend you just need rudimentary knowledge of a framework/language to get your foot in the door, then the actual testing is language agnostic.

Makes sense. Us front end guys are fairly expendable.

Don't pigeonhole yourself into the frontend. Be language agnostic. Mastering the fundamentals allows you to transition across the stack.

That usually happens after the CV screening, no?

I'm willing to bet that Node/JS devs actually have an easier time staying current, since their workplace actually has a need to change technologies, so they're getting paid to keep rewriting their web app in $the_latest_framework, which they can then put on their resume.

Sort of. The difference I guess is that you can still put javascript on your resume and it'll do something for you.

<snark>don't worry, all the people making apps and new javascript/css frameworks have moved on to cryptocurrencies now</snark>

I think you mean zk-SNARK

I know a few iOS devs in Chicago. I've definitely heard about the trials and tribulations of switching from Objective C to Swift, but I'm surprised there aren't more jobs out there. Is the commute to Chicago too long for you?

The iOS devs I know are either in marketing or work freelance though. So I'm not sure how much like "a normal job" it is for them.

Is there a private message feature here? I may have an opportunity you'd be interested in.

HN doesn't have any private message functionality but many people (including the poster you replied to) have a means of contact in their profile - just click on the user's name.

> Also I'm never sure if its because the applications I work on are badly designed, or I just dont really understand modern design.

FWIW, I think there's a lot of people out there who would claim that Scala is a bit of a step backwards for the professional community. It's a fine language, but not a (socially) scalable one due to it's immense expressiveness.

Scala is rough IMO less because of the expressiveness, but more because you have at least 4 paradigms in common use, none of which play well with each other. Let's see, I count (1) Futures/Async (2) Threaded (3) Akka/Play/Actors (4) Finagle, (5) Reactive Streams.

There are so many impedance mismatches between them and so many diamond dependency conflicts that it's impossible to get any moderate size project done without going to microservices so that e.g. your Redis client and your HTTP server aren't complaining about different subtly incompatible versions of Netty.

> Languages, styles, CI/CD, DI, git, containers, unit testing its a huge amount to learn

I feel that a key trend in modern development is often needlessly focused on the mastering the complexity behind the coding infrastructure/deployment pipeline and ignores the actual business needs. Not suggesting these practices are useless by any means, but that for most startups it's putting the cart before the horse.

>After 10 years of that I wanted to move back into pure coding. With great experience should be easy right? Wrong. The trouble is that the "just coding" experience gets very quickly outdated. Your knowledge of Win32 API or WPF isn't really relevant on a Python job. Interestingly, the skills that don't get outdated mostly lay outside the technical part: your ability to manage people and resolve conflicts, your ability to present ideas and convince others, your ability to spot business niches and shape products under limited resources.

In the old times one could argue that being a good engineer (i.e. finding simple solutions to tough problems) makes a difference, but I'm not sure how much this holds anymore for software engineers, since the complexity isn't in about fitting your business processes into the SQL/backend/frontend bounds, but rather in defining those processes and making proper assumptions about the market.

You might want to look into Python, specifically within data science / machine learning area. So far it seems to me to be much more pragmatic philosophy, for example if you can accomplish something with 10 lines of code, it seems acceptable in the community to use just 10 lines of code, rather than writing some elaborate framework of 30 classes, interfaces, factories, DI, unit testing as if you're sending people to the moon, all spread over numerous application tiers for maximum obfuscation.

Also, due to the uncertainty inherent in ML, I find there's a much lower prevalence of dogmatic know-it-all zealots who insist you must(!!!!) do something a certain way, because <a whole bunch of reasons that don't make any sense>, who inevitably will have moved on by the time the entire thing starts to collapse on top of itself.

YMMV of course, but worth looking into.

> Once you're laid off or fired once its really hard to be the super confident hacker you were at 25.

This is the point of all those self-help books about grit and things like that. Their point isn't really to accelerate your progress when you're feeling good and confident. Their purpose is to help you regain the confidence once you lose it, to make you robust to setbacks.

It sounds like you were away from coding for a really long time (10 years!), then you got back into it, picking an area you didn't know much about, expected it to be easy, maybe didn't put in the time outside of work...this approach wouldn't work for anyone, no matter their age.

Here's a manager-y question for you: how could you have done things differently when you went back to being an IC, to have had a better transition? Maybe doing more prep work before you left the manager track? Maybe going back to C++ instead, or an area that was closer to what you used to work on? Maybe doing open source work in that new java/python target area, to get experience, build a portfolio, and be sure you liked it, before you bet your livelihood and reputation on it?

Yeah I could have been smarter, but there aren't that many interesting C++ roles around and the role I took was a horizontal move in the company.

What's DI?

Dependency Injection. It's an over complicated term for a really trivial pattern in development.

func addOp(a, b, op){ return op(a) + op(b); }

Here op is a function being injected into another function. Nobody uses the term in functional/procedural programming because this pattern is obvious and ubiquitous in Higher order functions like map, reduce or filter.

When people use DI though it's used in the context of OOP, where a dependency is an object getting injected into another object through a constructor. People using this pattern tend to create programs that are littered with very abstract objects that can only work when injected with dependencies. Also the injected objects themselves may be DI dependent as well leading to crazy dependency chains (reminds me of inheritance ugh). All of this is done in the name of "modularity" and "unit testing." As you can imagine this pattern produces a sort of False composability where your code is littered with very abstract objects that are rarely ever reusable. If you want to compose object A and object B, you have to specifically design/code object A so that it can handle object B or vice versa. Because all object composition involves custom modifications to the code of an object it is a sort of broken implementation of modularity and reusability.

In a function, the only requirement for composability is matching types. All functions that return ints can be composed with one another without additional modifications. This is true composability and true modularity. The above example doesn't need dependency injection the same result can be achieved with this:

func add(a, b){ return a + b; }


So you can see why the OP listed DI as one of his complaints. He must be dealing with a highly Object Oriented code base that employs this pattern extensively.

> It's an over complicated term for a really trivial pattern in development.

Yes, but...

The objective of most business-oriented programs is to create the One True Function(tm), usually known to developers as a the "application." For everyone's sanity, this should be composed of smaller functions, which are sometimes called "objects." An object is just a function that was created using a specific creation template, usually called a "constructor."

For a pretty moderately sized application, the One True Function might be a tree of sub-functions which has hundreds or thousands of branches. Sometimes you might want to write the straightforward boilerplate code to attach items to this tree, but that could get tedious to maintain.

Other times, you might find a library that will automatically assemble your tree for you, as long as you specify up front in configuration that all of your fruits are apples and all of your leaves are green. This program is usually called a "DI framework."

Hopefully, this saves you a lot of typing, which you can then use to type up HN comments.

Objects and functions are different. An object retains state, a function should be stateless. Objects cannot be evaluated and do not have return values.

I think conflating data structures and objects is bad, and muddle the discussion. An app is mostly a pipeline of functions over an initial data structure.

I think you forgot the word mutable somewhere. A true Business Application(tm) has no mutable state that is not stored in the database, so all objects are immutable and therefore functions (except those dirty dirty data objects).

    some_object.apply(method_name, param, ...) // sure looks like evaluation to me

You never mentioned immutable. If objects were immutable then yes you are correct.

I'm not sure what you mean by "true business application" but there is a transient form of mutable state that an object possesses in between processing a request and returning a response that is seperate from the state that the database holds. It is up to you whether you want that transient state to be mutable or not.

An object itself cannot be evaluated. Methods can be evaluated but not the object itself. Is your example referring to a specific language?... because in general objects are not functions.

> Objects cannot be evaluated and do not have return values.

Python would disagree.

Python disagrees with you. Given a python script with a single class. If you instantiate an object and try to "call" or "evaluate" it:

    class A(object):
         def __init__(self):

    x = A()
you get this output to stderr:

  Traceback (most recent call last):
    File "python_temp.py", line 6, in <module>
  TypeError: 'A' object is not callable
Of course you can mess with the callable magic method, but that's more of a trick then a standard. You may be referring to how functions in python are implemented as callable objects rather than primitives. This is an implementation detail that is language specific, similar to how in javascript, functions are also classes.

In standard programming vernacular and practice, objects and functions are two different primitives. They are not the same thing. An object is a noun, a function is a verb, and just like their english grammar counter parts functions and objects are primitives because a Noun is not really a special kind of verb nor is a verb a special case of a noun.

Edit: added more detail, grammar editing.

> Of course you can mess with the callable magic method, but that's more of a trick then a standard.

Implementing a __call__ function is indeed what I was referring to.

DI is Dependency Injection, which is a $1,000 term for a $5 concept.

A Python class without DI:

    class SomeClass(object):
        def __init__(self):
            self.someDependency = GetDependency()
A Python class WITH DI:

    class SomeClass(object):
        def __init__(self, dependency):
            self.someDependency = dependency

That's it. DI is just explicitly passing ("injecting") a dependent object into an object, rather than requiring the object to call a function to get a reference/pointer to the dependency or make one.

I'm guessing Dependency Injection? In context meaning writing code that's easily testable, and writing lots of tests, which goes hand in hand with the other TDD/BDD buzzwords that job descriptions often throw out there.

I got a super comfortable job for the past 15years as a work from home C++ server programmer. It has allowed me to be around and watch my kid grow rather than be away 8-6PM and just come home to dinner and put them to bed.

It was very good pay at the beginning but it hasn't keep up and now it's not that good (to bad either).

A few years ago I started playing with electronics (Arduinos, Raspberry PIs and stuff like that). After a while I started looking and picked up a few easy jobs related to that in Upwork as a way to do something different as doing the same thing for 15years can take it's toll.

Shortly after I was picking more and more advanced jobs. I picked a few big clients and moved them off Upwork. I'm now doing advanced embedded system programming and electronic design as a side gig on weekends and afternoons and making more money than my main programming job (which I can't seem to be able to leave).

And that's the story of how I found an alternative to my comfortable job. If I ever leave it I will never go to an office again, I will just expand my embedded freelancing.

What kinds of projects are you taking on in the land of electronics? I find this area very interesting, but can't seem to figure out how you can make a living on it....

Well there had been a lot of "I want to make a device to do X". Then I will cook a proposal to do it using a rapberry pi or a MCU depending of what it is.

People wanting to make gadgets using Bluetooth is a big one and I have been using Nordic Semi line of BLE SoCs very succefully.

Most of the business lately has been coming from a couple of companies that I made some work for and keep requesting changes or more features. I had to disable my Upwork profile as I didnt had the rrsources to keep up with the projects coming from there, even after upping my rates a few times.

That sounds like a pretty rewarding expansion of your skills.

I've spent the last year coming up with fun projects of my own, based around ESP8266 devices, and while I don't think I'd ever want to make a career out of it there is something very refreshing about developing in such constrained environments.

It always reminds me of writing code in Z80 assembly on my home computer back in the 80s.

It's cool that you used Upwork as a way to change careers. Very intriguing use of that platform.

' and now it's not that good (to bad either)'

looks like a few other skills have depreciated too

Criticizing the parent for grammar and even not using capitalization or punctuation. You aren’t even following the norms for quoting on HN.

I'm not a native English speaker and didn't bother to proof read my writing. Anyway I can't edit it now.

Thanks for the replies, everyone. Keep them coming! I didn't expect this topic to get this popular.

The reason I asked this question is that I am facing a career slump as a software engineer, and finding out that the software industry is brutal if you don't know how to carve a path for your own career.

And when I mean career slump, I really mean it. I'm living with my mom at age 35 which is quite the opposite of what someone expects of a software engineer at this age. Most people I know are buying/have bought houses and starting families. And I'm not at a point of self-sustainability yet. I can barely keep up with the insurance payments of my own car, and just keep the vision of having my own place to live in (once more, as I lived alone before things got tough) close to my mind. No longer be dependent of my family, get some privacy, some autonomy and instead of living every day switching between errand boy and going to a coffee shop for the free internet, to apply to jobs, or simply taking a break from my parents.

So that's pretty much me right now. I have 10 professional years of a "whole lot of nothing", no big signs of progression, maturity, or taking on more responsibilities. I didn't major in Computer Science, but I still expected my first programming job to be like, getting a mentor, working alongside a group of (in-house!) programmers, being able to ask them many questions and learn all about formal development practices.

Well, I got none of that in the places that I worked at. So seeing your stories gives me a good idea and hope that I can just move on from the past and have better companies approach me with hope and optimism, like I'm a bona-fide junior eager to learn.

What do you WANT to do (besides make money)?

Generally speaking there are 3 broad career paths for developers these days:

1. Senior developer/team lead

2. Management

3. Startup founder / worker


Senior dev:


PROS: Actually get to build stuff all day. Fun to program the latest and greatest. Be respected as an expert by your peers. Less meeting and paperwork hassle than other roles.

CONS: Can be sat on by middle management. Often don't get to drive product or strategic decisions. Low salary ceiling. Frustrating to be forced to do things you think are bad ideas.




PROS: Get to make decisions (well, more than people beneath you, anyway). Potential path to the 1%. No more keeping up with the ratrace of programming platforms and languages. Can have a positive impact on the lives of your reports.

CONS: No satisfaction of hands-on product building, just lots of sitting in meetings, sending e-mails and crafting PowerPoints. Sometimes mentally exhausting to babysit your reports. Lots of Game of Thrones-style politics.


Startup founder / worker


PROS: Fun (well, more than corporate jobs). Be your own boss / have more independence. Work on interesting problems. Potential path to fame and fortune.

CONS: 90% likely to fail and put you in debt or company go out of business. Potentially limitless time commitment. Doesn't feel life-fulfilling to work on a company dedicated to disseminating cat gifs (or whatever the startup does).


Ask yourself which of these 3 paths appeal to you the most, then write out a list of what you need to do to get there, potentially.

If you're living with Mom at age 35 however it sounds like you need to move to a big city like San Francisco or New York where they pay developers a lot more, but I don't know what your situation is.

I'm definitely choosing path 1, which is to become a senior dev. I prefer technical-focused jobs. Learn from mentor programmers, get into teams and learn formal development practices, and then help out programmers less experienced than myself. I've never held a senior title, never led a group, nor even been involved with the process of hiring other programmers.

I currently live in Chicago which is pretty good for COL/salary ratio, for the average programmer. Caveat: I am not average. I consistently get offers from very low paying jobs- as in "$25/hr on a contract" low. This comes from the tendency to being let go from jobs without having another one lined up, so I never could afford to wait much longer for a better offer to use as leverage. Also, I don't qualify for unemployment insurance.

That has put me in the bottom 15-20% of local jobs by total compensation. If I were to restart as a junior programmer at one of the better companies, I'd actually be getting paid somewhat more than at my last job (and with insurance benefits for once).

In that case, I'd recommend specializing in one particular language/framework/domain.

Whether it's NodeJS, Python, C#, Swift -- pick one and run with it. "General programmer" is fine for management but not great for senior developer.

It seems little odd that at 35 you're still in the $25/hr range. Either you got a late start or maybe there's some soft skills you need to improve (running a meaningful meeting, developing a strong rapport with business partners and management, etc).

Good luck.

>It seems little odd that at 35 you're still in the $25/hr range.

Don't underestimate the negative effects of having no job lined up when you're let go from your current one. You can't realistically negotiate for an ideal salary when you're currently making zero. Taking a less-than-optimal job offer is still better than being homeless, though.

For reference, my first web development job paid $12/hr (part-time) in 2007, in the Chicago area. I found this job by cold-emailing job listings on Craigslist.

There's also

4. Freelancer

which is somewhat 1 + 3

PROS: freedom of choice, less bs

CONS: Pressure to market yourself. Dealing with feast or famine, instability.

Can't speak on it personally but about 3-4 years ago during my last job search I searched a few "Getting a dev job after 30" type queries. I was around that age and concerned about all the ageism claims. Apparently there are forums full of former developers either out of the industry or struggling to remain in it. There was a lot of talk about depression and guys being suicidal because they couldn't keep up with the industry, etc. Really eye opening to me at the time as the industry seemed strong as ever, even for outdated stacks.

If you're not getting any offers that's one thing I guess, but imposter syndrome is real in the industry. We all worry about being up to some rockstar level and all the grueling interview processes out there. Then we brush up for a couple of weeks, hit the market, and field multiple offers again.

I find the notion of age discrimination at 30+ to be simply ludicrous. I’ve been at multiple top tech companies, and the very common age ranges were mid-20s to (estimated) late-40s.

Older devs exist but they tend to be very senior with a lot of responsibility in my experience. Where does that leave the competent but non architect level dev who doesn't want to be responsible for that level of pressure? Maybe a 40 yr old wants to just take a mid level CRUD job for the purposes of keeping up with his mortgage and has no other ambitions beyond that? It seems like being "just a guy" is looked down upon the older you get which is not fair when there are plenty of those types of roles out there (mostly given to younger people)

Most HR and managers don't think someone who is 40 wants to work for entry-level / mid-level salaries intended for junior and early developers.

Is the 40 year old comfortable taking the same salary as an early/mid career dev? Therein lies the rub.

Yep, that’s it entirely. In your 20s it’s super easy to take a lot of risks, what do you have to lose?

When I was 20 I decided over coffee to move to the other side of the world. Had some savings, not a lot but just did it.

Now, at 37, there’s a mortgage to pay and a family to support.

I don’t have the runway to do two or three years of low pay again to switch to another field.

I am aggressive paying that down though, so that I have this option in my 40s.

You find it ludicrous because you haven't experienced it or seen it with your own eyes?

I think this phenomenon is hugely dependent on location.

I interviewed at a Fortune 100 tech company when I was 35. The head of the development center declared to me that "people don't come here to retire". I was hired because they needed a niche skill that I possessed.

47 here. I drove my career into a dead-end.

Always been a generalist. Tried many times to do startups and saas products. It never got me anywhere. Between my projects, I worked as a freelancer, while living in many different countries. I took anything I could get. Earned enough money, then tried again. I have broad work experience, but nothing deep. Started a family late in life (with 44). Now I feel my career is a dead-end. Plus I seem to have lost my ability to put up with all that technological mess and the ever-new-shiny-thing.

I'm in a real slump. It's been a long time that I slept well.

Last year I created an online course. It's self-hosted and on Udemy. Compared to the time I have invested it generates peanuts, but I enjoyed the process of teaching.

So this is my plan out of the slump: teaching and corporate training. I figure that once I have created sufficient products, I may be able to make a living. And I'm trying to get my foot into corporate training. Though I'm an introvert, I do enjoy a lot helping others to learn and acquire skills.

I'm working on my public speaking abilities as well. Last year I gave a talk at a conference. I was nervous as hell, but at least some seem to have enjoyed my talk.

It's a long hard way, but I feel it's the only viable for me.

btw - if anyone here wants to chat, get in touch, email in profile.

I'm only 30, but I feel the same way. I've just never been interested in keeping up with the latest tech, I just like to get things done with the tools that work. PHP, JQuery and WordPress still work. I'm a generalist as well and have held positions or have done a fair amount of work in most areas of marketing in my 9 years in the industry.

I think your idea of teaching and doing corporate training is the right direction. You could then take your lectures and record those and build courses on those. That's how you create that content-momentum and spend less time building, thereby improving your ROI.

Good luck!

I started out doing telephone technical support 20+ years ago.

After the bubble in 2000 I moved back to NYC to work with my dad as a Private Investigator. I did that for 8 years until I realized I was too young for that life.

I applied to only one grad program (RISD) because their ID program sounded interesting and I wanted to get into the design world. Focusing on only one school made it a challenge and allowed me to fine tune everything. Like a cosmic coin flip.

After finishing up the program in 2010 (I specifically wanted a 2 year program because of the double hit of negative income and cost) my wife and I moved out to the Bay Area. I went from taking an internship at a design firm ($15/ hr as a 36yo is humbling) to my current role of building out a UX design team of 20 designers in Providence, RI.

In the 7 years of working in the Bay Area I burned through 8 jobs. Some were wonderful stepping stones, some were side tracks, a few were painful situations of treading water with waves constantly going over my head — but all were learning experiences that made my skillset hard to beat in the marketplace.

My current role is funding my family (oh yeah, had 2 kids in that 7 year span…. Don’t drink the water in Rockridge unless you want kids) to relocate back to Providence, RI. It feels nice to come full circle back to the place that gave me a chance to experiment and reinvent myself.

My advice… life is about collecting experiences. Don’t let any single experience define you. Be proud of your accomplishments, learn from your failures, and be nice to everyone you work with. My network has helped me out countless times.

Everyone roots for the underdog.

As someone who just found himself 41 and jobless, I found this a great perspective on things. TY for sharing, especially that advice paragraph!

It's all about latching on to domain expertise. Rarely is a developer a pure technologist, there is always some niche you've become involved in whether it be related to payments or UX or a subset of businesses functions. Assuming you have some meaningful knowledge of something non-technical, you can take that with you into a different area of software development.

I've transitioned across various technical roles by understanding software architecture, business process mapping, master data management, manufacturing, and a slew of other relatively niche areas of domain expertise. I don't think my work was anything unique, I was just aware of the niche components of the projects I worked on and did a good job marketing that knowledge.

That's right. Its about domain and specialization. I'm 48 and have a really good remote gig b/c I've got about 10+ years in one specific enterprise software domain. Interviewing for mainstream technology generalist job is where you get hammered with the Google-style interviews.

I am trying to specialize more in graphics, though I still have to figure out how large is my skills gap between "doing solo graphics projects" and "full-time graphics programmer", especially in math. After getting advice on my resume on how to hide the slow career growth, I've been told to spin it to show I am interested in this niche and show direction towards that.

If you had been able to read my un-revised resume, it would probably read like a story that feels the same in the beginning as it is in the end, with no clear conclusion. So I am working on a new version with a different spin.

It's probably better to specialize in business verticals than tech choices, and better to choose something that doesn't have so many kids learning it to build games. YMMV

I fell into an obscure technology stack out of college (AS/400...in 2005). It was comfortable, but technologically unsatisfying and completely useless for my resume. I kept my skills sharp after hours, and then took a pay cut to jump ship to a "proper" programming job, which lead me to a great high paying remote gig after a scant 18 months there. It was for a lot of reasons, and it was scary (had my first kid shortly before the jump), but it was completely worth it and not that hard. Just, be good at it.

I was working as a .NET Developer (still do), but around 2010, I was neck deep in a codebase that was passing around DataSets, stuck in VB.NET, no real leveraging of code. I interviewed for Amazon and tanked miserably, which was a wake up call for me as I wasn't aware how much I had let my skills slip.

I knew I had hit something of a low point so I started learning on my own again outside of work. I picked up several non-MS languages and technologies which helped me to understand better how I should be using the MS stack. I eventually found DDD, CQRS, distributed computing, and other concepts that colored my design perspective. I petitioned for, and through threat of leaving, got the department permission to use C# and I started to refactor code when I touched it.

It was a tough road. I sometimes didn't have patience with myself, but I started counting the little victories and kept going from there.

I am currently learning front-end frameworks, ES6, and Typescript. Nobody asked me to. I just know I will learn something in the process that I can apply in the future even if I never get a job related to this tech.

I'm not sure what this means: What did you do to redeem yourself in the eyes of your respective industry?

Are you talking about someone who screwed up enough times that the mean free distance to a negative referral is essentially 1.0 ? I don't see industries as having 'eyes' but I have known industries that are relatively small communities.

I have known, and hired, a number of people who have 'redone' their career when the thing they started with didn't pan out, a chemist into a QA person, a semiconductor process engineer into a UNIX developer, a mom into a product manager. That sort of 'do over'.

And I've met folks who 'grew up' in a company doing one thing for 15 to 20 years and then failed to find an opportunity to continue doing that thing. Only to switch into a different career all together. Most commonly that is, "Hey you weren't you 20 years at BigCorp? What are you doing these days, 'mostly consulting'" sorts of conversations.

I'm mostly talking about people that, for one reason or another, appear to wander around with no clear career progression or direction, so it looks like they are "junior" in experience despite being "senior" in total years worked.

And I think that re-doing careers by switching professions (as you say, chemist -> QA) is different than re-doing career in the same profession. Something like the former is different because it's easier for companies to treat you as a clean slate if you switch to something that has little overlap with your former profession. But I want that clean slate treatement just re-attempting my profession.

For instance, maybe I want to re-do my entry level years because I never got into Computer Science, and would like to get an internship at a leading tech company, because that is a better start than my reality, which was just graduate with no internships, no support group of professionals, nor recommendations for good companies. It was just me going solo and blindly applying to local jobs at Craiglist for low-budget clients.

So yeah, I'm not talking about career switching into another profession, but more like hitting the reset button on one, to do it better the second time around.

Okay that is helpful. In my experience, this situation -> people that, for one reason or another, appear to wander around with no clear career progression or direction, so it looks like they are "junior" in experience despite being "senior" in total years worked. has always been that the person wandering didn't know what they wanted, and if it had been years, didn't have tools to figure out what they wanted.

I am reasonably certain there are other explanations/causes but the three cases I can recall easily were all that the person got into a career in computer programming because someone one else told them they should. And they stayed employed but they didn't have any idea about what they wanted to do so they changed jobs for all sorts of reasons, a girlfriend, a pay raise, a manager that kept bugging them at the old job. All of the change reasons were external to their career path.

One really wanted to be a musician. They could talk on and on about different styles and influences. They lit up and were on fire. One was lost, they had always had their life planned out for them by others and they followed that plan until it ran out (just after graduate college and get a job). And they never previously had been required to create their own plan. I didn't get to talk with the third person I can remember because they moved on to a new position before I had that chance.

If that resonates with you then my advice is to work on figuring out what you really care about. And I recognize that isn't an easy task, it was simple for me I was fascinated by computers and the systems you could build with them, so much so I build stuff just for fun. But a good way to search for the things that you care about are to explore different things (very hard to do as a single breadwinner in a family). As I told my musician friend, even if you're not an artist with a signed label contract, you have a understanding of what they are going through and you can write code. Can you find ways to help other musicians that way? Or music lovers? Or screenwriters trying to match music to scenes? or hospitality businesses wanting to influence the mood with music? You can get quite meta and still exploit the experience you've developed in an area you care about.

Without an amnesia treatment there is only so much you can reset :-) Mostly folks learn basics about work (its not always fun, how you work can be as important as what you get done, your boss may be an idiot but it doesn't change the fact that they are your boss, etc). So instead of 'resetting' it's more like vectoring. Now that you've been in the career for a while, if you know what you'd like to be then imagine you have reached that point and and then try to imagine plausible steps that you would have had to take to get there.

I don't take it as necessarily an implication of accumulated failure.

Career paths just tend to end, somewhere somehow. Might flame out. Might get a bad rep. Might be doing just fine but that tech & corp might just be leading to "going nowhere", coasting or the path vanishing. Be on a road long enough, you eventually discover it ends, be it accumulated choices or "just does".

At some point you need a change of direction. Might even be the same direction, you just have to get on a different road that actually continues that way. I'm still doing what I always liked doing, I just swapped out the technology & clients for something more modern.

I have done a career do-over. I took a lower paying position that involved pair programming. It was like developer rehab after the startup grind left me wondering if I could even contribute as a programmer anymore. The firm had a good reputation and recruiters were all over me, which was good. Then I took a much higher paying enterprise type job where it doesn't matter how I code and there is no point in doing anything better. Not sure what my next move will be, might get knighted as a data scientist soon, who knows. Good luck!

I believe this is a time when a lot of software engineers are asking the hard questions about their careers.

Here's why: The technologies have become simpler and the barriers to entry have become low. Once upon a time, if you knew the mainstream languages (C++ and Java) it meant you paid your dues learning the hard stuff. Today, with nodejs becoming mainstream, and the cloud at the backend, developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat.

That leaves the "hard core" dev in a little bit of a fix. "Where do I go from here?" The front end is where the complexity is today. Its hard to compete in the AI and machine learning roles when there are phds doing this for ten years who are on the same table. Devops is also simple enough for someone with 3 years of experience of be on top of the game.

Now add to that the fact that the number of devs with 8 years of experience (what I consider the senior dev) grows bigger and bigger each year..

The next slow down I believe will be brutal to our industry.

I disagree with some of your points. Firstly, being able to crank out simple web apps doesn't translate to building large systems that solve hard problems. There's a huge gulf there that can only be bridged by experience, and lots of it. Secondly, and this also speaks to experience, simply having worked in a "software developer"-style job for some number of years doesn't convey the experience needed to solve hard problems. Let's face the following inconvenient truth: there are many people who "get into coding" in order to find a job which will pay them a reasonable sum of money for life. Some folks use the term "lifers", which I personally consider derogatory, although there's some truth to it considering that it serves to differentiate those of us who're in this for the joy of craftsmanship from those who simply want a paycheck. Even more remarkable is the fact that the two extremes aren't mutually exclusive. Speaking for myself, I really really really love what I do, but I also enjoy the economic benefits that my profession affords my family.

If anything threatens software engineers, it's probably the rise of automation capable of making the "basic web app" people obsolete. I snigger at myself when I contemplate some kind of AI which could do this, although the idea seems less crazy when viewed in the context of many companies and individuals who have attempted to create a "build anything fast" framework/service/ecosystem/etc. Perhaps it does take an AI.

Otherwise we're pretty safe, methinks. Carry on, no need to try for a career change, unless you're really sick of the job itself, in which case the world is your oyster.

This isn't true at all. The state of the situation is tons of people are trying to switch over to web dev and given enough time and effort anyone can become competent at building large systems and solving hard problems. That huge gulf is huge but the gulf is shrinking at an incredible velocity.

The supply of human software developers is increasing at an incredible rate. You don't need a degree in software to do software. I would say roughly 40% of software devs now have an actual software engineering degree. Heck, I'm working with a guy who has a degree accounting and went to a freaking bootcamp for six months. He got lucky and was able to pass the hiring managers' little software puzzle (DFS problem) and he's now a full-time developer.

>developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat.

This is a popular misconception but inaccurate nonetheless. It may appear that way at first glance, but there is still more to building "scalable and enterprise grade" stuff than just cobbling together a bunch of off the shelf components.

It's possible - but not without breaking a sweat. Coming from "HTML programming" you are looking at many years of experience and learning to get to that level despite how good tooling has become.

> developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat

Give it five years or so as the business needs of those companies change and the codebases become more and more expensive to maintain. :)

Focusing on the technological complexity is a bit of a red herring, at least as many problems come from having to keep up with the complexity inherent in dealing with an ever-changing "real world." Usually you can't just flip a switch from A to B, you have to support old workflows/clients, new workflows/clients, transitional modes, etc.

We don't have any real sort of "engineering standards" for software development. Unless/until we find those, it's very hard to claim that the workers will be reduced to interchangeable cogs. We don't really even know what those cogs need to do to make sure a codebase doesn't become a big mess, today, based on the codebases I've seen.

Without that, developing meta-/organizational-/design- skills, instincts, and creativity can be very powerful. Being able to sell that effectively without necessarily having to aim for management positions might be a bigger trick, but it's hardly impossible.

But even if you try to make your calling card something like e.g. a "node.js+AWS stack" expert, you've probably got a significant amount of future work at least in maintenance for all the companies that build themselves on that stack today. Maybe that's not what you want - in that case stay on the new-tech treadmill if you don't want to do more design/architectural/organizational stuff - but it's something that will be needed, at least.

Back at the start of my career, a decade or so ago, my grandfather used to tell me all the time that programming was going to be a dime-a-dozen job. I brushed him off as being a crazy old man but he wasn't entirely wrong.

Your post does a pretty good job hitting all the points. The bar has become so low. I guess this is generally a good thing, but definitely stings.

I've started to reach what I perceive to be ceiling salary and difficulty wise. I'm genuinely unsure of what's next in my life. I'm certainly not perfect and have tons to learn, but the gradient is not as steep as it once was.

As someone who teaches Intro level students it can actually be a bit more difficult to get started. Not always (there's stuff like LightBot, Scratch, and Alice), but it used to be that HTML + JavaScript was a pretty good way to start.

Nowadays, programming for the web can involve:



* JavaScript, client-side

* JS framework(s)

* server-side language (possibly JS / Node)


What's really messed up is you can choose PHP for the server-side (say) and end up with a single file that contains _all_of_those_languages_.

(Yes, you don't need to use them all at once, but even if you do the classic HTML+JS w/ document.write()'s your students are going to push you for the cool stuff they actually see 'in the wild')

This is not to say that you can't get started (and there's a lot of material out there to help motivated people) but depending on where you start the stuff you need to learn can be surprisingly voluminous.

I'm not sure I agree with much of that. I still think there is massive complexity in this industry.

If you know C++ well, definitely recommend taking a look at embedded software/firmware development.

If you look at an embedded project using a micro controller the embedded environment is still space constrained by available onboard flash and RAM.

If you want to move up the stack and look at a raspberry pi/beaglebone type project, the development environment is very much 'DOS/Unix' command line application based with minimal requirements for browser stack development.

An example might be the drive control for a self driving car or battery management for an EV car.

The pay isn't that good. Web is were the money is at.

Truth. In my market, embedded companies are looking for top tier C++ talent but paying 2/3 of what you can pull by being a “backend” guy, and 1/2 of what you can get by having “blockchain” or “AI” on your resume.

Same companies complain how it’s not possible to find local talent, and hence need to be able to hire cheaply from overseas.

I agree with your conclusion, but I think it is due to a different pathway. Fewer developers will be necessary as code-sharing and packaging has improved and standardized. Trust me, people just entering development are still pretty terrible.

It's OK, I agree with you. But, is there any way to join Swedish mafia? I want to improve my CV.

You need 10 years of tensorflow experience for this.

The expected output of a software engineer will always be based on the ability of the average engineer. As technologies make some areas easier the bar will just be raised in other areas. It isn't like employers will just pay the same amount for someone with less skill doing less work.

So NodeJS is easier than previous server technologies, well the role of a pure back-end developer has evolved to include dev-ops, db administration, security, Q.A., automated deploy/testing. Front-end development is also more complex than ever before, if you only have an "html programming" background, you are going to have a pretty difficult time setting up a modern transpiled web app using on of the JS frameworks.

A software engineers competitiveness comes from more than just familiarity with some languages and frameworks.

The ability to quickly learn and adapt is in my opinion an important part.

I think you made a good point. I am myself in the same spot with 10 yrs of exp. finding it difficult to figure out where to go from here.

The barrier of entry will become even more low to a point where building apps is no longer fun. I am looking for something which is a bit more complex and has high barrier of entry. I don't know where to go from here honestly.

Yes, it is easier to build a TODO-list app today than ever before.

No it is not significantly easier to build a fully-fledged software business.

What is expected and required has also scaled up immensely. You can't just drop a Java SWING GUI on a simple tool and put it on a website with a PayPal link and wait for search to bring you business anymore.

It is getting easier to enter and it is getting harder to establish a sustainable business. We see a trend towards bi-modal development in SW as we see in other parts of society. Quite possibly the change is happening faster these days.

What may well have become easier is maintaining an edge as a business in the industry provided you have reached enough scale to leverage low interest rates, tax engineering, global aligned trade frameworks and low cost labor.

> Devops is also simple enough for someone with 3 years of experience of be on top of the game.

You make some good points, but I want to drill down on the above. What do you define as "devops" in the above statement?

I was a Fortran developer for a few years in the Aerospace business. After a while, I got sick of 1977 and just wanted to be a "regular" full stack guy.

At the time Rails 2.X was current and Clojure was pretty new. Both looked pretty neat. I learned Rails and Clojure on my free time, went through Michael Hartl's Twitter knockoff to learn, and applied for jobs.

Nobody really loved how little I knew about modern web dev, but several told me they could see I was bright-ish and sufficiently motivated that they'd take the chance. It was hard and stressful at first, because I didn't know anything (JavaScript, jQuery, what's a "callback" function?, etc.) but I picked it up fairly quickly.

Made $80K my first year (pretty good junior dev salary in Texas) and it's been better every year since.

Not sure how applicable this is, but I’ve gone back to school to get an M.Eng now that I know I don’t want to do (or only have the skills for) applications development forever. The focus is ML/AI but I’ve found a surprising amount of enjoyment out of working with hardware in the rapid prototyping class I’m currently taking. In retrospect, sticking with just one domain was probably why I got bored in the first place.

I haven’t necessarily switched careers, but it’s still not easy. If I could go back and give myself one piece of advice, it would be to knuckle down and learn differential equations and linear algebra. That’s the difference between understanding how machine learning works and tinkering around with TensorFlow.

just started taking an online intro course to deep learning. really hoping that i'm not simply wasting my time and that if i actually want to one day pursue it, that i won't need to have a PHD in this field

I was a bored private equity lawyer, working like a ninja, ashamed by my firm’s clients. I did a one year Masters in Environmental Economics, did some really interesting work and then joined someone else’s start-up and ran a few side projects. That gave me the experience and confidence to really go out on my own. To anyone else about to pivot their life I would say: 1. A British one year masters (not an MBA) is a great way to build a network and learn enough skills to make a fist of your next step, learningon the job. 2. Don’t do an MBA. Ever. 3. Learn start-up skills on someone else’s start-up before blowing your own cash on your own dumb-ass mistakes. 4. Read Hacker News everyday!

I'm curious about the questionable PE clients if you don't mind elaborating a little bit. I'm in the PE space myself and haven't seen anything particularly shady? Obviously you can't go into details, but perhaps you can add a bit more colour to the comment?

I should probably point out that I only joined all the dots on the gangster bits many years after I left. At the time I only saw legal but morally dubious deals. Basically - if your business generates substantial negative externalities, you're in a very morally grey area.

PE firms buying businesses off gangsters before selling them on fat margin to more established investors. However it was the straight up corporate clients at the firm who were always on Human Rights Watch lists that depressed me most.

Aren't most software engineers already doing this?

Initially I was SDET, doing a bunch of boring JUnit work.

Then I wanted to get into video game industry while I was still young. Learned Microsoft Visual C++ along the way.

Then I got sick of the video game industry, the internet industry looks pretty cool, so I switched to it. Picked up PHP, Python, and Ruby all together at the same time.

Then I got sick of SysAdmin telling me what to do, so I learned a bunch of Linux skills and config management to become DevOps.

And I am kind of there now. I always fantasize of working on native mobile app, maybe one day I will make a switch again.

Mine is a similar story to others, although I can't really say if it's a success or not.

For the past eight years I've been a C# developer, working my way up from mid-level to senior developer across a number of companies. I've built dozens of websites, contributed to open-source projects, and have given talks at local user groups.

The problem with being a single-stack person, especially in the .NET world, is that you look on at your peers on the Linux stack and wonder if you're missing out, so I left a cushy job as a senior developer at a large agency to be a standard developer at a software firm, one that focuses on everything but .NET.

I'm a month in, and it's been hard going from being the guy that knows things to the guy that struggles. Getting to grips with Linux and the terminal was surprisingly easy (probably because I was an avid Powershell user on Windows), but I've struggled to learn languages and frameworks quick enough. I have enough of a grasp of Python and Ruby to be able to look at code and know what's going on, but I'm still miles behind others, and it feels like a gap that won't be easily/quickly solved, regardless of the time I put into learning/doing. Despite the logic being almost exactly the same, it's crazy how one can go from making stupid mistakes in a PHP script to fixing a long-standing bug in an ASP.NET MVC site in the space of a minute.

I think what this thread is highlighting more than anything is the importance of building real, meaningful relationships as you progress through your career.

As you progress, make a name for yourself as someone that delivers and build relationships with people. It's amazing how willing people are down the line to bring them on to their team/company in different roles if they already know you to be good and enjoyable to work with.

I'm already 33, and this is something I haven't been the best at, so definitely a wake up call for me.

Did embedded software for a couple decades at numerous companies. Was good at it, but saw the path was going to slowly drift into the weeds (company was aspiring to build products competing with what competitors had discarded as obsolete). Noticed one of those rare ground-floor technology shift opportunities was occurring in the industry...

Told my students in my side/after-hours gig as professor "there's a rare ground-floor technology shift opportunity occurring in the industry, now's your chance..."

A friend was co-founder of a startup. One day, while in his home for unrelated reasons, he was on the phone with CIO lamenting their [then] inability to find iOS developers. He saw me, pointed, shouted "don't leave!", hung up, and asked if I wanted to do iOS development. "Yes!" I replied with enthusiasm. He then asked if I actually knew iOS development. "No! but I'd jump at the chance & reason to learn!" We arranged a 6-month trial period, I worked long hard nights learning & implementing iOS code, and within 3 months was hired as the 2nd employee.

A few years later, that business was sold, and moved on to doing apps for major corporations.

Upshot: technology & business path was stalling out, used an opportune connection to take a risk in jumping to the near-start of a new yet equivalent technology path. Was able to leverage deep "magic" skills (intuition, arcane knowledge, refined techniques) to "do-over" my career, starting with decades of experience into a realm just years old.

I'm dealing with this right now. I have a ton of experience--since I was a young teenager, in fact--of being a software developer, mostly in positions of technical leadership. Most of my resume consists of architect jobs. And yet, to pay the bills, explore a new area of the country, and expand on complimentary skills, I took a job as a senior DevOps engineer contractor at Idaho National Laboratory. Since my contract ended and I've started applying for jobs again, it feels like I'm being treated as damaged goods. I can't tell whether it's the fact I live in the Idaho Falls area or whether it's the Senior DevOps Engineer title. I get the standard "We've decided to pursue other candidates" non-reason. I have no data on which to base tactical changes to my approach. My applications are just falling into a black hole.

I know I am a very qualified candidate for any of these positions, and I have lots of GitHub contributions where people can actually see my work. That doesn't seem to be enough, however. Can't I just talk to a real person? My communication skills are excellent, and whenever I have gotten in front of the hiring manager, it nearly always leads to an offer. Am I the victim of algorithm-driven hiring?

To plug myself a bit: If anyone is looking for an experienced .NET architect who's done a bit of everything (including my own startup), drop me a line. I favor working remotely but I'll relocate to a desirable area for the right position. [nathan] at aldenfamily |dot| net.

Oh, and OP, you didn't mention if your question applies to you, but if it does, hang in there. We don't have much control over the ridiculous state of hiring in IT, so there's not much we can do except plug along.

To be honest, I would rather take more algorithm-focused interview tests than be filtered through the HR perception that I don't qualify for Programming Language Y because I only have experience with Similar Language X. At least most of the companies that do algorithm-based tests are more agnostic about the languages you have used in the past.

Pair it up with the fact that I never look for jobs until I am let go from a job, and I have a double whammy for "hard sell". Something I didn't know that is a bad idea to do until much later in my career. But hey, it's not like we all know about all the things you should and should not do about careers. I just assumed that the only drawback of not having a job is that you have no income stream coming in.

I am able to get through interview rounds with Amazon, and also have gotten the attention of a few interesting companies from my Github projects. But somehow I do not get a good perception with local companies on my resume. Others have helped me out on fixing my resume and they've told me, it's too aimless. It does not have a clear sense of growth and direction, so I am trying out a new resume hoping that my job-searching experience will improve.

I wouldn't concern yourself too much with feeling like damaged goods. It's very easy to feel that way after a period of several or many rejections, but that's probably not the actual case here.

In this instance, it might just be a matter of not finding a good remote match. That can be tricky. I was job hunting for a few months last year and was solely focused on obtaining a remote job but couldn't find one that fit. The only people who seemed very interested enough to take it to a final round interview were paying ~10-15k market rate for my area. And so I'm not working remote. Happy at my current job, but still. I got summarily rejected from a lot of remote gigs I felt I was absolutely very qualified for.

When you ask them why they turned you down, what do they say? Have you tried asking for resume feedback?

It is very unusual for companies in the US to cite any reason for turning down. It doesn't really help them, and while it might be nice and help the rejected candidate, the probability that said candidate will believe he was wrongly turned down and file a lawsuit is just too high for comfort.

It is unusual to come unprompted, but I got feedback 80% of the times I asked.

Most of the job ads (Dice, Indeed, etc.) obfuscate the actual company behind a recruiter and no-reply email addresses. I would love to reply and ask, but in 99% of cases the reply email is noreply@somerecruitmentfirm.com.

I have talked to a couple of real people, one over the phone and one over email. In both cases I feel like I had a good rapport built. The first guy turned me down because his company only had the budget for a junior programmer. The second guy hasn't yet responded to my reply to him, but I'm hopeful.

Overall, I've probably applied to 100 different places (mostly remote jobs) and haven't even received rejections--let alone a reply--from the vast majority.

It pains me to no end that I am seemingly not allowed to simply talk to a real person. I understand why; I'm not naive. It still sucks.

Since you mentioned Indeed, I thought I'd mention I had a similar sort of "resume black hole" experience. For a long time, I wasn't really thinking and just applied through those job board sites, directly from the posting. Later, I started using those sites just to research companies, and then go to the company site and apply there, and all of sudden I get five responses in a week. If there's no company listed, a lot of times you can google portions of the job description and it leads to a real company. My resume formatting would often be messed up by the job board sites, so it probably went straight to the garbage. There's really no reason to go through a recruiter if you can avoid it.

I've been doing that whenever possible. I even have my wife helping! It does work for some of the posts where the actual employer's name is listed, but for recruiter-obfuscated posts, it's much more difficult. Sometimes we are able to reverse-engineer the original company using location and other information, though. It's still a draining experience.

What's your timeline here? 100 resume sends over how long a period?

If I can give some unsolicited advice, I would recommend

1. Put your resume on Monster. Hordes of recruiters here will give you a lot of phone calls. 50% will be for bad fit jobs, oh well, sucks for the recruiter, take the call and use it as practice. Maybe they'll get you an interview, boom, interview practice. You might even get an offer this way which you can use as leverage against other positions (or just to add urgency to other applications).

2. Indeed jobs, in my experience, are absolute garbage. I don't waste my time on that site anymore.

3. LinkedIn and Angel.co have the highest quality positions that I could find.

4. Connect to as many people a day on LinkedIn as you are capable of - this will allow you to make more 1st level connections which will then allow you to send more "hey, do you know anything more about this position? I'm looking to apply and want to know what your experience at x company is" type messages.

5. Stack Overflow jobs is a great portal for remote jobs.

6. Those code-test-find-you-job sites I've heard good stories from, can't remember names off the top of my head, sorry.

7. Took me 250 resume sends to get my last job, which led to 30 phone calls which led to 10 code tests / interviews which led to 3 offers. Food for thought.

Many of the job ads are fake. They are simply going through the necessary motions to prove that they couldn't find a qualified candidate; then they can qualify for an H1B visa.

My first programming job out of school was on really obsolete tech: IBM Unibasic aka Pick Basic in an ERP system. It's a career trap on par with taking a COBOL programming job right out of university: https://medium.com/@csixty4/pick-was-post-relational-before-...

I broke out and rebooted my career by quitting and going to grad school full time and getting a Master's degree in CS from a fancier university in a tech hub city. My phone blew up with recruiters when I graduated and posted my resume online.

Any tips that you can give to someone who is about to finish his Master's when it comes to looking for jobs?

Brush up on your algorithms and whiteboard coding. Tech interviewing is a skill that you can practice and master.

Cracking the Coding Interview, Topcoder, Euler Project, etc. are good places to do this.

Does anyone have any stories of career do-overs that aren't just a renaming of "software engineer" on both sides?

Exactly. Most of these read as "I went into a different specialization of the same field".

Where is the engineer that just chucked it all and opened a donut shop? That's the level I want to know about. Most of these are just stories of people making lateral moves in the same industry.

That's explicitly what this question is about though, the OP specifically says they want to know about lateral moves in the same industry.

That's because the opening line: "I'm not talking about switching professions at some point in your life"

Sure. I do. I still haven't quite made it to first base with the new career but that's because I am solopreneuring and building the first platform. This takes time! However, I have come a long way.

My story doesn't feel unique. I learned what was necessary to then acquire skills used to create experiences by building lots of software every day for years. I gave back as I grew. This process continues today.

I've done this over and over, across disciplines. However, tech has captured my focus entirely for the time being.

Perhaps because the OP specifically asked for experiences not involving career changes?

I reached the end of my career progression in IT Architecture. Started as a Solutions Architect, then reached Enterprise Architect. And there's no where to go after that.

So I took the leap and tried something different - became a Product Architect focusing on a specific technology. Now I'm a Mobile Product Manager, something that pays (probably) less than an Enterprise Architect, but tests out new skills like investment proposals.

My ultimate end goal is CTO. I think having an end goal in mind helps me focus on what do I need to do in this job or the next that gets me closer to that goal.

I got too comfortable and thought I dont need to be harassed or witness others being harassed. I'm leaving this craphole and I'll be able to get another job when Im ready to go back to work. That was June of last year and I was ready to get back to work in September. Yet all those recruiters knocking on my door and landing me 30 phone & in person interviews never prompted an offer. Though six long months later and as of two weeks ago I started a new gig.

Im not sure why it took so long as it never did before, but it's either there is more supply then before for UI/UX Designer & Developers roles, I'm getting old(42), I do both design & development which the UX side ppl say Im not experienced in the study testing where this button should go(let's talk about that for hours) to developers saying I dont know React. Also, I thought ppl in my field might have been talking about how I just up and left my last job without mentioning the harassment(after Me Too movement started to roll i reached out to the heads of this big company reminding them that I reported a female colleague's harassment was ignored then harassed myself .. im a dude).

Overall I am glad that's behind me/working now and it just took time and potentially making ppl shut up about me when they dont know the whole story.

I'm not sure whether this qualifies exactly, but when I first got into tech I thought ops was what I wanted to do. I always dabbled in programming (I did learn rails when it first came out) and followed generally the state of web development, but my skills simply never developed in that direction. I was boxed in by my job, and I learned nothing new there. I ultimately decided there was no path forward - so I went backwards.

I switched from a senior Linux admin to a junior rails development job a bit over one year ago now.

It's humbling to start over at my age. The degree to which one can specialize in IT is striking, and the amount of knowledge you learn and internalize is vast. I learn something new nearly every day now, and little (though some) of my prior skillset directly translates.

I'm very glad I took this step, but it's not been easy. I think a lot of humility is required, especially for somebody who is comfy and well established in their current position. But I'm lucky enough to work somewhere with patient and helpful colleagues, who do not view my age and lack of direct experience as a detriment.

One benefit of starting over when you're older: this time around, I fully realize how much I don't know, and I'm never afraid to ask stupid questions. The same was certainly not true of 24 year old me.

I was at one of the FANG companies for 6+ years, joined right after graduation. However, I couldn't get senior due to me being naive (I have no ego, hence wasn't able to collaborate effectively with teammates, pissed a few off a few times), positioning of the product (none of my team members got promoted to senior while I was in that team). Last year I opted to change my jobs when my promo was denied again. I had hard time finding other teams to switch to (because of mentions of pissing off people) and also was completely bored of my existing team. FWIW, my technical work was never in question, just that no one supported me at promo times etc.

I am now in another good software company (similar to FANG, probably a level lower in terms of core compsci ability). The big change I have done is to accept that not everyone is learning all the time and not to try to do the same (its software engineering not research). I learnt this throughout the interview process by talking to lot of good college friends (who also work in tech in Bay Area) and acquaintainces recommended by friends.

My change isn't complete yet, hoping that this change will lead to better collaboration with team members and work output. Job title might improve too at some point in the future, though I am not too worried about it.

> The big change I have done is to accept that not everyone is learning all the time and not to try to do the same (its software engineering not research)

What do you mean by this?

Basically solve a small problem at a time (however uninteresting it is; a lot of things are uninteresting to me), never try to put the whole world in my head or continually come up with ground breaking stuff. I also realized that most other people are doing the same and this helped me align better with them.

In university, I was studying biology. In my free time however, one day I had the strange desire to build a simple app that would simulate the solar system.

After spending months learning how to build software, I realized just how deeply satisfying software development was to me. So I started doing small, low paid freelance work building apps to build up a portfolio. Every time a project ended, I’d move on to bigger projects with higher pay. I’ve never looked back. I dropped out of school and my passion & skill have grown ever since. Eventually I had a good resume and the recruiters came to me.

Now I am working at an amazing company in the Bay Area. I love it. It’s a job where I actually look forward to going to work every day, which is fortunate and lucky.

Given that the software world is always changing, I am always learning something new. Lately I’ve been learning React-Native.

I owned a brick & mortar business and decided I couldn't keep doing it. The particular type of business has a late-night lifestyle attached to it, and a crowd that I felt was "bringing me down."

I left the business (I'm still a silent partner) and took a web development job. I had been building my own websites & things for about a decade by then, but had no professional experience.

I'm 5 or 6 years in now and getting bored with it. The bulk of the learning is over.

My life has been a series of big changes and disparate job-types, and it feels like another one is on the horizon. I sometimes lament not being the best-in-class in almost any discipline, but I find that I'm adequate or above-average in a great many things and there's maybe some comfort to be had in that.

After so many years of growth and development in any industry, you have to change and shift to stay relevant.

A big part of being relevant is being interested. If you aren't relevant or interested, you aren't of any value in that particular niche of that particular industry.

What I chose to do when faced with this was to move into an adjacent field where my skills were applicable and relevant to the new and interesting challenge.

When the situation arose yet again, I took the knowledge gained by having applied my skills in new ways to focus on applying them in a constant state of change to help others in different niches.

It's all one big spiral staircase of shark's teeth, where there is no shortage of change, growth or people willing to take your place.

Early 2000s, I was a full time procrastinator, college introvert, MTG/DND geek and homework/thesis freelancer. German government increased fees to a point which I could no more afford it, so I dropped out and found a real job.

If you will forgive me indulging in stereotyping: this is a very German response. Two sentences, brutally honest about the self, logically complete, and subtly amusing.

Started off as a concept artist for a few years, then started doing particle effects, moved into 3d environment modeling for a few years, and did a few characters, then moved into character modeling for a few years, then animation, then character rigging, then rigging automation through mel script for a few years. then worked as a technical artist for several years, then learned more programming stuff, then wrote a bunch of unreal script for a few projects for a few more years, then learned C# for unity and now i've been writing C# for VR apps for a while...

Often, it's the situation that architects your decisions. If you can delay debts and dependencies, you can afford to do more. Live within your means. Downsize your needs. Practice frugality.

Everyone should read


Tl,dr: do not be the guy who writes code in x language for y bucks / hour and applies to vacancies online. Be the guy who generates business value and talks to people in the industry. Start doing it today!

I got my Ph.D. in physics in 2010, worked for about 1 year in research then took a year to try and build my own startup while collecting unemployment. I didn't successfully get a startup going but I learned enough web development during that time that I have been doing it professionally ever since.

How were you able to collect unemployment if you decided to leave to try to get a business started?

He's already answered but just in case we have any other Aussie's reading, we actually have a system that lets you do that called NEIS.

You have to do a short business course—From memory it was one hour a week for 10 weeks or something like that—and then you can collect unemployment while working on your startup for I think a year.

The bar to get in is pretty low. I'm sure that a lot of my class/group were intentionally unemployed and just looking for an easier alternative to pretending to look for work, and they didn't get kicked out. That said the metrics they were tracking to make sure you were progressing were more regular small business focused rather than trying to create the next Google focused. Revenue, customers, etc. That fit what I was doing but might not for you the reader.

I got laid off and then made that decision. And I basically just started building websites that I thought would be cool. Trying to "get a startup going" might be giving myself too much credit.

Ah, that make sense. Incorrect assumption on my part that you decided to leave.

I wanted to try something completely on my own and I had done a lot of programming in my physics career so I thought that building a website would make sense. I SEVERELY underestimated the complexity of web development though. :) But I'm glad I did or I probably wouldn't have even tried it.

Get another job. “Stopped being a good hire for other reasons” makes it sounds like you’re experiencing a lot of rejection. Finding a new job is a numbers game, but also the more you search, the better you get at interviewing. Don’t give up, treat your job search like a full time job, be diligent.

I don't think it's a good idea for people like me..

I'd rather try to figure out a way to make my career (my skills) fun again. And find a way to get curious.

Or, to expand slightly past my skillset ( like management ), and learn that skillset, but as a superset of my existing skills.

This industry is the very definition of career do-over. Every 5 years or so we change our activities. No one writes code or design like 20 years ago. With a career of 50 years, we are all doomed to have to change.

Adapt over time. Don't just jump. Take on new responsibilities. You will find experience crosses many fields. It's a lot about domain knowledge (e.g. financial industry) and we carry a lot of stuff over with us. Never undersell yourself, experience is king. Always be keen on learning, asking questions to younger self. Cross pollinate, experiment and be curious. Too many old devs just corner themselves. They shouldn't, they have a gezillion experiences and it always comes down to a race condition ;)

Well said.

Stay flexible and keep learning. I like the 4% rule: keep increasing the difficulty of a daily challenge by 4%, i.e. keep pushing your self to reach higher and higher.

The industry only changes superficially. The fundamentals stay constant. Don't master languages; master the fundamentals.

I was a Symbian S40 app developer, after that Symbian C++ S60, developing J2ME applets. Left the job, launched my own app. Made first million doing that! Then I recreated the same app for Blackberry then finally Android, made tons of money doing this. Then it got soo crowded, clones kept coming and I lost my competitive edge. Then I launched a web app in a niche and built SaaS business. At this point - I had all money I ever wanted but I lost motivation, I started getting back to my roots. Hacking on projects, building expertise across dozens of different technologies. It was as if I am trying to justify what I've earned. Naive me! But then I realized that tho I am among the people who claim technology as their passion but this is not what attracted me to this field. What attracted me was a solving problem which many had in common. So, I left hacking and started building small products again. Launching 4-5 more products, all successful - I never failed at anything. But still, sometimes I feel that I just keep getting lucky. This thing still haunts me till date. I am not able to relax or take a day off either. Life has become hell lately, I feel I've to fight to survive. The world just doesn't make any sense to me!

So you seem really successful and financially sorted, but yet 'life has become hell' and you feel you have to fight to survive? Do you mean financially?

Yep I was a programmer at a university until 2002 when I had driven my own career into the ditch along with my personal life. I had to start over from a lower position after gathering my wits about me, and work my way back up.

The hardest part was getting that second chance, if you had a more senior job and you're applying for a lower one it's obvious to people there's something going on there. Your best bet is going to be honesty, and convey very clearly you've learned from your mistakes and that you want to improve, your open to feedback, etc.

Good luck.

i am somewhat bemused that this got 38 upvotes in 16 minutes. i have no idea how hacker news' new page works.

It means there's lots of eyes on the article and the folks agree. No surprise there.

The 72 votes in 38 minutes as of now means that the few who upvoted it from the /new page are being validated by the general community after it got on the front page.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact