Readit News logoReadit News
Posted by u/ccdev 8 years ago
Ask HN: Have you successfully done a career do-over, and how did you do it?
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?

rb808 · 8 years ago
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.

_diyu · 8 years ago
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.

Liuser · 8 years ago
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.
matte_black · 8 years ago
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.

nerfhammer · 8 years ago
<snark>don't worry, all the people making apps and new javascript/css frameworks have moved on to cryptocurrencies now</snark>
Declanomous · 8 years ago
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.

blitz_skull · 8 years ago
Is there a private message feature here? I may have an opportunity you'd be interested in.
caust1c · 8 years ago
> 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.

fizx · 8 years ago
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.

meritt · 8 years ago
> 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.

john_moscow · 8 years ago
>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.

mistermann · 8 years ago
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.

tw1010 · 8 years ago
> 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.

6a68 · 8 years ago
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?

rb808 · 8 years ago
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.
atsaloli · 8 years ago
What's DI?
crimsonalucard · 8 years ago
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; }

add(op(a),op(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.

Sohcahtoa82 · 8 years ago
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.

_sdegutis · 8 years ago
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.
ElectronicE · 8 years ago
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.

spookthesunset · 8 years ago
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....
ElectronicE · 8 years ago
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.

stevekemp · 8 years ago
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.

Deleted Comment

debt · 8 years ago
It's cool that you used Upwork as a way to change careers. Very intriguing use of that platform.
geoffmac · 8 years ago
' and now it's not that good (to bad either)'

looks like a few other skills have depreciated too

wil421 · 8 years ago
Criticizing the parent for grammar and even not using capitalization or punctuation. You aren’t even following the norms for quoting on HN.
ElectronicE · 8 years ago
I'm not a native English speaker and didn't bother to proof read my writing. Anyway I can't edit it now.
ccdev · 8 years ago
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.

ordinaryperson · 8 years ago
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.

==========

Management

==========

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.

ccdev · 8 years ago
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).

bewe42 · 8 years ago
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.

southphillyman · 8 years ago
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.

khazhou · 8 years ago
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.
southphillyman · 8 years ago
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)
tinymollusk · 8 years ago
You find it ludicrous because you haven't experienced it or seen it with your own eyes?

Deleted Comment

tw1010 · 8 years ago
I think this phenomenon is hugely dependent on location.
forgotAgain · 8 years ago
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.

Deleted Comment

hemling · 8 years ago
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.

thisiswilson · 8 years ago
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!

szermer · 8 years ago
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.

josephgrossberg · 8 years ago
As someone who just found himself 41 and jobless, I found this a great perspective on things. TY for sharing, especially that advice paragraph!
brd · 8 years ago
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.

bubbleRefuge · 8 years ago
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.
ccdev · 8 years ago
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.

fizx · 8 years ago
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
larrik · 8 years ago
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.