5

Summary: I took my current job ten years ago and learned on the job. I lack a formal background and haven't been able to grow new, modern skills -- my job is more focused on getting the current task done than on improvement/growth. I now have the position and salary of a senior developer but fear I would not be able to get that position elsewhere. Due to family obligations, I can't work all day and study all night. How do I recover from this situation and modernize my skills without taking a huge pay cut in the process? Ideally I'd stay in my current position and develop better skills.


10 years ago I joined a small company as their first and only web developer. I was completely self-taught, and had about a year of hobby experience. I literally taught myself everything on the job.

After 5 years, it was eventually just me and another less experienced developer. I had authority over everything dev. I made all the decisions, but was very aware that there was a whole world of dev that other companies were doing that we simply were not.

I decided I needed to learn these things, and fast, to ensure I was keeping up with the industry. I very briefly started, when I could, trying to figure out those things and how we could implement them in the best way.

Then I had kids. And this is where my skills progression just stopped.

Life is so busy, I just don't have time to work on my own skills outside of work. At work, I am so busy I also don't have time, so I just continue on as I am.


Here is the dilemma.

I am still at this same job. I have been here over 10 years. I still work like it's 2010, and yet I earn a decent senior developer salary of almost £60k. For the past 2 years I have been working alone with no other devs.

The way I work is outdated and no other developers are working like this. I feel like the only way I can learn the modern skills I need is by being a less senior developer, at a company which does these things. I need to see how other people do these things because I do not have the literally hundreds of spare hours required to learn these things properly by self-teaching. I have never had a mentor, or anyone to learn from.

On the other hand, I have a mortgage, bills, cars, a family. I cannot afford to simply take a 50% pay cut and change jobs to be in a position where I can learn and be forgiven for not kno‌wing how to do these things yet.

I am stuck. My career has run into a dead end because I should've bitten the bullet and left 5 years or more ago while I still could. There will come a point where I will have to move on from this job, and I won't be able to without taking a massive financial hit which will probably cause severe problems for me.

I have to hire a new developer and I'm dreading it because I know I have to pretend to be senior to them, but at the same time it will be glaringly obvious that they are going to be working on an old school mess. We won't be working like they did at their last job. It will be an embarrassment.


The Pros

Despite my dev skills being somewhat outdated, I know I have value. I'm pretty sure my boss really values me for a reason. Ultimately, I deliver what he needs and I have traits that he respects and values. I have been loyal and trustworthy for 10 years. He knows he can rely on me. Many employees have come and gone as the years went by, and I have never let him down. There has never been a problem I haven't found a solution to.

Then there are skills I have developed over the years due to the pressures of being in charge since very early on, and from working at a small company where you are required to wear many hats. I sometimes feel like I am more than just a developer.


What next?

I know I am, at my core, an intelligent and successful person. I know I could be successful at most jobs due to my personal traits, but I am no longer a young, single person with tons of free time and no financial responsibilities. I cannot simply start from the bottom rung again.

  • I don't know how to catch up with the industry I'm in, with the lack of free time and energy I have outside of work.

  • Leaving my current job is a huge risk. I worry I will never be able to get another job at this level again due to my lack of technical knowledge in some areas that are industry standard now.

  • I have thought about changing career.

  • I have thought about going freelance.

  • I have thought about starting my own business.

I am afraid if I don't take steps to rectify my situation now, a time will come in the near future where I have no choice but to get a new job, and I will be hit with severe financial difficulty when I can no longer get into a job at the same level.

What steps can I take in my current position to modernize my skills and get my career un-stuck?

closed as off-topic by Philipp, user34587, HorusKol, BittermanAndy, sf02 Apr 25 at 15:09

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking for advice on a specific choice, such as what job to take or what skills to learn, are difficult to answer objectively and are rarely useful for anyone else. Instead of asking which decision to make, try asking how to make the decision, or for more specific details about one element of the decision. (More information)" – Philipp, Community, sf02
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 3
    Are you overloaded at work? Or could you take a little longer on some tasks and try doing them in a different, perhaps better way? If you could do some experimentation while you are working, that could be a solution to your problem. – Jim Clay Apr 25 at 14:09
  • 2
    Have you spoken with your manager about your concerns about outdated practices and you lacking the time to learn modern practices? If you are to stay where you are it sounds like you need another senior dev. I'd sell it to management in terms of you being the legacy expert and needing a new person as the path forward to modernization. – Myles Apr 25 at 14:18
  • 3
    @ImpostorSyndrome as Myles said, you can speak with your manager about this, i've played my "outdated practices" card but they just didn't care about my improvment as long as the end product was delivered. I reached into DevOps, and automated basically everything that i used on a daily basis so i could relieve myself of some tasks and earn some free time. The free time i got, i used it to learn new stuff and rewrite the old system using new syntax and better tools, I feel self acomplished because now i can reduce my workload about 50% and i'm twice as good with a new stack of dev tools. – darklightcode Apr 25 at 14:44
  • 6
    Sometimes I really hate this site. Clearly OP is asking an important question and he needs guidance and an answer. We should be working to provide the best procedure for helping other developers with this issue. Step by steps, a crowsourced list of TODO's or something to help Devs "reboot" their career. I don't think it's too broad a question, I think it's precisely the sort of question that needs to be answered. – ShinEmperor Apr 25 at 15:26
  • 3
    We have several cases in my company where senior devs get junior/less senior devs who are more experienced than them on a topic. We get them so they can share and teach us their experience, if we do not have the knowledge on that topic, we probably can teach them other stuff (from our workflow, interaction with customers, presentations to higher management, older software practices/languages, etc.) Dont feel because you are the most senior there that you have to teach everything. Actually some younger folks would love to teach to senior people the way they work, or the skills they know. – Ara Apr 25 at 16:28
7

Why do you have to leave?

Right now, you are well-paid at your current job, and you provide a lot of value-add in terms of soft skills and detailed subject matter knowledge about the way the company works and its particular niche market. You have kids, and as a result do not have the time to adapt to new tech. That suggests rather strongly that this is absolutely the wrong time to move. You need to stay where you are, keep contributing in all of the ways you contribute, and keep making enough to support your family. If you can just keep doing that for long enough (and the company stays happy with you and doesn't go under) then that's enough by itself that you'll be okay. Better still, if you can hand on long enough, your kids will grow up enough to be less of a time/energy sink, and you'll have some spare resources to start picking up on the continuing education thing again... but life does not come with that sort of guarantee.

For your personal life, you don't have the personal resources to train yourself up to a current standard. That's fine. I'd bet that you can cut back on your expenditures, though. Figure out where you can save money without hurting yourself too badly, pay off your debts (if you have any) and consciously live below your means while you build up an emergency fund. That way, if and when you do lose your current job, you'll have some space both to look for a new one and train yourself up on the things you've been missing. Also, the experience of frugality will mean that you'll be able to make it through on less overall (stretching that emergency fund further). Every little bit counts.

As far as hiring a new dev... don't beat yourself up too much. "Old dev with old crufty code" is so common it's cliche. You make up for it with a real wealth of sidebar skills. You are much more than just a developer. If you try to compare yourself on "pure developer" grounds with someone who is entirely focused on that realm, of course you won't look all that good by comparison. So don't do that. Instead, position yourself as a team lead or project lead looking for technical specialists. Hire people who have the technical abilities that you don't, with a specific eye to fixing the issues you see in your own code. Use this as an opportunity both to get more current on your technical skills (learning from them) and develop personnel management abilities (because outside of your current company, positions like "project lead" are really where your skill-set should be pointing you anyway). In the meantime, don't sell yourself short on the technical side - your experience will have taught you a great many important lessons that the new guys won't have yet, and abandoning that would be foolish.

Whatever you do, don't go freelance, and don't start a business. It's exactly the wrong direction to go.

  • I recommend emphasis on the fact that OP has valuable skills, and can hire to shore up the weak points. – aherocalledFrog Apr 25 at 19:05
  • @aherocalledFrog added some bold for emphasis – Ben Barden Apr 25 at 19:08
  • I disagree that he should avoid changing jobs. It isn't always risky (especially not in the UK where employment laws are better than the US, for example). If the OP can find a suitable role at a larger company, he could up-skill on the job, still earn the same salary and have better job security + satisfaction in the long term. – Will Appleby Apr 26 at 7:07
  • @WillAppleby it's not the risk. It's the fact that he is literally worth more to his current company than he would be to almost any other company. He has a lot of knowledge about how the company works, how the codebase works, how the product works, and so forth. He won't be able to leverage that anywhere else - which means that his best bet, if he can pull it off, is to keep himself in a position where he can continue to leverage that while he digs himself out of his current situation. For the moment, time spent on the job search would be better spent on developing his skills. – Ben Barden Apr 26 at 13:21
  • @BenBarden I get what you're saying, but "worth more" depends what you mean. In terms of salary, stepping up to a larger company can yield the same or better pay even without the intimate business knowledge - that was my experience as I explain in my answer. So if he's worried about a salary setback, I don't think he should be if he's smart about a new role. – Will Appleby Apr 27 at 11:10
2

I hope I can offer you some useful guidance here, because - aside from the having children part - your situation sounds similar to one I found myself in a couple of years ago. I too was a developer who'd only ever worked at small companies, and over a 7-year period, I worked my way up to 'Technical Director' at a small firm. I hired most of my team and was recognised as the authority on any technical aspect of the products we built. However, our company didn't really embrace many of the new technologies, and I realised - like you - that I'd kind of fallen behind, as there was never any pressure to adopt new ways of working, and I was always fully committed each week to deliver on our project commitments.

To cut a long story short, I joined a much larger company than I'd ever worked at before (FTSE 100) as a senior engineer. Perhaps I was slightly fortunate that they didn't require intimate knowledge of any technology I didn't already know, but now I'm getting exposed to lots of new things, like cloud hosting, .NET Core, Docker, CI/CD etc. that I had no previous experience with.

From reading your post, I think perhaps you are undervaluing how much general experience as a developer is worth. Regardless of specific technologies, your years of knowledge make you valuable because any company worth its salt would recognise the potential you have to transfer those skills into new technology.

I would bet that if you had to start using a new programming language, it would take only a matter of weeks before you produced work of far better quality than any junior developer, even if they have previous experience with that language. There is a huge difference between knowing the syntax of a specific language and knowing how to deliver robust applications that meet the needs of the business, and this is where your experience really counts.

To summarise then: in your position, I would look around for senior roles at larger companies in your area. If you present yourself at an interview as someone who knows the development role inside out and wants to find fresh challenges with new technologies, I'd be surprised if you don't find somewhere willing to give you a shot. Plus, larger companies are more likely to match your current salary without expecting you to be an expert in every technology they use. I went from earning circa £45k in my previous role (where I was responsible for 12+ staff), to earning £60k+ with no team responsibilities at all.

I'm not sure I would recommend the freelance route unless your existing skills are in demand - contractors get paid great money because they know their technologies inside out. It's not an opportunity to learn new things (except in your own time, which you don't have). It's also not as reliable or secure work, which, with a family is probably an unnecessary risk.

  • exactly "Join a nw company" – Fattie Apr 25 at 15:14
0

I'm in a similar situation to you but at the beginning of it. I took the job I'm in now knowing that it wouldn't help my skill level progress, but with the trade-off that I experience less stress, have enviable benefits, and a steady/decent pay-cheque. I'm also planning on having kids soon.

There are many directions that this answer could be taken, but I'd sum it up with this:

  • Do anything you can, when you can to prepare for the future

I'm of the opinion that in the software industry a breadth of knowledge is overrated, and having real experience in the industry, with a reputation for getting things done, is underrated. That said, this comes with the disclaimer that you need to be knowledgeable enough that you can easily shift over to a new role, and get up to speed rather quickly.

However, the Italicized seems like it may not be totally true for you, which would be the core of the problem.

So with that problem in mind I would start from the standpoint that if you're already demonstrably competent in a subset of technologies, then we can infer that you would be competent in the technologies that you don't already know, if you had enough time to learn them.

So it boils down to time and the statement that I mentioned above: do what you can, when you can.

To me there is a misconception that learning new skills in software means you need to be hunkering down and building side projects in all of your spare time. I don't think that's true. Learning can look like any of the following:

  • Reading books on languages, design patterns, frameworks
  • Forking projects on Github and reading them rather than writing them
  • Dabbling a bit in free coding tutorials online

To me it sounds like you're overestimating how difficult it would be to actually learn some of the new technologies you don't already know, and then subsequently sell your ability to use them. It also sounds like you're underestimating how long it takes literally any developer to get up to speed in a new role.

Yes, it will be tricky to squeeze learning into your already busy schedule, but it sounds like that may be what you need to do. Then if/when you change jobs, hopefully you can minimize any type of pay cut you need to take, if at all.

And hopefully your already demonstrated history of competency in the industry carries more weight than you realize.

-1

At this point in your career, part of your problem may be that you are trying to ensure you have all the same skills as your subordinates who may be fresh out of skill and trained in the latest languages and you're trying to do it in a self-taught manner. This isn't typically feasible or practical to do, especially considering your responsibilities.

In engineering, to compensate for this, it is common for us to engage in continuing education throughout our careers. We aren't in the office for a day or a week as we attend seminars and conferences that give us a chance to learn new skills. These are part of the job and effectively training, so we are paid for these days. If there is something comparable for programming languages you think you should learn, then you need to attend those and those need to be part of your standard workload for the week.

If you think you absolutely cannot be away from the office for even a day, then I think it's time to focus upon ensuring you are training up a subordinate to serve as a manager when you're not around. But from your post, I didn't get the impression that the world ends if you take a week for vacation or are caught in client meetings all day.

If hours worked is an important thing for you to keep track of, it's probably important to ensure that the company has the correct perception that a higher percentage of your time needs to be allotted to overhead costs. If they expect 100% billable hours from you every week, then I think you need to address that to ensure it's corrected. From what you described above, I would think your billable hours are probably in the range of 50-75%.

-1

I don't have time right now to make a complete answer, at least not as long as your question is, but here are already a few pieces of advice:

1) Don't let your "lack of knowledge" turn into the impostor syndrom, as your nickname might indicate. There are many companies and many jobs out there which certainly don't require top-notch skills in the most recent technologies. Simply because many companies can not afford to rewrite their whole codebase, or train their developers, each time a new technology appears. So there's still a lot of old code and even a lot of new code still with older technologies. You can either oversell yourself and then learn the new technologies on the job (assuming you can pass through the technical tests) as you always did, or simply emphasize your self-learning skills. I myself prefer the second approach because I tend to believe the skill to learn new skills is more valuable than the skills themselves. I'm also quite confident that a lot of recruiters out there think the same way: things changes a lot, and fast, better have people than can adapt to change.

2) If you don't feel confident enough with this approach, you might want to look for a different kind of job where your technical knowledge and experience have a value but where the details of a given technology are not that important. I'm thinking jobs like (functional) analyst, ops engineer or even team lead or manager, but there are a lot of other denominations you could fit in. My point is that at a certain level the technical details (which language, which framework, ...) are less important than being able to get a big picture and knowing the underlying technologies. For example, having a good idea of how http works can help debug a lot of issues with a web application was this application in .NET, PHP or Java...

From where I see it, you seem to be a good professionnal with a lot of qualities. You also seem to be pretty confident about these qualities, I would certainly emphasize these in any job interview rather than focussing on the technical side. It may not work each time, but you can certainly find companies looking exactly for what you have to offer.

-4

You will just need to transform yourself to a non-technical software manager. Being a manager you don’t need to do any technical programming. You hire junior developers, manage their progress and finally report their results in your own presentation. Many people do that, that’s how everybody move up in career.

  • Set high level goals and objectives
  • Prepare PowerPoint presentations
  • Being the scrum master for your team. Everybody else has to report something to you
  • Force deadlines
  • Code review everybody but yourself can’t be code reviewed

Forget you are a a software developer, aim yourself to a management position. Leave those IT tasks to new cheap graduates. They do your works but you take all their credits.

Sorry I don’t see why you would want to stay technically in your current situation.

  • All makes sense to me. – Fattie Apr 25 at 15:14
  • 1
    But how do I move into that position? We don't need that role at my company, it's too small. I am at present the only developer (the most we've had is a team of 4). I am already basically the scrum master. I doubt I would be able to land a job paying the same money with the same benefits, as a manager of some kind. – ImpostorSyndrome Apr 25 at 15:22
  • @ImpostorSyndrome you prepare yourself. Apply for those positions once you are ready. One way or the other you may have to switch job unless you want to stay forever – SmallChess Apr 25 at 15:23
  • 1
    "But how do I move into that position?" you need to create it, you're in charge of development that's not small peanut or some middle level managerial thing, you need to sell the idea that new hires are needed so you can focus on adopting new tech, now if the ceo believes only 1 guy is needed for development that is now the problem – user86742 Apr 25 at 15:59
-7

"I am still at this same job. I have been here over 10 years..."

This is why you constantly hear that programmers should not stay in any job too long. And in particular, it is usually a problem to stay in your first job more than a year.

The reasons are obvious, and are a restatement of the nature of software:

  • Software changes continually, the nature of being a programmer is that you have to be incredibly agile.

  • Software is completely self-directed, self-learned. "Nobody can help you." To stay on your toes you have to push yourself regularly.

  • All programming is "new creation", nothing is the same twice. new products, companies, teams keep you in the software mindset.

"I am stuck..."

Not really! You've just realized a couple years too late that it would be better to change jobs. Solution is - just change jobs.

Your bullet points...

I don't know how to catch up with the industry..

Every programmer is constantly behind. I know utterly nothing about what I'm doing. It's all completely new and never done before.

Leaving my current job is a huge risk.

Programming is (A) incredibly well paid (B) has zero security. Same for everyone.

I have thought about changing career.

You won't make as much money in other fields

I have thought about going freelance.

Great, do it

I have thought about starting my own business.

For almost all programmers, this is a bad idea. You can make more money programming for others - freelance if you like the flexibility.

  • 3
    "it is usually a problem to stay in your first job more than a year." I believe it strongly depends on a lot of factors. It's hard to state this without more background. There are lots of companies where one starts with a trainee and works on it for years. Likewise, you can have 15 years of experience and work one year or two in a company. – Tiago Cardoso Apr 25 at 14:36
  • @Fattie I can't figure why this is downvoted, i mean, besides the "The reasons are obvious" bullets, which depends on the work environment, the statements are very IRL accurate. Perhaps you can elaborate more about your reasoning. – darklightcode Apr 25 at 14:55
  • 6
    I downvoted this answer, because I assume anyone who stays at a job for less than 2 years was fired for poor fit/incompetence, especially if it is their first job. – Joe Apr 25 at 16:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.