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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
looks like a few other skills have depreciated too
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.
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.
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).
4. Freelancer
which is somewhat 1 + 3
PROS: freedom of choice, less bs
CONS: Pressure to market yourself. Dealing with feast or famine, instability.
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.
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 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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Nowadays, programming for the web can involve:
* HTML
* CSS
* JavaScript, client-side
* JS framework(s)
* server-side language (possibly JS / Node)
* SQL
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.
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.
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.
The ability to quickly learn and adapt is in my opinion an important part.
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.
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.
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.
You make some good points, but I want to drill down on the above. What do you define as "devops" in the above statement?
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
Cracking the Coding Interview, Topcoder, Euler Project, etc. are good places to do this.
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.
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.
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.
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 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 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.
What do you mean by this?
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 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.
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.
https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pr...
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!
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'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.
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 ;)
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 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.