Sign in to join this conversation, and others like it, in the communities you care about.
🚀 ✍🏻 Announcing Docz! A simple and powerful tool that'll help you a lot documenting things!
Open Source Slack Alternative
How do you compose your Apollo Mutations (or, Render Props versus Hocs)?
How to handle routing like Trello or Dribble?
React / General
I think it would be rare to have an organisational structure that had deliberate "Junior/Middle/Seniors" all in the same group like that specific to React...
Seniors typically are able to make decisions that impact an entire codebase without anyones authority and dictate architecture, Intermediates typically implement without assistance and research potential solutions to problems which they would cross check with a senior, and Juniors implement "simpler", more specific or deliberate tasks.
So based on what I said, and trying to apply it to a particular codebase...
Imagine the codebase for Redux and the idea behind it. A Senior might be able to come up with a similar solution without reference to that library. He would need someone to work with him to implement it, who he could rely on to execute it (that would be the intermediate), but then they actually need to use that new library or architecture to implement actual components, so they might ask the junior to build simple components using that library.
One of my favourite answers to this question in general is found here:
I know Basecamp use Rails, but it still applies to any language, and it might help you understand why your question isn't necessarily as simple or black/white as it seems.
Hope this helps!!!
In my experience "junior" generally means you're not expected to be able to work completely on your own and need a lot of guidance. You may already be pretty good at what you do but you shouldn't be expected to make larger technical decisions because you lack the experience to predict how they impact projects down the line. So even if you're not a beginner you may still be considered junior because you may lack the "bigger picture" expected from a senior. "Seniors" OTOH are expected to be able to make larger decisions and in some cases complete smaller projects entirely on their own. In general I'd say the "ranks" should be balanced in such a way that while "senior" positions have more liberties in turn "junior" positions should have fewer responsibilities. Unlike props in React, blame should always flow upwards by default (IOW if you let the fresh graduate make the major technical decisions, it's not their fault the project turned out to be a mess).
The title really only makes sense as a distinction from e.g. a "Senior Angular Developer" (because Angular brings a more standardised ecosystem) in which case I'd expect a React developer to be very familiar with routing, state management, side-effects, and so on, but not necessarily have thorough experience with any particular library when there are plenty of alternatives (though they should have a rough understanding of the differences and explain their reasoning when preferring one over the other).
(sorry for the wall of text)
It's a bit like a driver's license: if you're learning to drive, your instructor tells you where to go and makes sure you don't crash the vehicle or hurt anyone. Once you've passed the tests, you're on your own. You can make your own decisions but you're also fully responsible if you make mistakes because you have proven that you should know better.
@Inplum How do you call a self taught programmer who has created a couple of fulstack react applications on its own, made a lot of decitions, mistakes, found solutions along the way. But has no work experience yet.
Is he more a junior or middle?
let say projects like e-commerce, blog, social network(with basic features)
@arkee Were these real-world projects (i.e. more users than just you and a bunch of friends/family, possibly monetized, etc)? Depends on how you define "no work experience". If those were real-world projects, that's work experience.
I'd generally say fresh graduates (whether uni or bootcamp) are junior by definition, as are hobbyists with no real world experience. But there are exceptions to the rule. It also depends on the size of the company and how much experience the rest of the team has.
So do simpler projects that many has real world users mean more than complex project with more features that has real world user?
Getting user on your website is whole another skills that u should devote some time
or is there any way to get around this?
complex projects that has *no
The thing about hobby projects (i.e. projects that you can develop in a vacuum because it doesn't matter if there are any users) is that they don't share the same constraints as real-world applications. The line is blurrier for libraries and open source projects but application development is very different when you have actual users/customers to take into account or if you can just build what you want. Concerns like user experience are more in the domain of design than development but in my eyes a senior developer should at least have some intuition of what is or isn't good UX and what solves the customer's needs vs what just makes the developer happy.
So the reason I'm emphasizing "real-world" is that when developing software professionally you have to take all kinds of constraints into consideration. First of all there's likely a fixed budget (whether it's a customer who ordered the software or your employer or an investor), so any effort you invest has to produce sufficient value. Additionally you might need to adhere to technical restrictions dictating what services, software or even techniques you can use. And lastly of course in any non-trivial project there are likely other stakeholders than you who might have their own mind about what the application should be like and you'll have to compromise accordingly.
Being a professional developer is as much about budgeting (if only your own time) and negotiating (aka social skills) as it is about writing code and sketching out software architecture. These skills take time to develop. They're learnable and may come easily but I still would be skeptical if someone with no prior professional experience applied straight for a senior role (though they might still prove me wrong in an interview).
So as I understand in real world projects there will be bunch other people who can criticize your work comparing it to what they wanted it to be within a timeline they would want it to work supposedly. Thus you would learn how account other people's likes & dislikes in mind and you would have set of responsibilities.
It wouldn't be like you are alone doing it or at home, It would be like there is whole audience, judges in front of you. Right?
To have those experiences(some basic amount of it) is it better to go for a junior role or manage to have a website with real world users? which way would be more efficient?
If you're capable of running a website/webapp with a considerably large userbase, you're going to run into alot of challenges along the way to help you get better. The challenge of working from home alone is that not alot of people actually have the resolve to pull this off.
Working in a team, even as a junior, you will learn soft skills which is much more important when applying for a job. Being able to work in a team is a very important skill for anyone who wants to become a Senior Developer. You need to be able to effectively manage other developers as well as making critical decisions with confidence. The only way you can learn that is by observing other Seniors and learning off them.
FWIW it's not so much about "having an audience", it's more about being part of a team. Unless you're working in a very small company, you're likely not the only person on the project. And even if you are, the purpose of your work is delivering a product that someone else derives value from and that meets their requirements. The difference isn't that people will judge your work, the difference is that you no longer produce work just for yourself and that you're no longer the only person to work on the project.
Are these things work the same way even when someone works remotely?
Yes. I'd say working remotely is actually harder because you're going to miss out on a lot of the everyday interpersonal stuff, or at least not get it to the same extent as you would on-site. If the company is set up for remote work that can be compensated a bit but few companies are.
Also remote work takes a lot more self-discipline. Personally I'm not great at it and prefer working on-site unless I'm particularly inspired. You're avoiding a lot of the typical distractions of the workplace but there's plenty of distractions at home, too.
And what about open source development, contribution? what is the difference in experience?
I’d say that senior developer is not a React developer anymore ;-)
Open source is far from required but it’s one of the best ways of learning in my opinion — and for any level of experience.