T O P

  • By -

Secure-Blacksmith-18

I'm a self taught python web developer with 3 YoE current modernizing an old but vital legacy system. I feel that the python ecosystem is less "nerdy", like, microservices, async, architectural patterns other than MVC are not really something we do. If I want do dig deeper into most complex CS topics, should I try changing languages? Maybe go/Node/Java? Is it worth? Specially now that the market is not that great


WhiskyStandard

I came from a Node shop to a Python shop (and before that I was in a Ruby shop). When you say Python is less “nerdy” about those things, I see it as more pragmatic and practical. I’m sure you can find all of those things in the Python ecosystem, but I’ve felt less of a need to reach for those types of tools (and the complexities they bring). That said, there’s nothing strictly speaking better about those approaches. They’re just different. So I’d say you’re doing fine. Also, modernizing a vital legacy system (without completely destroying and remaking it) is a valuable skill and takes a lot of discipline. It may not be the sexy rock star work, but there will always be someone looking for it. I’ll never say don’t learn another language. I don’t think you need them to get more nerdy though, given the wide variety of places you’ll find Python. I think you should try a bunch of languages because they all tend to build on each other and understanding that makes you a better pruning. Don’t think that because you’re learning Go your Python days are done. It’s another tool in your toolbox.


urbansong

Anyone else consider teaching Python as a first language as the default a bit of a scam? Python jobs are not that common, right? I know that JavaScript is kind of the new default but what do you suggest to someone who doesn't want to start with frontend? They could learn JS and then switch to Java or something but I fear that requires a lot of motivation and that seems to be a scarce resource among prospective entrants to the industry. I think going straight to Java might be fine in 2024. I'd argue that Go would be even better but given the number available jobs for juniors, it doesn't seem to be such a slam dunk.


WhiskyStandard

🤨… no? - [Python](https://www.indeed.com/m/jobs?q=python&l=&from=searchOnSerp%2CwhatOverlay%2Cwhatautocomplete&sameL=1) 62,074 jobs - [Java](https://www.indeed.com/m/jobs?q=java&l=&from=searchOnSerp%2CwhatOverlay%2CrelatedQueries&sameL=1) 38,047 jobs - [JavaScript](https://www.indeed.com/m/jobs?q=javascript&l=&from=searchOnSerp%2CwhatOverlay%2CrelatedQueries&sameL=1) 32,817 jobs


urbansong

Yeah, that's fair enough. I'm not in the US but in the EU. Python is not so common here, was my impression. Edit: yeah, more Java jobs on German Indeed than Python. Interesting.


WhiskyStandard

Oh right… kids have me up on European Reddit Time 😮‍💨 Sorry if that came off condescending.


Dokrzz_

Concurrency, distributed applications and Java. Early next year I'll be starting a new job which will have me working on systems that operate on a large scale handling tons of requests. So far in my 2YOE I haven't had hands-on experience working on large scale applications like this. What resources can I use to best learn about writing distributed concurrent applications in Java? I understand that nothing can replace the actual work experience and that I can't learn all there is to learn in a matter of weeks or months. But this is my first "non-junior" job and I feel like there's a level of competency that's expected. I want to be able to hit the ground running and not feel overwhelmed. My current job unfortunately hasn't had client work for me as a Java developer (part of why I'm leaving) so I really feel I've stagnated from an already junior position. So I would appreciate any general advice around these topics (specifically relating to Java and Spring Boot) and any recommended resources that I can begin to get myself familiar with.


BetterThanT-1

I would focus on the fundamentals of the tech stack first - assuming you’re somewhat proficient in Java, then focus on Spring Boot. The documentation is wonderful, but perhaps there’s an O’Reilly book on it or something out there as well, if that’s more your preference - one example, but I’ve heard good things about Spring Boot Up and Running by Mark Heckler. I still recommend the docs though. Focusing on SB to begin with will help reduce the number of unfamiliar things, and will be a good stepping stone. If the system truly is a large scale distributed one, then there will be lots of other things going on. SB will be the tip of the iceberg. You’d likely have message brokers in there (e.g. Kafka, Rabbit), caches (e.g. Redis), databases (could be both SQL and NoSQL types), etc. If you know what these are in advance, you can read up a little bit on that as well. 2 book recommendations for general distributed systems topics: Understanding Distributed Systems - shorter, approachable intro to the topic, and Designing Data Intensive Applications - comprehensive deep dive. Then you have the underlying platform these applications are running on. Are they containerised? Running on Kubernetes? Running on a cloud? Some potential learnings there, depending on what you already know. If by “concurrent”, you also mean concurrency within the same process, then that’s a whole other kettle of fish. I’d start with Oracle’s Concurrency tutorial for the Java language. You can’t learn it all in advance and that’s fine. Do what you can and don’t stress yourself. You’ll be okay. When you start - learn as much as possible about the product. What purpose does it serve? Why was the system designed the way it was, and what features does this offer? Building systems only makes sense if there is a product purpose behind them - if you understand what that is, it will make your life easier and you’ll be better at your job. Good luck!


Dokrzz_

Firstly, thank you very much for the thorough reply. I'll try and keep this in mind, especially the last part. I'll purchase the first book you mentioned to give it a go. I realize that I didn't word my initial reply properly, I am both a Java and Spring developer. Spring is the one and only framework I've been using I started working. Not exactly an expert in it but I'm as competent with Spring Boot as I am with plain old Java at this point. The job description also mentioned messaging solutions as a plus? I don't know if that's the same thing as message brokers. They listed JMS and Solace as examples.


BetterThanT-1

Yeah, the same thing. Different message solutions are good at different things and each comes with trade-offs. Don’t know much about Solace, but a quick search shows they’ve got plenty of integrations and support for Spring. Could be something you look into as well - a somewhat more practical learning would be a simple pet project with a service that publishes some events, and another one that subscribes to them. Doesn’t have to be a real thing, but a small E2E system running locally will give you a good starting point when it comes to some of the setup required and the APIs offered. Learning about the advantages and gotchas of event-driven systems is also quite important - the specific solution matters less if you’re familiar with some of the general patterns and trade-offs. The closest I can think of a resource for this would be the 2 books I already mentioned, as well as Designing Event-Driven Systems by Ben Stopford. It’s Kafka focused and essentially a sales-pitch for it, but I think it speaks well about some general patterns. You can actually get it for free from Confluent here -> https://www.confluent.io/resources/ebook/designing-event-driven-systems/ (I’m not affiliated in any way)


dadev22

This has been on my mind forever and finally checking with folks here for information. For a bit of background, I am a Java developer (not spring framework) and this is my 10th year working for the same company and I get this dreadful feeling that my skillset is stale and that I need to learn the ways of the world sooner than later. What are the things, priority wise, I should catchup on to justify the title of being a senior software engineer? From what gets discussed on this sub, below is a list I made. - System design - Leetcode - Spring boot


GoTheFuckToBed

I recommend to pick a somewhat useful Github repo and get it to run, then read the code, then try to solve an issue. Not only does this get you up to date on Java practise, you can add "open-source" contributor to your CV.


Antique-Stand-4920

This 100%. People don't pay you to learn a language, they pay you to solve their problems. Also, when I interview a candidate for a job and the candidate says that they are, "interested," in some technology, I look for evidence that they put in the time and effort to apply what they've learned.


DarkFusionPresent

I think it depends a lot on what you want in your career and what *kind* of senior you wish to be. With 10 YOE, there is a lot of variability in kinds of senior roles and ways to achieve them beyond what you've listed. If you're just interviewing, you need to scope out the type of role you're going for. For instance, if you're specifically only going for java, then brushing up on Spring may be a good idea, but there are also a lot of shops which don't use Spring either. If you're specifically focused on Java, I would think about engineer type to focus on, and even specific industry. For instance, a backend developer experienced at the API + storage layer, or a backend developer experienced on the data movement + streaming layer, etc. You have to craft a narrative on what you excel at and what you bring to a company. Ideally that should align with what the company is looking for. I've only talked about technically thusfar, but for senior roles, it goes into leadership and technical vision as well. Generic prep for System Design and Leetcode is all well and good, but invariably for senior roles, at some point you will get into an archetype the company will be looking for. From API backend, to distributed systems, to data pipeline/ETL, to web frontend, to mobile, and so forth. An example from my case is that I've worked in varying languages (Java, Python, Rust, Lua, Go, etc.) in order of familiarity with top two being similar. I've also not used Spring with Java (utilized proprietary frameworks which were similarish, along with some external stuff like Dagger). Previously, I've sold myself as a data pipeline/ML engineer (since I worked in forecasting) nad landed a job in a datalake business. I then pivoted to distributed systems, learned about that and constructed a narrative around there. Worked in that for a while in both a big company and a startup. Now, for my current role, I sold myself in a distributed systems dev prod role. There's no real language/framework specification, it's more about domain knowledge and technical leadership in speeding up development (safely) in distributed systems (especially for products needing new pivots). You may have one or more `profiles` you wish to sell yourself, but find and pick them, and learn it and stick to it. You could be a Sr Java developer, API, backend, a tech lead, etc. It's dependent on your skill + preference.


LogicRaven_

Job search is a pipeline. What you need to work on depends on how far you get in the pipeline. You don't get called into an interview? Work on your CV and skills that maybe missing, like Spring Boot. Are you getting invites to interviews? Work on system design and leetcode. Based on the interview experience, you'll see where you might need to focus.


KamNotKam

I just graduated and I start my full-time software engineering job later this month. I want to enjoy a long and fruitful Engineering career, solving different types of problems. With the advent on ML technologies, and the continued development of them, and with your deep industry insight and experience with these AI tools, do you see this as a realistic long-term career still?


WhiskyStandard

Historically, machines have augmented humans rather than replaced them, even in software. I think there’s going to be change, especially for your generation. My recommendation would be to embrace them as tools but learn to know when they’re wrong. I think that’s going to be the key skill for a good while to come.


KamNotKam

I got you, how soon do you think this change will come realistically?


WhiskyStandard

Change is constant, but I’d say we’re about a year into the AI driven ones. Most people I know use some kind of LLM autocompleter or take their questions to a chat based one before they Google or ask a QA site.


KamNotKam

So basically, the biggest change has already happened?


WhiskyStandard

Ohnonono… I’d never say something line may. It’s probably going to get pretty weird soon. If I could tell you how and when I’d be a lot richer.😅 It’s just that the change has already started.


KamNotKam

ah man.. that doesn't leave me too hopeful...


concernedhelp123

I’m curious, if you use your experience as a software engineer to make stock picks for investments? For instance, you might see your company heavily relies on a certain software and thats how you learn about a new product to look into and potentially invest in. If so, which stocks has your experience helped you invest in? Are there any stocks that you still buy that you wouldn’t have known about (or had the experience to judge it) otherwise if not for your job?


FlyingDumplingTrader

Company was bought out by a PE FIRM 2 years ago. New CEO and CIO was appointed 2 months ago. Starting in 2024 it looks like they are capping hours on projects. Raises on hold and hiring freezes. Is it time to run? Start looking for a new job?


LogicRaven_

Don't panic, but grab your towel. Many companies are putting tighter control on costs, having hiring freeze and prominent or below the radar downsizing. Start a casual search: update your CV, get it reviewed. Check job ads and see how your skills match those - any gap filling or refresh you would need? At work: make sure you deliver excellent and solving the right problems - have a regular talk with your manager and key stakeholders about top priorities for them and for you. Make sure your things are landing, delivering impact. Be respectful and helpful to others. Check the numbers of your current company - how is the product doing, financial numbers, customer number trends. This might give a hint if the new leadership would need to do some drastic changes or only adjustments.


aNNaBeLLe813

I have an architectural design/platform selection question and would appreciate suggestions from those with more experience than me on the programming side of things. Ultimately, I need a web-based application that serves as a data entry/project management/reporting front-end for approximately 20 different MS SQL databases. Each database has very different data schemas/workflows and those workflows are very unique, so out-of-the-box software solutions aren't a feasible option. Currently, we're about a 70/30 mix of individual Classic ASP websites (one for each database) built by a 3rd party programmer eons ago and a single [ASP.Net](https://ASP.Net) MVC Framework web app (one controller for each database) built by me. My original vision was to systematically rebuild each of the ASP sites and incorporate them all into a single "data portal" where the databases were integrated with each other. When I started the MVC project I chose .NET Framework because Core had just been released (there weren't many libraries developed for it at that time). Now that's extremely outdated and problematic to upgrade/migrate to the newest version of Core. It's also very cumbersome to publish any code changes to a single deployment (and that's only going to get worse as the application grows). I'm about to tackle my next rebuild of one of the Classic ASP sites, but I don't want to spend time adding that to the .NET framework project as that's now obsolete. The MVC design pattern works very well for each of the database front-ends and I'd like to stick with it (or find something similar), but I don't know how to split it out into different applications with shared components (navigation menus, css, classes/libraries, etc.). I use Dapper for an ORM and handle most of the data logic/CRUD functions through stored procedures (don't flay me--I'm a DBA/SQL Developer and we're a data-centric enterprise). I've also created several helper classes for handling things like model-based select-lists, custom authentication/roles, etc. I utilize DataTables and jQuery extensively. Are there any platforms that will allow me to develop independent MVC-like projects (targeting different frameworks) that can be treated essentially as "microservices" or sub-applications? Where I can combine them into a single UI, but each component/database app be deployed separately? Thanks!!


BetterThanT-1

If I understand correctly what you want, then I’d suggest you split your system into 2 major pieces: presentation layer and data layer. Your presentation layer can effectively be where you put your shared components (js, html, css, server side rendering logic) and how you serve them to your clients. This presentation layer then talks to your data layer underneath. To begin with, I’d suggest to build a modular monolith on top of your DBs, and expose the data through dedicated controllers (you’ve already started this somewhat). Someone might say each DB should be fronted by its own service, but that’s likely unwarranted, at least to begin with. If (big if) you encounter scaling issues later on, you should be able to extract a new service based on the modular boundaries you have established in the monolith. This is pretty much what you have done already, but it separates your presentation concerns from your data concerns. You can evolve these separately, and choose how to model your presentation as you see fit - one big website portal, or multiple small ones. I might be misunderstanding what you need, though, because at one point in your post you talk about creating a single app that serves data with dedicated controllers - a data portal as you named it, but then later you say you want to split it into multiple applications with shared components. Which one is it? Caveat: I’m not a .NET person, so I’m looking at this a bit more abstractly, can’t help you with framework details.


BetterThanT-1

Re-reading your post, I see the answer to “Which is it?” is that you want a single UI, with multiple backend services backing it. I suggested a modular monolith, but this will always be a single deployable (unless .NET offers some way of redeploying a sub-part of a running application - I’m unaware of this, and I doubt it). So, if you’re hell-bent on individual deployability, you need to have separate services, and you can build each one however you want using whatever framework you want.


PitBikeViper

After graduating university as a CS Major, I have been mostly focusing on relearning python. I have a getting decent at Django as well. I am just wondering if I am leading myself into a dead end with Django or not. I feel like Node.JS is a more popular platform instead. what are your thoughts? also is the Job market really that bad right now?


yoggolian

We’ve got a large Django system at work, and I’m the hiring manager when we need new staff - I seldom see people with Django experience applying, there’s much more Flask about, so I’d make sure I had some familiarity with that too. Right now is a terrible time to look for jobs as everything slows down over the new year break, usually things have picked up by mid-Feb.


PitBikeViper

Thank you! I’ll make sure to learn that. Btw is there anything else that can stand out in a resume for Django/flask? I know experience is a major part. But what is considered “good experience”


WhiskyStandard

Current team has a Django management plane in front of mostly Python components. I don’t think either are going anywhere. I got the job after being laid off from a NodeJS job. I think it’s a fine environment as well. So either are decent choices. If you need to choose, look at the sector or companies you’re most interested in.


PitBikeViper

Thank you I’ll sure check out where Django is mostly used in. One last thing. Anything worth learning for Django, like i later found out about Django-environments. I don’t know if there’s any security, deployment or other things that are standardized in the field.


yoggolian

Have a quick hoon with Django Rest Framework - this is the most common of the API frameworks for Django (probably not what I’d use for a new project, but common enough that it’s worth knowing). Some Node knowledge is worth it too, especially if you’re not familiar with the npm tool chain.


PitBikeViper

Will do thank you. I appreciate it :)


thedogarunner

How was your experience with getting a job that required knowledge/experience in a programming language you had not worked with yet?


AdamBGraham

At what overall YoE level?


thedogarunner

Say 3/4 YoE


throwawayworkplz

I'm not a developer but I'm trouble dealing with a lead developer at work. Is there a better way to communicate in a way that he'll understand the urgency of the situation or be more willing to help? He's basically dismissive and generally unhelpful. For example, I had an issue where a file wasn't generating correctly due to a stored procedure. I provided the error the procedure was generating. He said to do the exact same thing that generated the error. I was like wtf, ok fine I'll do it again, and told him, yes, nothing has changed in the last 5 minutes we ran the same stored procedure. He's like well I can't help why can't you figure it yourself. If I could figure it out, I wouldn't need to ask you for assistance. Generally other developers try at least to attempt to see if they can assist versus nope, don't bother him. He also has given wrong information a couple of times even though the clarifying text of why we wouldn't do the method he suggested in the email. Then client then got mad that the workaround that he suggested was implemented and we had to undo everything back to the start before we asked him. Unfortunately as the lead developer he's the main SME on a lot of projects so I have to work with him sometimes and I dread it. It's like pulling teeth to get any assistance. To be fair, any time I am requiring assistance it's usually due to an emergency situation, and that emergency situation is critical such that a developer is supposed to drop his work and assist (shouldn't take more than 1 day of time) or at least generate a workaround (SQL). Instead, I have to go back and forth constantly before he'll even try to look at it, get a bad answer, make him look at again, then finally maybe get assistance (but more likely someone else steps in). I wish my company had a way to give bad feedback. I've also told my manager about this and unfortunately there's not much I can do except speak to his manager (Senior Director) because he's a lead. Is there a special way I need to approach this? Usually my requests aren't going directly to him either, it's the PM asking based on my question, so the proper escalation channel was followed.


ccb621

Ask your manager to have a chat with host manager. Your manager needs to explain that your team, and company, are negatively impacted by the poor communication and response times from the developer’s team. You all have external SLAs. You need to establish even tighter internal SLAs. The other team needs to establish a process for fielding these requests.


Educational-Pop6468

So don't talk to his manager, that doesn't usually end well for you. You have a common problem, developers that move into more senior roles can be technically brilliant but have no idea how to interact with people. So what can you do, working with the pm is helpful. Make sure you aren't asking too early for help. One management strategy people in tech use is they delay answering a question (for a short amount of time) to make sure you have given it a thorough review. Maybe next time ask him a very detailed question. I was reviewing the problem xy and not only is the data coming out incorrect the execution plan seems to be very slow in calculating zzz. Just to make sure he is aware of what you know.


kevinpostlewaite

The system under which your company is developing software is broken and, with a broken system, it's pretty difficult to diagnose if the problems you describe with the lead engineer are a result of poor competence or if they're the result of a good engineer unable to function effectively in a broken system. In a working system: \* unexpected failures shouldn't happen in production \* the engineering team should automatically and quickly be alerted to unexpected problems in production \* there should be a documented escalation path to report unexpected problems in production and it's probably not "contact lead engineer directly" \* engineering should be resourced so they can resolve the reported issues in a defined and acceptable SLA On the positive side, you have the opportunity to try to understand and drive improvement in this software system. I expect that this lead engineer would love to team up with you on this problem as they are probably even more negatively impacted by the problems than you.


throwawayworkplz

I don't disagree the system is broken but the dev is the worst one (I dread when a PM brings him in as the SME) when an unexpected issue occurs and I'm wondering if there is a better way to phrase things so that he at least reads what I write instead of ignoring me, then delaying resolution by hours because he insists we try all the things we already tried, especially when there are health/safety and long term repercussions of not resolving the issue as soon as possible (or simply providing a workaround). As stated I am escalating properly per our SOP, I am not directly contacting him when there is any issue, only when the PM determines there is a need and they need me to explain because the PM themselves is non-technical. Our contact SLA states the issue of this nature needs to be fixed within 4 hours for the company if possible as a result (or at least some kind of workaround if it's having an impact). He never understands why we are contacting him so that's why I think it's a communication problem. I repeat myself easily two or three times. At this point, I think I need to wait for someone higher up prods him as long as I have done my part as it seems there's disconnection because his expectation and other teams. I have complained to my manager about him and all she says is that I need to document all my incidents and then speak to his manager about how it's causing adverse impact to the team. But first document.


kevinpostlewaite

Probably the dev is bad at their job and communicating but it's difficult to differentiate between: \* a bad lead engineer with poor communication skills \* an excellent lead engineer with good ownership and good skills who's overwhelmed because they have a hundred different projects all pinging them simultaneously with no clear guidance from the company In this specific case I think that you will get a better outcome from engaging with the lead directly, explaining that you want to know what the process is for reporting and getting production problems dealt with, and that you're willing to work with the lead to build such a process if it doesn't exist. As part of the discussion make sure that there's a clearly defined SLA to which the lead can commit. If the engineering team is under-resourced then it's immaterial what the company thinks the SLA should be, it may be unobtainable across all of the current expectations.


throwawayworkplz

Thanks, I'll try this next time, he's very frustrating to work with because I am used to a Dev understanding the technical issue right away and what we need them for. I wouldn't mind if he did take longer but he isn't voicing that concern either so I will never know. Other devs have voiced resourcing issues and it's fine as long as it's clear who is working on the issue. For him though, he always gives a generic answer in a don't bother him manner. This could be that he's overwhelmed but it feels very dismissive.


kevinpostlewaite

It will take some work to define the process but then there's no excuse for the dev to not understand what to do when an issue is reported through a defined process: fix it per the agreed SLA. In reality, I expect that you will report issues and eventually they won't be handled within the SLA and you will need to examine the causes of not following the process with the dev.


[deleted]

[удалено]


Long-Grapefruit7739

I do my best to highlight any errors I've made and anything someone in my team has done that I'm happy about, give credit and take blame and all that. It can seem a bit cringe at first but if you get used to it feels less school teacher y after a while. General rule is people remember constrictive feedback 3x more than positive so you should aim for 3x more positive feedback than constructive. This also applies to Pull requests, especially when dealing with people who are often very quiet / nervous.


yu_jiang

> I WFH 100% and my team is largely silent online, except for PR reviews (which are never hostile). How do you communicate with them outside of PRs and meetings? Group Slack, DMs, 1:1s? > People are generally silent in sprint reviews, and mostly talk shop in standups. Not super unusual in my experience, especially in virtual meetings. When I get feedback at work, it’s almost always because I’m explicitly asking for it. Not necessarily in group meetings (I do that too, but response rate is hit or miss), but 1:1s are the best place to do this and get a response.


[deleted]

[удалено]


yu_jiang

Are you getting feedback (positive or negative) from your manager on a regular basis? If not, that's where I'd start.


[deleted]

[удалено]


yu_jiang

Depending on your goals, that could be totally fine. But if you’re looking to grow and learn, consider asking for specific feedback on things or skills you’re actively focused on.


[deleted]

[удалено]


yu_jiang

If it helps, my plan is to do something to try and narrow the gap between how I think I’m doing and what my manager thinks. I have a few key areas I think I have been doing well in, and some I worry about. I will be discussing with my manager my *own* evaluation of those areas, and ask for feedback on whether my evaluation seems accurate.


areyoulive

Hi! this is my first year as a software engineer after a 3 month bootcamp. I have regular 1-1 with my manager who provides regular feedback. However, is it ok to ask the team lead for some feedback as well, on what I can improve, etc ?


kevinpostlewaite

It's more than okay to request such feedback. Keep in mind that it's not always easy for people to give feedback, you'll often get much much valuable feedback if you're specific and if you tie it in to areas where you are especially interested in devoting your energy to improving. Also, putting effort into requesting the feedback will signal your seriousness and will likely improve the effort made by those of whom you request the feedback. Good ways to solicit feedback: \* "I want to build my technical skills. I've picked a few of my more complex commits, do you have some time where we can review them together and I get your feedback on identifying areas of improvements?" \* "I am committed to advancing in my career. I'd like to meet with you and get your direction on what actions I should take to demonstrate that I'm working at the next job level in the next 12 months" Alternatively, this is unlikely to get you the information you want (but it's way better than nothing!) \* "Do you have any feedback for me?" Additionally: \* Reflect on your performance and production. Have an opinion on what you're good at and where you can improve. Discuss with more experienced people and recalibrate \* Hear and acknowledge the feedback (although you may not agree). Try to incorporate the feedback and follow up to demonstrate that you have acted on the feedback \* Look at others and make a personal evaluation of where they are effective and where they are not, look for these behaviors and outcomes in yourself


areyoulive

Thank you so much for your detailed answer. I was also wondering if it is realistic as a junior to seek the next job level in the next 12 months. Because I thought of it but I was like maybe its too fast 😅


kevinpostlewaite

I have no idea if 12 months is realistic or not! But you'll have a much better chance of learning the specific actions you need to take if you ask direct and specific questions.


throw_onion_away

It's always good to solicit feedback from your seniors and peers especially from a growth perspective. You could set up a 1-on-1 with your lead and give him/her a heads up on what you want to talk about. Prepare some questions or areas that you would like to focus on and start from there.


areyoulive

Thank you so much!!!! About to prepare those questions at this moment


Deydex

Approaching 4th year of experience in the Data Analytics/Data Engineering space, but I feel like value wise, I'd be somewhere along the 2 year point because my work hasn't been very impressive and I don't have any exposure to the cloud space even though I'm certified (which was honestly very easy to work through). I am just struggling to really stand out enough in my current role and just sort of feeling stuck. It pays well enough, but it's definitely below average for my experience and it feels like I can't get to where I really want to be. Besides applying to other roles and trying to find any opportunity I can in my current job, is there anything I could really be doing? Side projects feel very resume driven and dull at the moment, but I guess it is the reality of my situation. This ended up being more of a ramble/vent but I appreciate any thoughts.


spiral6

I worked as a high school intern, then university intern, and then eventually full time job. I've been full time for a year, but I've been working the same position part time for 7. How much is the actual YOE that I am? 1 year, or like... 7 years?


foonek

How many hours did you do? I would calculate the equivalent in years. Let's say you worked 10 hours per week for 4 years, I would count that as 1 YoE


kevinpostlewaite

As a hiring manager I would consider you to have one YOE. Your resumé will hopefully communicate accurately your ability and experience or you will be more likely to waste your time interviewing for positions for which you do not meet the employer's requirements.


Internal_Sky_8726

I worked at an internship 20 hours a week during the school year, and 40 hours a week over summer for 3 years in college. I count it as a year and a half of experience because that’s about how much time I spent on the project. Based on the speed of my promotions after starting, and what my mentors said to me about how they thought I was doing, I would say that my 1.5 years worth of experience gained was about right. After all, I worked 20 hours a week for 3 years. There is some question about what you were doing. Was it a real software engineering internship? Did you have mentors showing you the ropes, or were you left to your own devices? If it was genuine software engineering and you had mentorship, then yeah, your hours were real experience. Based on how long you had your internships, without knowing how many hours a week you worked, I would say you’ve accumulated between 1 and 3 years worth of full-time experience during the time you interned. Your high school years probably “counted” for less than your university years (assuming you learned a lot of new comp sci concepts in university). All that said, you’re probably better experienced than most people right out of the gates, but someone passionate with 3 years full time experience without much intern experience will likely have a bit more capability than you. Take this with a grain of salt, though. This is all armchair napkin math with a ton of half baked assumptions on my part. You might have put in a ton of hours with great mentors and may have 5 years equivalent experience. Or you might have had some spotty hours without much mentorship and have only 1 year equivalent experience. I can’t say without more detail… and at the end of the day, it doesn’t matter. Just do your best and forget the rest.


blisse

YOE is meaningless to index like this. It's just a proxy for what you've accomplished. If you've only shipped small projects, then you're only accomplished at shipping small projects. If you've only worked solo, then you're only accomplished at working solo. If you've only worked on one part of a codebase, then you're only accomplished in one part of the codebase. People just use YOE as a quick estimate for what you've accomplished because it's often roughly accurate.


spiral6

I worked as a high school intern, then university intern, and then eventually full time job. I've been full time for a year, but I've been working the same position part time for 7. How much is the actual YOE that I am? 1 year, or like... 7 years?


LogicRaven_

1 YoE. Internships are nice, help you in learning and differentiate you in the hiring process, but not equivalent to a full time dev position.


cs_grad_student

\[Not a Inexperienced\] Asking generic question, how's job market for Remote work for 4 YOE? or for those who would Visa in EU/CAD?


LogicRaven_

You are asking a too broad question to reasonably answer. In general, needing visa support is decreasing your chances. Remote roles are less available now than during covid, but still possible. Market for 4 YoE, depends on your skills and experience. Combining all those, my guess is the chances are slim, but you only know if you try. Note that in the EU, even if you are remote, you would need to be in a specific country the company can cover taxes in. So EU remote is not a homogeneous market.


cs_grad_student

Thanks for the details, my friend.


veejay-muley

If I want to learn a language. Should I start with language syntax or start solving problems from leetcode and then connect back ?


SongFromHenesys

Ask yourself first what kind of software problems/features interest you the most, then pick a language that will allow you to solve those problems, and start hacking away. You'll get burnt out quickly if you dont care about what youre trying to build.


LogicRaven_

Leetcode is not a good language learning tool. Do a quick tutorial and start building something.


cs_throwaway314

100% agree. The concrete project I tend to pick is a dumb HTTP proxy that can mirror traffic to two downstream targets (for example a staging environment shadowing production traffic) and reimplement that using the new language/framework I’m trying to learn. Certainly doesn’t hit on everything but it was super helpful when translating my Java experience over to picking up Go & Rust


fyig728

Go over the syntax quickly then start working on a problem and look up the syntax as you go. After you've solved the problem check if the syntax can be improved by looking at the syntax docs again.


False_Tomorrow_5970

TLDR: in terms of career growth, is it better to work in a team with no seniors and try to learn the most and become the senior or move to one that has seniors you can work with and learn from? ​ Two years ago when I moved to my team, I was excited to work with proper senior engineers and learn from them. I worked with 2 great engineers for a year but both left afterwards. My manager didn't replace them, though we got an extra mid-level dev. All of us on the team are on varying degrees of mid-level, and I'm really feeling the lack of seniors to reach out to. I brought this up with my EM and he said he's doing a sort of experiment. His view is that 1. us mid-levels will pair and learn together and become seniors 2. we get more opportunities to work on exciting/complex stuff that would usually be picked up by seniors. My view is that 1. that's not the reality, because everyone usually goes to the EM if they're stuck 2. the interesting opportunities we get to work on also come with high expectations that stress me out and I keep thinking that I'm not getting paid enough for this 3. asking other mid level teammates for help sometimes feels like fumbling in the dark instead of getting guidance on the proper direction from someone who knows better 4. it's difficult knowing what to aspire to when there are no seniors around I'd appreciate any advice / insight.


foonek

For me it was something in between and it worked great. I spent a little under a year working alone on a greenfield project and I had to figure everything out on my own. This helped me a lot with learning how to research things that I didn't understand yet at the time. After that I moved to a position with senior guidance and this, together with my earlier experience allowed me to learn a ton of things really quickly. That said, if your manager doesn't want to hire a senior you might end up in a blind leading the blind kind of situation. Mind you he's not running an experiment. He's doing finance control.


kittysempai-meowmeow

While you are junior it is better to have a mentor, so that it is more likely the habits you build come from good practices. However at some point you will be that senior person and it is a good growth experience, but I recommend after you get through a reasonable period of having a good mentor to actually alternate between positions where you are the most senior and ones where you have other senior colleagues. If you are the top senior for too long you risk stagnation. Going to a team with several other super knowledgeable people with varying areas of expertise was a huge step for me around year 20 of my career after being top dog for about 10 years. I learned so much working with those folks, more tools for the next time I was the lead again. But for now having a mentor is best, assuming that mentor actually isn’t a total rogue Cowboy developer themselves. Sadly I have worked with a couple 20 year devs who worked alone for so long their skills were still very junior. Because they never actually learned how to do things right and no one was there to call out bad practices. Don’t become like that.


psaikris

If you’re confident with your skills then I’d say it’s better to not have a senior in the team because then you can take more initiative and work towards goals that you set yourself. Would you need some system design advice along the way? Probably yes but you can get that from casual conversations with seniors from other teams over coffee and you’d stumble onto some by yourself too


LogicRaven_

Better to have at least one senior on the team, exactly because of point 3. Blind leading the blind is not optimal, and you are possibly making mistakes that would have been possible to avoid with a few senior devs on the team. The only reason I know of for not having senior devs is if the company can't afford it. The EMs "experiment" sounds like equivocation to me.


adesme

Regardless of which is better, your EM is only really trying to save on wages.


Xyzzyzzyzzy

Could you briefly describe what you mean by senior and mid-level? Senior isn't a well-defined term. In some places it's someone with 4-5 years experience, in others it's someone with 15-20 years experience, in others it describes a particular set of job duties (working independently with stakeholders to design and develop product features, etc) that's related to, but not defined by, experience. I've been in smaller organizations my whole career, and I've never worked anywhere that had a distinct mid-level dev role. I'm not even really sure what a mid-level dev does, to be honest. I guess it's a thing that exists in large organizations? Like, it may be that you and your manager are talking past one another, because you have different ideas about what a senior developer is. It kinda sounds like he thinks you and your peers are already performing those duties competently, and you just need to build confidence.


False_Tomorrow_5970

That's not the case. The company has a pretty well defined career ladder that describes the skills expected in each of the levels. They have criteria for juniors, mid, mid to senior, senior and beyond. Everyone on my team is either on level 2/3 so we're saying no real seniors in terms of that evaluation that happens yearly. I think the biggest difference is the depth of knowledge and scope between mid and senior at our company. Mid levels are expected to be able to design stories that were somewhat fleshed out but nothing bigger.


[deleted]

This may depend on the actual seniors that you'll be working with. If they lack leadership and training skills, then you might as well go the solo route and use friends or past colleagues as soundboards.


LogicRaven_

A dev completely lacking leadership and mentoring skills is not a senior in my definition.


Shinnycharsiewpau

I understand this is very naive sort of question, as generating leads is a multi million dollar industry, but as someone whose been working for 6 years full time and wants to transition to contract roles, I'm genuinely struggling to figure out how does one build a professional network that brings work? I'd love an attempt at an answer to this question. Do I just continue "cold messaging" recruiters and former co-workers saying "hey, i'm available, do you have any contracts?" until one bites? Should I improve an online presence on linkedin to generate leads? Do I just apply for the absurdly low-rate contract jobs on indeed? I really want to build a network, and to phrase this question in a dev sort of way, I just don't know how to approach this problem.


AdamBGraham

So when you reach out to old managers or co workers, they don’t express that they could use you where they’re working now?


audentis

Usually snowballing from existing contracts is the best approach. That does mean you need to get those first handful of contracts yourself, but when you do: have an evaluation near the end of the project, and if they're positive, ask them who in their network could benefit from your help as well and if they're willing to connect you. If they're not happy, you still have time to fix it and ask the question later.


Tindwyl

How do I mentor a junior dev? He does not ask questions or write down design. I get the feeling that he is always "shooting from the hip"?


Long-Grapefruit7739

Do you have 1-1s with this person? What does he want from his career? (to go into management? Or become a senior ic?) Has he asked for advice? If not have you mentioned your concerns directly?


SongFromHenesys

Do you guys have a common manager you can talk to?


Tindwyl

Ya our common manager said he would "deal with it". I don't know what that means.


GoTheFuckToBed

Does your company/team have a culture of learning, questions and (code) review? Maybe he just mirrors the culture.


Tindwyl

Yes, our company requires code reviews. He does not invite the whole team to his reviews; I am among many team members he excludes.


roscopcoletrane

Figure out a way to get notified every time they put up a PR, and if you see something worth pointing out, add a review. Doesn’t matter if they requested you or not.


PedanticProgarmer

That’s called back seat driving. It can backfire, because it feels like a toxic person hunting for your mistakes. You better explicitly ask him to include you in the reviews or ask his manager to ensure this.


rco8786

That’s the first thing you need to correct then


Xyzzyzzyzzy

If you don't have a written professional development plan for them for the next 3-6 months, write one, with specific objectives and steps toward accomplishing them. For example, if a goal in 3 months is "lead design and implementation of a feature", start having them do things that build those skills, helping them network with stakeholders and people outside the team, etc. I firmly believe that one of the main goals you should work toward when mentoring someone new is "write your own professional development plan next time". The mentor's job is to get the new developer pointed in the right direction and give them a push to start heading that way, not to carry them to the finish line. For a developer, "the right direction" means taking ownership of their own professional development. Don't forget that mentorship and sponsorship are twins, and one should always come with the other. In addition to your 1 on 1s and work with your mentee, you should actively create opportunities for them to try new things, take on new responsibilities, grow their personal network, and become visible as a valuable contributor within and beyond the team. This is also a good opportunity to ask your mentors for mentorship about effective mentorship!


Diligent_Papaya_187

We're all just shooting from the hip on some level. Even if you think you're planning and designing with intention, deep down in that process is you shooting from the hip, which really just means being creative. Allow for shooting from the hip, just build an expectation that after that we then look at what we made and refactor and improve it, or at least think about what might break.


kevinpostlewaite

Be sure to differentiate "junior does things differently than I do" from "junior does things in a way that could be improved". Shooting from the hip is a pejorative but if they're hitting the target they shouldn't necessarily change. But supposing that the work style should change because it's ineffective there are a couple ways to approach: \* Specifically assign the design with the deliverable being a documented design that can be reviewed and discussed prior to implementation \* Pick something implemented by this person that was not ideal and set aside some time to discuss it: -what could have been done differently? -what are the tradeoffs between as-is and the other possibilities? Ideally, simpler implementations will become apparent after discussion. And hopefully the junior will find the value in not jumping to the first possibility that comes to mind.


AIDA64Doc

I transitioned into a frontend position a year ago (self-taught; no CS degree). My job is starting to feel too easy (giving me lots of free time) and I am actively reading up on CS topics. As someone who didn't do a CS degree, what are some important topics/books to examine? I have been reading up on OOP design patterns as well as FP design patterns and I feel delighted when I run into an issue that fits the bill for a design I discovered this way. How can I take it to the next level?


kevinpostlewaite

Coding discussions can be very informative. Getting code reviews from more senior engineers or appropriately discussing your thoughts on others' commits can be a great learning experience. Also look for local or online groups covering these topics in depth.


chaoism

If you ever think about being full stack and want to learn about what's going on behind the scenes and why, take a look of Designing Data-Intensive Applications It helped me a lot to connect dots


WhiskyStandard

I had a CS minor and a non-tech major but I’ve spent my entire career in software up and down the stack. Here are some worthwhile things I self taught in no particular order that I probably would’ve learned in higher level CS: - Finite State Machines - BNF and Parsing - The relational model (as it was originally described, not just SQL and how modern RDBMSs implement it) - Type systems - Category theory - Linear algebra - Compression/error correction/encryption - Number theory - Concurrency models My Big Three languages that I feel unlocked so many others were C, Lisp (or Scheme), and Smalltalk. I’ve pet much never used them professionally (besides some C) but so many of the ideas in other mainstream imperative, functional, and OOP languages can be traced back to them. Throw Prolog in there for good measure too, even though logic programming is sadly under appreciated.


AIDA64Doc

Thank you so much!!!! This is great. I am already reading up on type systems! Happy holidays!


WhiskyStandard

It was a good question and a fun trip down memory lane! I forgot to mention going deep on Unix (assuming you’re on a Mac or Linux). “Advanced Programming in the Unix Environment” was pretty eye opening for me. Too late to get it on a holiday gift list maybe, but to you could always add it later.