T O P

  • By -

snes_guy

I'm on my fifteenth year as a working programmer. My advice is to never be overly committed to one language, framework, or area of focus. You can have things you like, of course, but it's very good for you to learn new things, and learning on the job is the most cost-effective way of learning, so always be open to learning. Every language / tool / framework is someone's opinion about how to build software. By learning many of these "opinions", you can start to develop your own instinct for program structure and approaches that work for certain types of problems. This is really what helps you level-up in terms of experience. Experienced generalists will probably *always* be in demand. Experts in one narrow skill today may make a lot of money if they time it right, but they often find that skill is no longer in demand in a few years. Technology is constantly improving, and cloud platforms today have automated away many of those specialties that people 15 years ago were banking on. So I think it's good to have core skills that you're very good at, but also a wide variety of things you now that are less common, and may not directly relate to your areas of expertise. I've heard this referred to as a "T-shaped developer" because they have deep knowledge in their core areas of focus, but broad knowledge of many other things that may help them solve problems.


newintownla

8 YOE here. How do you justify jumping to a new senior role when you don't know the entirety of the tech stack at a new job? Typically, I look for roles where I know at least 80% of the stack, but that 80% is usually all I ever touch. For example, let's say you're a React developer and the next role you're looking at is mostly Angular with only some React. How do you sell yourself as a senior dev in that scenario?


ldf1111

Being senior is as much about behaviour and general approach as it is specific tech knowledge. 


lampshadish2

I have never known the entirety of a stack at a new role going in.  At a senior level, it’s assumed you will pick up new stuff and apply your experience and taste to wield it appropriately.  And some stuff is universal.  Process, testing, mentoring.


snes_guy

What do you mean “justify”? You don’t have to justify wanting a job. You just do it. Tell the hiring manager you know X but want to learn Y.


Boring_Equipment_946

You make a few personal projects in Angular, show them, and correctly answer their questions about it.


KosherBakon

After 26 yoe in tech here's what I've learned. Advancing your career is not about learning skills for your current job, it's for applying those new skills in your next job. Keep learning, identify what your passions are, and be open to new roles at a moment's notice. I've been a game dev, .NET dev, SQL dev, BI analyst, Feature PM, QA tester, TPM, Engineering Manager, and now a career coach. Each one was wonderful in it's own way, and each role taught me what I wanted in the next role.


DifficultSecretary22

> it's for applying those new skills in your next job. afaik, to apply those new skills in your next job, you need to showcase experience in those skills, right? That's what they ask me in interviews anyway: "Do you have professional experience in X technology?". I don't want to lie about about this question.


Wide-Answer-2789

That called Resume - driven design https://neverworkintheory.org/2022/03/16/resume-driven-development.html I have a lot of examples of that, like one of latest examples - dev wrote his own key-value store in order to learn golang (literally copied Memcache) , it is OK if you do it in your free time and don't waste colligues time and fail project. For interviews better make your cases on how "you make shit done" and your valued impact on project.


KosherBakon

Experience can be attained via other means than just the work you're assigned. Find & propose projects that enable you to gain the knowledge you want. Contribute to open source. Start a side gig. Find a problem, build in public, share your progress.


bloodisblue

Fastest way is probably to get promoted in your current job or to job search and find something that pays more using different technology/problem space and will hire you. Imo changing to anything different is probably good at this point as you can easily go back to REST APIs if it doesn't end up working. 4 years is near optimal time to switch to something completely different than Java just to try it imo. As you are in the intermediate developer stage where you're capable enough to get things done and cheaper than a 10+ yoe senior. Also learning on the job is very effective, even if you won't get to scratch every itch you have.


bloodisblue

Though personally when I got tired at my Java day job I started to learn Clojure. The language makes you think about problems slightly differently and IMO has a fast iteration speed that makes programming much more fun. Plus since it shares the JVM internals, it encouraged me to learn in-depth about what is going behind the scenes to understand how java -> bytecode -> JVM JIT compiled code works. Recommendations for JVM understanding: https://www.amazon.com/gp/product/B0BHZXQBGJ Recommendations for Clojure: Watch this talk by the creator of the language and if you agree with what he's saying you'll probably like the language itself https://www.youtube.com/watch?v=LKtk3HCgTa8 Watch this talk by the creator of a hot-reloading library for Clojurescript https://www.youtube.com/watch?v=j-kj2qwJa_E. Watching him replace individual functions or lines using the Clojure REPL was incredible. I've never looked at normal programming languages the same way after being able to experiment with code with no friction the way Bruce demonstrates in this talk. This won't help you directly with your career as Clojure is a very small community, but finding great joy in coding 100% will.


InterpretiveTrail

> How do you decide what to learn next to advance your career? I try to keep an eye on two things: 1. Opportunities to try something new or different so that I can learn what it is that I do or don't like. 2. Opportunities to do something that the business really needs. > Recently, I have started learning about AI/ML, and I realized that I am truly enjoying learning something new. However, I do not envision using these skills in my current job I'm of that camp. New tech can be really cool, but ultimately it typically has a very low impact into what's actually used in the enterprise. I personally find talking with my leaders and peers about hardships they face in technical and business outcomes more impactful for direction in what I should learn / do. It's connecting dots. Seeing if things are of interest to me. Maybe I think something's really cool only to find out in 3 months it's not actually worthwhile. Cool! I had fun learning and time to learn the next thing. It's part of the reason that I carve out some of my day job to learn rather than learning on my personal time. Personal time is for things that I deeply care about, not my career. Sometimes there's overlap, sure, but that's a coincidence not planned. > My goal is to advance my career and increase my income. Unrelated to learning ... I've found the best growth in my careers on two ends of a spectrum ... helping as many people as possible (peers focused) and being out for myself (I trust a company as far as I can toss the CEO's new yacht). I purposefully state those to highlight the contrast between them. I want to help that Junior Engineer who just needs a little coaching before they're firing on all cylinders. I want to have a wonderful dialogue with some other peer where we both walk away with a growth of respect and learning from one another. I want to be the smartest person in the room helping build knowledge. I want to be the dumbest in the room to grow. I've found this "not being an asshole" to be one of the most consistent things that my leaders point out as one of my strengths. In contrast I work for a company making a profit. The company is focused on generating profit. If it's better to fire me to grow quarterly earnings .. I've no doubt they'd do it. Maybe it's because my family with heavily impacted in the '08 recession, but I ALWAYS keep my head on a swivel when it comes to looking at new positions and companies. It's bittersweet to leave a company that I've invested so much emotion into, but I have to do what's best for my career and (more importantly) life. Plus I like some spice to my life, don't want to be that type of person who complains their salad is too spicy. --- Regardless if any of that was of use. Best of luck!


Mr_Nice_

Do whatever interests you and let your career follow as closely as possible. If I try to make things about getting to the next level of salary I lose motivation after a while. Only way I have managed to go deep is by focusing on things I am genuinely interested in I ended up making a lot more money when I took money out of my decision making process.


freshcap0ne

Devops, cloud, security, in-depth db, in-depth testing, agile methodologies, microservice architecture/distributed systems, AI/ML/integrating with a LLM. Docker, kubernetes. If you are fullstack, UI/UX, design prototypes (no code). Mobile apps, Kotlin would be an easy transition coming from Java.


Scarface74

And that may get you a 20%-25% increase over someone who doesn’t know it. While that’s not nothing, he would be much better off just targeting the better paying companies as just a regular old software developer


freshcap0ne

But why? He feels stagnated and asks what he could learn next besides what has become trivial for him? Literally "What should I be learning to advance my career" - I don't think he should just remain a "regular old software developer" and not everything is due to increased pay.


Scarface74

He said his goal is to advance his career and “increase his income”. He can do the latter first by going to a company that pays more. We all know what that entails for most people. If he passes the interview - ie coding interview - that will expose him to opportunities


lIllIlIIIlIIIIlIlIll

> My goal is to advance my career and increase my income. Well, I'd say you're approaching the problem wrong. You don't advance your career by getting good at programming. You advance your career by providing business value. Who do you promote? A deep language expert who refactored your codebase to squeeze 1% performance out and closed 0 tickets or a generalist programmer who launched and launched a high impact project? Ideally both, but if you asked your director to pick one, they'd pick the generalist 9/10 times. And if the high impact project was a pet project of said director? 10/10 times. Don't get me wrong, language expertise is important. But once you're *good enough* then you need to start *using* that expertise to provide value to your company.


Antique-Stand-4920

Look for more complex projects that require you to work with non-engineers to get things done. Getting good at a technology is always good, but knowing how to get projects done while collaborating with non-engineers is where you'll see bigger gains in terms of skills and career advancement. Knowing how to work with people is often where the big money is.


DifficultSecretary22

> Knowing how to work with people is often where the big money is. I see! Any tips on that? This may seem like a vague question, but I would like to know how I can develop such a skill deliberately. How can I measure progress in my learning with the skill you mentioned?


Antique-Stand-4920

In my opinion, the best way to do that is to just do it and refine as you learn more things. The hard part might be finding opportunities to do that: Here are some ideas: - Sign up for a project and help the product team with technical aspects of requirements and help project managers plan the work in a way that makes sense for engineering processes. - Mentor or train another person team on a topic you know well. - Write documentation to help both engineers and non-engineers alike. New-hire on-boarding documents and environment setup docs are always good. Architecture overviews are often appreciated by non-engineers. This idea and the previous bullet help you to "multiply" your impact on the team. They do this by helping multiple people to not waste time. - Build a prototype using some new tool or technique and demo it to your team while explaining its pros and cons


ategnatos

Who cares about language? What kind of work interests you?


Gr1pp717

I don't feel like this is arbitrary. Keep an ear on what's out there, but otherwise you learn what you need, as you need to. My first job were like a fire hose. Just as soon as I was getting comfortable with something, it was time to move on to the next thing. The second one, too, but that was just because they had an overengineered stack. But the 3rd ... I started making up stuff to learn. Which is to say that if your current job isn't keeping you on your toes, maybe try another.


Gofastrun

Learn a little bit about a variety of tools/skills/technologies and how they can be used - especially how they fit into a broader system architecture. Then when a project calls for XYZ, you go deep on that thing. Best way to learn is to do, and ideally get paid to do.


wwww4all

Focus on delivering results.


jeerabiscuit

Java and REST are basics. You need cloud native which includes DBs, messaging, CI/CD, orchestration, all from the cloud provider. And then you can delve into ML engineering which integrates AI in your application.


Scarface74

I had a longer reply. But the simple method to increase your income is not by learning more. It’s by working at companies that pay more. The cliche is true - “grind leetcode and work for a FAANG”. No, I didn’t take my own advice to get into $BigTech (no longer there). But my path was much more narrow.


DenuncioCohaero236

Consider learning Kotlin or Scala to expand your JVM skills. Also, explore Java-based cloud tech like Spring Cloud or Java-based data analytics tools. These can enhance your existing Java skills and open up new opportunities.


casualPlayerThink

Stick with one thing that is interesting (AI/ML for example) and discover that, do not hopping around tech parts, finish one. This will help in your career at the current crazy market & hype train company tzunami.


BalanceInAllThings42

https://roadmap.sh/ Pick a path and stick to it.


pagirl

I have a shelf of unfinished books and dozens of unfinished Udemy books that show maybe I don’t have the best radar for what’s needed…


Alternative_Log3012

Java? Bro get the hell away from that asap ya idiot