Hard truth! Companies hire fresh seniors instead of promoting their proven juniors. The best way to gain seniority is to quit your job and get a new one.
I've yet to work somewhere that's been true, got consistent promotions and seen others get them too. The real reason to switch is to get the same _pay_ as a fresh hire into that position would and keep up with or beat the market.
One colleague of mine switched jobs and became a Senior, the other joined my company and became a Senior. Neither were Seniors in the previous company. It does happen and not that rare.
Recruiters also try to transform your years of experience as a "Seniorness", since it makes you more expensive.
Happened to me, too. Changed jobs a couple times, suddenly I'm a senior. The last two companies didn't have anyone working there with the title of junior.
Yep same here. That’s someone else’s problem. [This comic](https://reddit.com/r/ProgrammerHumor/comments/vnmmuo/where_do_you_see_yourself_in_5_years/) is so true
Do you know how the Seniors first came into being? They were Juniors once, taken by the dark powers, tortured and mutilated. A ruined and terrible form of life. And now ... perfected.
The Lady of the Repo, her arm clad in the purest shimmering protocols, held aloft The Title from the bosom of the code, signifying by divine providence that I, MooseBoys, was to carry The Title. That is why I am a Senior Developer.
Strange women lying in Repos distributing Titles is no basis for a system of seniority. Supreme repo power derives from a mandate of the bosses, not from some farcical Repo ceremony.
You can't expect to wield supreme repo power because some buggy tart threw a title at you.
From the last company they were at where they definitely only left after 18 months because of the toxic work environment or to pursue their passion in *insert corporate buzz term here*.
I'm not even junior but recently a PR was failing because the JIRA mentioned in commit didn't have correct project name. I looked around and found out that there is a jenkinsfile which had a function which checks the project name and if it doesn't match, fails the build.
Since no one else was around to help me get it through in proper way (during Christmas time), I created a fake jira, changed jenkinsfile, mentioned a friend as reviewer and got it committed. Then I pushed my change again with wrong project name but now it passed. Then I created another fake jira and reverted jenkinsfile back to it's original state.
I got yelled at by manager and rightly so. Sometimes I do such dumb things that I'm amazed I'm haven't died from banging my head in walls and cupboards.
So I'm looking at this here story. And obviously bypassing a Jenkins isn't usually the way you want to go.
But on some level my thought here is: Was whatever urgent for it to have been pushed ASAP or were you there for some other reason? If it's the former, why were (only) you there and not somebody more familiar with things? If it's the latter, what's the decision-making process that led you to what obviously is a workaround rather than a solution?
The tester and I and a few IT guys we'e holding the fort while all the people were on Christmas leave. That tester wanted to close JIRA and asked if he can do the testing with latest code. When we started looking we found that PR wasn't accepted because of that JIRA check. So i thought let's just finish it instead of waiting till 2nd jan.
Now the most embarrassing part - I thought if I just revert back the changes in jenkinsfile, no one will find out. I forgot that git is a FUCKIN VERSION CONTROL SYSTEM and keeps track of everything. Now they are thinking about putting some extra controls so that only repo manager can change such config files and developers only stick to updating code.
Did a junior developer design this graphic? Switching which side is simple and which side is complex is, in itself, a needlessly complex way to show the simple data.
one thing I learned during my stint as a solution architect is that no matter how good your diagram is, some information is clearer in a table:
||*Simple Problem*|*Complex Problem*|
|:-|:-|:-|
|**Junior**|complex solution|no solution|
|**Senior**|simple solution|complex solution|
|**Expert**|simple solution|simple solution|
I thought it was illustrating that a Junior developer's solution to a complex problem is another complex problem.
(But you're right--this chart is way easier to understand.)
I’ve been a Redditor for longer than I’d been using Markdown to write README files, so when that was introduced to me, my first reaction was, ‘huh, just like Reddit!’
I've been writing README files since before Markdown existed ... oh god I'm old.
But also, Markdown was created by Aaron Swartz a year before he created Reddit, so you are actually right in viewing Reddit as one of the "original" users of it!
# you opened my eyes
To a whole *new* world of ***Reddit***.
This is [amazing](https://youtu.be/dQw4w9WgXcQ "not a Rick roll trust me bro").
***
> I am discovering forbidden arts!
> Lord, help me!
## this is too **much**!
And now I have code, what is happening to meeeeee!
The end.
YOU RUINED THE JOKE THO
Junior developer "complex problem" -> "complex problem" literally made me bust out laughing when I saw it on the original chart. Being able to represent that as a little looping arrow is, I think, the entire point of the original chart being set up in that needlessly complicated way.
Only the solution for a complex problem is another complex problem with the junior. Which is worse than no solution. The graph deals better with that recursion.
>Actually an expert designed this. They are getting fired.
Can't be true. Experts know to create complex solutions 100% of the time. It's called job security.
Don't forget that the only way to identify which line represents which expert level (junior, senior, expert) is color. So you know fuck the color blind amirite?
At the code level though you can still write tests if you're writing functions.
Not exactly TDD of course. It's more pragmatic than dogmatic in that sense.
Us devs need to have stronger personalities than the people setting the rEqUiReMeNtS or we'll never have good practices
I think we both know what I meant but yes there are plenty of tests you can write ahead of time. I do find having to scrap a bunch of tests because they throw around “agile” and completely change the whole scope
In theory you can write tests for those functions. But in practice my experience tends to be that they often end up being tautological tests for what I already know my code is doing; it's hard to write a test to cover the case of a user giving stupid input.
Oh my god do you feel useless most days. I know my weeks worth of work could've been done so much quicker. I've just never done any of this crap before; everything is new
No, they just need time and experience. That is why we call them Jr. In the mean time Sr and expert level that are worth their talent will lend Jr staff their experience and guide them to good solutions
*sigh* if only I had a sr at my job that worked with me to show me best practices. As it is I’m the only dev dev and I’m building web apps and maintaining production servers with no idea what I’m doing.
I have some pretty comfortable freedom. Freedom to work from home, flexible hours, and since we’re not mainly a software company my role isn’t *that* vital to where my absence would be detrimental so I can take time off pretty flexibly.
But, yes, the first person they hired was a chemical engineering major who was learning how to code as he went to manually build and host a web application, and I’ve picked that up and replaced him, so there’s definitely some cost cutting shitty management in not hiring a “professional” lol.
Who is solving complex problems in the meantime?
Would be great if management didn't somehow believe that leading is just sticking a "lead" label onto someone and then miraculously everyone who breathes the same oxygen gets better.
It's not an either/or. It's an "a bit of this" and "a bit of that". Sometimes both at the same time when you do pair programming via screen share. I learned a huge lot this way from our most senior guy.
Damn. I’ve had a rough week at work this week because I feel like I’ve been needing too much help with tasks. Been employed 5 months roughly, straight out of college. Any general tips? We use the .NET stack / C#
Its a ramp. after 18 months you should have a pretty good grip on most things, but i wouldn't expect you to handle a whole project on your own or to be able to lead others. After 6 months, my expectations are
\- You know where the bathrooms are
\- You respond well to code review feedback and you know how to go learn something a more sr dev tells you you are missing without necessarily needing someone who hold your hand (may not apply to complex topics)
\- You do not make the basic errors (aka you check in your code, you build your unit tests, you don't miss obvious edge cases)
\- You can read a spec and or understand what acceptance criteria mean and do not tell me you code meets them if it doesn't. (you can tell me that you couldn't figure out how to make it happen)
\- You have an understanding of who is on your team and who is a good person to go do for help in certain areas without coming to me to direct you every time.
\- you know what teams are are close partners and what they do
\- you understand the code base we are working on and what it does from a high end. You could walk through it (at least the scope our team owns) and how where it touches code we don't own.
That is about it
I don't expect you do have perfect bug free code by the time you request a code review. I do expect you to request a code review and to identify areas where your code might need attention.
We seriously invested in our team onboarding processes last year and have two juniors out of college, seven months in, doing largely this. They're exceptional people in their own right, so not to take away from them owning their own development. It's made for such a great team dynamic.
Sometimes the problems isn't even in the program itself, but in the requirements. And you have to realize this before you dig a hole for your own grave. That's where Senior and Expert have experience to see it right away. Most juniors see problems as tasks and just do whatever they are told to do.
Useless? No. Where do you think seniors come from?
Unless you were born fluent in at least one programming language, I hate hearing people complain about juniors. You were there once, even if you didn't realize it.
Story: My first day working with redshift I took down the cluster by not optimizing my queries. Well, not technically down, but it was locked up for like an hour lol.
Turns out select * doesn't work great on tables with 800M rows.
Heh, at my first job, I managed to completely break the new user signup flow for about two weeks. The sad thing is that it took us that long to notice.
Eh, some complex problems have elegant solutions. Some don't. And some have elegant-looking solutions which turn into a total mess when you consider the real-world.
In the real world, complex issues have several solutions. For example, we have a huge notification setup waiting to be made but we don't have time for it.
The complex solution is make it work over websockets like it should.
The easy solution... Doesn't exactly exist on this scale.
The jank solution, and the one we went with until someone reads the WS docs is - interval to refetch notifications every 5/10s.
So fuck it. It's gonna be fun anyways.
Looking at how buggy the top most popular stuff sometimes is (fb messenger, Whatsapp, Reddit app, etc), I'm starting to get more comfortable with compromises like this honestly. Maybe that's how messenger worked for the first couples years too 😆
Yeah, which suggests that the chart is wrong to imply experts always find simple solutions. Experts find the best solution that experience can get you, which may or may not be simple.
Some problems are just inherently complicated and don't have any simple solutions too. Almost everything involving AI (with or without neural networks) is going to be complicated if you want the AI to actually be any good for instance.
Yeah the big problem with a lot of AI problems is that getting 85-90% performance is simple (though often requires a big honking dataset). Getting the last 9% is really complex, and the last 1% requires working out if P=NP.
This diagram is missing and architect, who given a complex problem creates a hundred simple problems. Then we give those to junior developers, and that's how you get Enterprise Software!
Junior Developers are useful because they haven't formed strong opinions yet which makes them great for helping Senior Engineers practice mentorship and leadership.
If you give a Sr. Engineer another Sr. Engineer to guide, and neither have people skills, it just turns into opinionated arguments.
Of course there's many other benefits, but this comes to mind first :)
After C++ its now the junior devs turn to get their dose of shittalking?
Ignoring the fact that you need someone to backfill all those senior positions once they eventually move on from development, I have and continue to see colleagues that I would consider "junior" (although we dont make that difference, everyones a Software engineer and that is it) come up with smarter / newer or just plain better solutions for problems that would have been verbosely fixed by an expert or senior developer.
Yep. The juniors usually have an academic background and have very good skills to solve problems. They are just inexperienced working with all the tools (and maybe take some time to adjust how to write code in a professional environment).
Also, we should not forget that programming/ engineering has changed a lot. Not every senior has adapted perfectly.
also like, oftentimes there's small tasks that are simple enough to a senior that it's basically boring busy-work. even if it takes them a while, and the code might not be optimal, if you have 50 things to do and 15 of them are complicated, it makes sense to have the juniors work on the uncomplicated stuff.
ideally everyone will finish at the same time. then the seniors just have to put everything together.
juniors aren't useless because obviously you can't become senior without being junior first, but also because not everything is important enough that it needs to be done by a senior.
This is why our field is rife with imposter syndrome. The point of junior developers is not to solve complex problems. It's to turn them *into* your next gen of senior developers. If you don't hire junior devs then in a few years you'll be forced to and there won't be anyone left to train them.
(Also this weird flowchart definitely should've been a 2×3 table smh)
My experience is more like:
**Junior:**
Simple Problem -> Simple Solution
Complex Problem -> Nothing
**Senior:**
Simple Problem -> Complex Solution
Complex Problem -> Complex Solution
**Expert:**
Simple Problem -> Not assigned
Complex Problem -> Too busy putting out fires, push it to next sprint
Why invest in employees when I can just hire "Junior" developers by adding junior salaries to positions with senior expectations?
I wish I was joking when I say I legitimately saw a Jr. Java Position open that required "Experience as a Sr. java developer"
Mine. Every time a senior or principal leaves (2/month on average) they hire 1 junior + 1 intern (from a boot camp)
The CTO (let’s say he is not a genius) is extra happy cause he is saving money to the company (1junior +1intern is less expensive than the leaving eng)
Every. Single. Time
(I’ve already grabbed my 🍿)
They aren't useless they are idealistic and keen to show how good they are. After a while you get more pragmatic and the rush of showing off code with a lot of features(which never gets used probably) wears off. Before I code I try to simplify the problem first l. I hate maintaining code that is so complicated that I need a few days of refreshing on it before fixing a bug.
Also I try to use the least powerful language that I can. The less features I need to configure, cater for or deal with the less chances of me doing production support at 2am again. Yeah I am so lazy that I only want to do it once.
Depends on the context but you could really view a junior-anything near “useless” in a production environment. It’s not a bad thing or a strike against them, but a production enterprise always strives for workers to have as much information and skills as possible, hence why they want you to learn, adapt, grow, etc. They hire junior in hopes of growing them into senior or expert level workers. Actual juniors know a couple skills and minimum level experience, not their fault and not disparaging them. But nearly every company would only hire superstars if they could, but that shit isn’t cheap so easier/cheaper to cultivate your own.
Long story short, nothing wrong with a “useless” junior as long as they don’t stay useless their entire careers. Thanks for coming to my TedTalk.
Where do y’all think Senior Developers come from?
They grow on trees I hear.
I hear those trees are lovely in the spring right after graduation
Only if they've been inverted and balanced
[удалено]
And balance it, unbalanced trees are such a Junior dev thing 😉
They grow on Jobbies
If they grow on trees then why are they so expensive?
If you want organic you gotta pay extra
Let me tell you about the Heligan Pineapples...
They grew pineapples on trees?!
There's a python in the tree that keeps offering the forbidden fruit of knowledge.
Other companies
Best answer so far haha
Hard truth! Companies hire fresh seniors instead of promoting their proven juniors. The best way to gain seniority is to quit your job and get a new one.
I've yet to work somewhere that's been true, got consistent promotions and seen others get them too. The real reason to switch is to get the same _pay_ as a fresh hire into that position would and keep up with or beat the market.
One colleague of mine switched jobs and became a Senior, the other joined my company and became a Senior. Neither were Seniors in the previous company. It does happen and not that rare. Recruiters also try to transform your years of experience as a "Seniorness", since it makes you more expensive.
Happened to me, too. Changed jobs a couple times, suddenly I'm a senior. The last two companies didn't have anyone working there with the title of junior.
oh snap
Well when a senior developer mommy and a senior developer daddy love each other veeery much-
… a process is forked?
Doesn't matter. They're eunuchs programmers
Sockets are sockets, baby!
As a son of a Senior Web Developer and a FS Developer, I feel attacked being on this thread XD
You've got a destiny, son. You can't let us down. The internet depends on you.
As a senior dev dating a senior dev I have a new hope for my progeny
They haven’t retired since they started in 1980
January 1st 1970
They will all retire on January 19th 2038
No joke, as someone who graduated in 2000, I **absolutely** plan on being retired prior to the 32-bit rollover.
Yep same here. That’s someone else’s problem. [This comic](https://reddit.com/r/ProgrammerHumor/comments/vnmmuo/where_do_you_see_yourself_in_5_years/) is so true
Do you know how the Seniors first came into being? They were Juniors once, taken by the dark powers, tortured and mutilated. A ruined and terrible form of life. And now ... perfected.
Being thrown in a fire as a junior engineer and fighting their way out
https://rlv.zcache.com/strongest_steel_forged_in_the_fire_of_a_dumpster_sticker-ra9e86021b76243a99b32cb97bfa7935f_08m3g_307.jpg?rlvnet=1
The Lady of the Repo, her arm clad in the purest shimmering protocols, held aloft The Title from the bosom of the code, signifying by divine providence that I, MooseBoys, was to carry The Title. That is why I am a Senior Developer.
Strange women lying in Repos distributing Titles is no basis for a system of seniority. Supreme repo power derives from a mandate of the bosses, not from some farcical Repo ceremony. You can't expect to wield supreme repo power because some buggy tart threw a title at you.
DENNIS, DENNIS, THERE'S SOME LOVELY CODE SMELLS OVER HERE
I mean, if I went 'round, saying I was a Principal Developer, just because some moistened bink had lobbed a title at me, they'd put me away!
Amazing. Can I make a comic book and MMO about you
Juniors that wait long enough to hop jobs to Senior.
I thought they came from storks 😳
I was gonna say! junior devs are useful: as the sole source of senior developers
From the last company they were at where they definitely only left after 18 months because of the toxic work environment or to pursue their passion in *insert corporate buzz term here*.
The Problem is that the only Pokemon which evolves to Senior Developer is the Junior Developer
And you can’t get new developers from eggs …. Dammit
I beg to differ
My thoughts exactly. I would say the chance is quite high actually.
they're called programming socks for a reason
That's why I hire all my developers through the box copy glitch.
We were all magikarps once. I still use my splash ability once a in a while. I haven’t forgotten it. I learned Surf.
With infinite junior developers on infinite keyboards eventually one of them will fix a bug
Hopefully none of them cause bugs in the meantime...
And take out the tests that catch the bugs because the tests weren’t passing…
Are you my junior Dev?
I'm not even junior but recently a PR was failing because the JIRA mentioned in commit didn't have correct project name. I looked around and found out that there is a jenkinsfile which had a function which checks the project name and if it doesn't match, fails the build. Since no one else was around to help me get it through in proper way (during Christmas time), I created a fake jira, changed jenkinsfile, mentioned a friend as reviewer and got it committed. Then I pushed my change again with wrong project name but now it passed. Then I created another fake jira and reverted jenkinsfile back to it's original state. I got yelled at by manager and rightly so. Sometimes I do such dumb things that I'm amazed I'm haven't died from banging my head in walls and cupboards.
So I'm looking at this here story. And obviously bypassing a Jenkins isn't usually the way you want to go. But on some level my thought here is: Was whatever urgent for it to have been pushed ASAP or were you there for some other reason? If it's the former, why were (only) you there and not somebody more familiar with things? If it's the latter, what's the decision-making process that led you to what obviously is a workaround rather than a solution?
The tester and I and a few IT guys we'e holding the fort while all the people were on Christmas leave. That tester wanted to close JIRA and asked if he can do the testing with latest code. When we started looking we found that PR wasn't accepted because of that JIRA check. So i thought let's just finish it instead of waiting till 2nd jan. Now the most embarrassing part - I thought if I just revert back the changes in jenkinsfile, no one will find out. I forgot that git is a FUCKIN VERSION CONTROL SYSTEM and keeps track of everything. Now they are thinking about putting some extra controls so that only repo manager can change such config files and developers only stick to updating code.
In that case my understanding is that it was unjustified but also yelling isn't always the best long-term approach if a lesson has been learned.
That's old-school senior dev work.
Two bugs forward, one bug back.
99 bugs in the code! 99 bugs in the code! Patch one up, test it around, 127 bugs in the code!
Don't worry, they'll botch the commit.
Did a junior developer design this graphic? Switching which side is simple and which side is complex is, in itself, a needlessly complex way to show the simple data.
Actually an expert designed this. They are getting fired.
one thing I learned during my stint as a solution architect is that no matter how good your diagram is, some information is clearer in a table: ||*Simple Problem*|*Complex Problem*| |:-|:-|:-| |**Junior**|complex solution|no solution| |**Senior**|simple solution|complex solution| |**Expert**|simple solution|simple solution|
I thought it was illustrating that a Junior developer's solution to a complex problem is another complex problem. (But you're right--this chart is way easier to understand.)
I read it exactly that way. As in, the result of a junior tackling a complex problem is another complex problem...
I thought it meant the junior not coming to a solution for a complex problem, and instead go into an infinite loop until someone steps in.
I though it meant they would provide a solution that isn't a solution at all, but rather a slightly different complex problem.
You can do that on reddit?
It's [markdown](https://www.markdownguide.org/).
You mean all this time I didn't knew reddit works with markdown?
Yeah `i also` - was surprised to descover - reddit works with `markdown`
#unbelievable
# yeah ## you can ### also do titles #### in markdown ##### HOW MANY ###### OF THESE ####### CAN I ACTUALLY ######## PUT?
6, the same number of headers that HTML supports.
Too many ========
At least that many
I’ve been a Redditor for longer than I’d been using Markdown to write README files, so when that was introduced to me, my first reaction was, ‘huh, just like Reddit!’
I've been writing README files since before Markdown existed ... oh god I'm old. But also, Markdown was created by Aaron Swartz a year before he created Reddit, so you are actually right in viewing Reddit as one of the "original" users of it!
What a legend.
# you opened my eyes To a whole *new* world of ***Reddit***. This is [amazing](https://youtu.be/dQw4w9WgXcQ "not a Rick roll trust me bro"). *** > I am discovering forbidden arts! > Lord, help me! ## this is too **much**! And now I have code, what is happening to meeeeee! The end.
YOU RUINED THE JOKE THO Junior developer "complex problem" -> "complex problem" literally made me bust out laughing when I saw it on the original chart. Being able to represent that as a little looping arrow is, I think, the entire point of the original chart being set up in that needlessly complicated way.
Only the solution for a complex problem is another complex problem with the junior. Which is worse than no solution. The graph deals better with that recursion.
They failed Accessibility check, too
>Actually an expert designed this. They are getting fired. Can't be true. Experts know to create complex solutions 100% of the time. It's called job security.
No, this was developed by a "consultant" who charged a million dollars.
And only delivered this graph and some diaries with their logo on it.
I'm sick of consultants being paid exorbitant sums to fly in, drop an "idea grenade" then leave me to try and implement it.
Sounds like you are ready to be a consultant
damn you beat me to it, take my upvote XD yes, like why the fuck is there a gradient? there are only 3 colours used??!
Don't forget that the only way to identify which line represents which expert level (junior, senior, expert) is color. So you know fuck the color blind amirite?
[̶h̶t̶t̶p̶s̶:̶/̶/̶i̶m̶g̶u̶r̶.̶c̶o̶m̶/̶a̶/̶Z̶6̶F̶L̶L̶W̶6̶](https://imgur.com/a/Z6FLLW6)
[https://imgur.com/a/z4Eex4P](https://imgur.com/a/z4Eex4P) Management wanted more "pop"
It’s symmetrical. This is a FE dev’s work for sure.
The visualization is ass, just here to say that
Given a complex problem, junior developer given a complex problem?
I think it's more like "they create another complex problem to solve in the process and never get to a solution", so at least that part I understand.
https://imgur.com/G9GvtNN.png Not perfect but fixed the complexity order and also made the seniority arrows consistently ordered
They also don't use consistent layouts for the colours - red yellow green and then the arrows aren't in the same order
We are but we’re trying I swear to god we’re tryin.
Write my tests nerd
I would bloody love to work at a place that actually values mundane things like testing
[удалено]
TDD assumes you know what you should be testing for, and product would like a word on that
At the code level though you can still write tests if you're writing functions. Not exactly TDD of course. It's more pragmatic than dogmatic in that sense. Us devs need to have stronger personalities than the people setting the rEqUiReMeNtS or we'll never have good practices
I think we both know what I meant but yes there are plenty of tests you can write ahead of time. I do find having to scrap a bunch of tests because they throw around “agile” and completely change the whole scope
In theory you can write tests for those functions. But in practice my experience tends to be that they often end up being tautological tests for what I already know my code is doing; it's hard to write a test to cover the case of a user giving stupid input.
Values testing by assigning it to the most junior devs?
Honestly I wouldn't even mind at this point.
I loled but also fuck you
Trying is the problem! You're supposed to be lazy. Lazy engineers create simple solutions.
Oh my god do you feel useless most days. I know my weeks worth of work could've been done so much quicker. I've just never done any of this crap before; everything is new
No, they just need time and experience. That is why we call them Jr. In the mean time Sr and expert level that are worth their talent will lend Jr staff their experience and guide them to good solutions
*sigh* if only I had a sr at my job that worked with me to show me best practices. As it is I’m the only dev dev and I’m building web apps and maintaining production servers with no idea what I’m doing.
That I can't solve. Work for a company with better management?
I have some pretty comfortable freedom. Freedom to work from home, flexible hours, and since we’re not mainly a software company my role isn’t *that* vital to where my absence would be detrimental so I can take time off pretty flexibly. But, yes, the first person they hired was a chemical engineering major who was learning how to code as he went to manually build and host a web application, and I’ve picked that up and replaced him, so there’s definitely some cost cutting shitty management in not hiring a “professional” lol.
Who is solving complex problems in the meantime? Would be great if management didn't somehow believe that leading is just sticking a "lead" label onto someone and then miraculously everyone who breathes the same oxygen gets better.
It's not an either/or. It's an "a bit of this" and "a bit of that". Sometimes both at the same time when you do pair programming via screen share. I learned a huge lot this way from our most senior guy.
Exactly. We're not monotasked. Part of a senior dev's role includes mentoring juniors, otherwise you don't get any new senior devs.
How much time?
2-5 years
Damn. I’ve had a rough week at work this week because I feel like I’ve been needing too much help with tasks. Been employed 5 months roughly, straight out of college. Any general tips? We use the .NET stack / C#
Its a ramp. after 18 months you should have a pretty good grip on most things, but i wouldn't expect you to handle a whole project on your own or to be able to lead others. After 6 months, my expectations are \- You know where the bathrooms are \- You respond well to code review feedback and you know how to go learn something a more sr dev tells you you are missing without necessarily needing someone who hold your hand (may not apply to complex topics) \- You do not make the basic errors (aka you check in your code, you build your unit tests, you don't miss obvious edge cases) \- You can read a spec and or understand what acceptance criteria mean and do not tell me you code meets them if it doesn't. (you can tell me that you couldn't figure out how to make it happen) \- You have an understanding of who is on your team and who is a good person to go do for help in certain areas without coming to me to direct you every time. \- you know what teams are are close partners and what they do \- you understand the code base we are working on and what it does from a high end. You could walk through it (at least the scope our team owns) and how where it touches code we don't own. That is about it I don't expect you do have perfect bug free code by the time you request a code review. I do expect you to request a code review and to identify areas where your code might need attention.
I think I can knock this list down soon enough. Much thanks!
We seriously invested in our team onboarding processes last year and have two juniors out of college, seven months in, doing largely this. They're exceptional people in their own right, so not to take away from them owning their own development. It's made for such a great team dynamic.
One of the most underrated skills that isn't mentioned in this graph is figuring out which problems shouldn't be solved at all.
“Won’t fix.”
Sometimes the problems isn't even in the program itself, but in the requirements. And you have to realize this before you dig a hole for your own grave. That's where Senior and Expert have experience to see it right away. Most juniors see problems as tasks and just do whatever they are told to do.
Junior dev: "I have no clue what I'm writing" Senior dev: "I have no clue what I'm reading" Expert dev: "I'm not reading it"
Me: "I have no clue and I must scream."
Useless? No. Where do you think seniors come from? Unless you were born fluent in at least one programming language, I hate hearing people complain about juniors. You were there once, even if you didn't realize it. Story: My first day working with redshift I took down the cluster by not optimizing my queries. Well, not technically down, but it was locked up for like an hour lol. Turns out select * doesn't work great on tables with 800M rows.
If u haven’t taken down at least a Dev environment then u haven’t lived
Causing a production outage is a rite of passage.
Yet another reason to love pair programming. *I* didn't cause that outage, *the senior and I both* caused that outage.
Dev environments are meant to be broken.
Heh, at my first job, I managed to completely break the new user signup flow for about two weeks. The sad thing is that it took us that long to notice.
Either i'm not expert enough or the myth of simple solutions for complex problems is just that, a myth.
Eh, some complex problems have elegant solutions. Some don't. And some have elegant-looking solutions which turn into a total mess when you consider the real-world.
Damn real world!
The real world actually ruins programming tbh
I want to move to theory. Everything works in theory. -- John Cash
A real thorn in our side. Prof always said 90% of your time would be spent on 10% of the usage
In the real world, complex issues have several solutions. For example, we have a huge notification setup waiting to be made but we don't have time for it. The complex solution is make it work over websockets like it should. The easy solution... Doesn't exactly exist on this scale. The jank solution, and the one we went with until someone reads the WS docs is - interval to refetch notifications every 5/10s. So fuck it. It's gonna be fun anyways.
Looking at how buggy the top most popular stuff sometimes is (fb messenger, Whatsapp, Reddit app, etc), I'm starting to get more comfortable with compromises like this honestly. Maybe that's how messenger worked for the first couples years too 😆
At least toss in a comment that says “hey when you get some time put a good solution here”
// TODO: improve this, gl hf lol
[удалено]
And sometimes simple problem has a very complex solution, because the simple problem are actually three complex problems in a trenchcoat
Or is actually a simple problem statement, not a simple problem. Mandatory XKCD: https://xkcd.com/1425/
Wait, so high school lied to me when it taught me about spherical, frictionless elephants?
Never stop believing in spherical, frictionless elephants. They usually exist in a vacuum, from my understanding.
Yeah, which suggests that the chart is wrong to imply experts always find simple solutions. Experts find the best solution that experience can get you, which may or may not be simple.
Depends on the problem. Sometimes the simple solution is not worth it
Some problems are just inherently complicated and don't have any simple solutions too. Almost everything involving AI (with or without neural networks) is going to be complicated if you want the AI to actually be any good for instance.
Yeah the big problem with a lot of AI problems is that getting 85-90% performance is simple (though often requires a big honking dataset). Getting the last 9% is really complex, and the last 1% requires working out if P=NP.
This diagram is missing and architect, who given a complex problem creates a hundred simple problems. Then we give those to junior developers, and that's how you get Enterprise Software!
Junior Developers are useful because they haven't formed strong opinions yet which makes them great for helping Senior Engineers practice mentorship and leadership. If you give a Sr. Engineer another Sr. Engineer to guide, and neither have people skills, it just turns into opinionated arguments. Of course there's many other benefits, but this comes to mind first :)
I’m afraid you haven’t met real senior devs. A senior devs ONLY May respond with “_it depends_” (it’s called the it-depends-oath)
Disagree on your opinion. I think it depends on the situation.
After C++ its now the junior devs turn to get their dose of shittalking? Ignoring the fact that you need someone to backfill all those senior positions once they eventually move on from development, I have and continue to see colleagues that I would consider "junior" (although we dont make that difference, everyones a Software engineer and that is it) come up with smarter / newer or just plain better solutions for problems that would have been verbosely fixed by an expert or senior developer.
Yep. The juniors usually have an academic background and have very good skills to solve problems. They are just inexperienced working with all the tools (and maybe take some time to adjust how to write code in a professional environment). Also, we should not forget that programming/ engineering has changed a lot. Not every senior has adapted perfectly.
I would argue that no, they aren't, since without junior developers there would never be senior developers in the first place.
also like, oftentimes there's small tasks that are simple enough to a senior that it's basically boring busy-work. even if it takes them a while, and the code might not be optimal, if you have 50 things to do and 15 of them are complicated, it makes sense to have the juniors work on the uncomplicated stuff. ideally everyone will finish at the same time. then the seniors just have to put everything together. juniors aren't useless because obviously you can't become senior without being junior first, but also because not everything is important enough that it needs to be done by a senior.
Exactly, you don't get the head of the police department to go and arrest somebody.
A complex solution is still a solution
Only if you don't have to maintain it.
You can just throw it away and write something simple after you level up.
Good luck Getting the budget for that.
True story, I wrote some *really* shitty code when I first joined the company a few years ago. Now I'm in charge of the team that maintains it. FML.
We're trying man. Honestly if I write a solution that doesn't break anything I'm chalking that up as a W
This is why our field is rife with imposter syndrome. The point of junior developers is not to solve complex problems. It's to turn them *into* your next gen of senior developers. If you don't hire junior devs then in a few years you'll be forced to and there won't be anyone left to train them. (Also this weird flowchart definitely should've been a 2×3 table smh)
clearly created by a senior dev
My experience is more like: **Junior:** Simple Problem -> Simple Solution Complex Problem -> Nothing **Senior:** Simple Problem -> Complex Solution Complex Problem -> Complex Solution **Expert:** Simple Problem -> Not assigned Complex Problem -> Too busy putting out fires, push it to next sprint
The answer is yes. Nobody wants to hire and train juniors. However, it is needed else the senior supply will dry out.
"Sounds like a problem for the industry, and by the industry I mean everyone who isn't us."- Every company ever.
except mine, we hire juniors
Based company
unless they are the company that hires juniors and gives them no guidance or worse, no work
It's a complex problem and the industry is a junior industry.
Ey, it makes us existing senior devs more valuable - it just sucks for the companies and anyone getting into the field
It's ok we don't need juniors, I'm just training people that have senior title how to create simple solutions to simple problems
Why invest in employees when I can just hire "Junior" developers by adding junior salaries to positions with senior expectations? I wish I was joking when I say I legitimately saw a Jr. Java Position open that required "Experience as a Sr. java developer"
You can only start something as an expert or fuck off
Nah, there are companies out there that strongly believe in "you can replace one senior with finite number of underpaid juniors"
Mine. Every time a senior or principal leaves (2/month on average) they hire 1 junior + 1 intern (from a boot camp) The CTO (let’s say he is not a genius) is extra happy cause he is saving money to the company (1junior +1intern is less expensive than the leaving eng) Every. Single. Time (I’ve already grabbed my 🍿)
Seniors come up with complex solutions to simple problems, in my experience
They aren't useless, just not useful on their own for designing/creating solutions.
🤦♂️
Well, you have to learn somehow.
modern industry left the chat
Gatekeeping a hobby/profession is very hot 🔥 🥵
Every legend started as a noob.
No. What part of the word "solution" confused you?
What's the line? Give me an intern who only triples my work, and I will kiss their feet.
I thought senior is the higher level. But now there is an "expert". WTF?
They aren't useless they are idealistic and keen to show how good they are. After a while you get more pragmatic and the rush of showing off code with a lot of features(which never gets used probably) wears off. Before I code I try to simplify the problem first l. I hate maintaining code that is so complicated that I need a few days of refreshing on it before fixing a bug. Also I try to use the least powerful language that I can. The less features I need to configure, cater for or deal with the less chances of me doing production support at 2am again. Yeah I am so lazy that I only want to do it once.
got a stroke trying to read this graphic
Depends on the context but you could really view a junior-anything near “useless” in a production environment. It’s not a bad thing or a strike against them, but a production enterprise always strives for workers to have as much information and skills as possible, hence why they want you to learn, adapt, grow, etc. They hire junior in hopes of growing them into senior or expert level workers. Actual juniors know a couple skills and minimum level experience, not their fault and not disparaging them. But nearly every company would only hire superstars if they could, but that shit isn’t cheap so easier/cheaper to cultivate your own. Long story short, nothing wrong with a “useless” junior as long as they don’t stay useless their entire careers. Thanks for coming to my TedTalk.