How can I become a better developer?
Hey guys sorry for this vague question.
I've been a junior react dev for 2 years.
But I want to get a good job, for that I need in depth knowledge.
But I don't know what to learn anymore.
If anyone could suggest projects, topics, anything at all that will help me become a really good developer it'd really hell me out.
I don't wanna stay junior developer with limited knowledge my whole life. I u wanna contribute to open source, publish my own libraries but whenever I look at other's code to contribute it feels so complicated to me. I also wanna work as a freelancer at hackhands, codementor etc but I lack the skills.
Apologies for this broad question.
Learn Something New Everyday,
Connect With The Best Developers!
Go Vanilla. Did you ever try to write a whole page without any framework? Just HTML, CSS and JS, keeping each of them clean and separated (no CSS in JS, no JS on HTML, etc.)? Make it work on Safari 10, IE11, Edge, FF 35+ and Chrome 45+? Make sure it still looks good on smartphones? Check if it is progressive? And then, once everything works, optimize the whole thing using a build pipeline? Because that's the kind of stuff I have to deal with. I have been coding for 10+ years, and I still learn something new every day just by doing that.
If you think that's easy, then we can start talking about code architecture and tools. What kind of architectures, patterns and algorithms do you know? What's a dirty flag? A builder pattern? Do you know OOCSS? BEM? What's the difference between
<strong>? How to do ARIA? How to XOR-encrypt (shuffle bits)?
If you know all that, then try to do something completely different. Go learn Rust and write a simple game of Pong or Snake, using OpenGL 4+. Just doing that will throw you into a whole new world of ideas and concepts which you can also use as a web dev.
Once you tried out all of that, you should probably not be a junior anymore and you will keep on growing with projects you do.
Also, don't forget to stay online, read blogs and questions and write answers. By talking about what you know, you can get others to confirm or correct your knowledge, which expands your horizon and makes you a better dev passively. In my time on Hashnode, I learned a lot just by writing answers like this one. The community here is awesome, so I recommend it wholeheartedly.
Mahaveer Nah, you're good! Just two little things:
no ES6 just old school JS
ES6 is VanillaJS. It's just a version ;)
Dont know about Dirt Flag, XOR-encyrpt though.
If you are weak in algorithms and patterns, I recommend reading up on them and trying them out. They can make your code go from a hassle to huiiii :D You don't have to know them by heart, but at least having heard about some and knowing what problems they solve is enough. You can google them anytime anyway. It's one of those places where trying out something entirely different can help you find out about new stuff. I recommend easy to read sites, like Game Programming Patterns (it's C++, but it has many pictures and the snippets are short and simple).
Maybe i should try to build an SPA
Give it a try and find out how stuff works under the hood. It's always cool to know how a library is probably implemented when using it, so you can use little tricks and get ahead of others!
You mention looking at open source projects and them being complicated. It sounds like you've found a great learning opportunity then! Often, larger projects will have some issues tagged 'good first issue' or something. Or find a slightly easier project, but do challenge yourself.
Another way to find out what to learn is to just go to codementor and look at what type of questions are popular and what you are missing to handle them. Surest way to prepare yourself to switch to that!
Yeah i did look at OS Code for small libraries like rimraf. I understood most of the code but couldn't find anything to contribute.
I'll try my best to challenge myself, currently i've started implementing Data Structures and Algorithms cuz they are super hard for me. But i actually wanna learn how to build tools as well.
Thanks a ton for your answer :D
Thanks for the answer. I did complete JS30 already. And i'm kinda sick of doing courses now. I've done Complete Web Dev Bootcamp by Colt Steele, Complete React,redux by Stephen Grider, Egghead's Course by Kent C Dodds and some others.
I dont know where to find a mentor though :D
I found my mentors just by building community and hanging out at events/meetups with likeminded people. I didn't necessarily look for them. They came to me because I genuinely wanted to make friends and connect with people. But I'm sure it helps if you tell your community that you're looking for a mentor, so they can help you find one. I found one of my mentors because I told a good friend that I was starting to code, and she basically said something to the effect of, "Here's my lead tech person. She's super busy, but please come to her for any advice you need."
My recommendation to you would be to focus beyond your technical skills, focusing on your soft skills is as important to get ahead in your software developer career. The resources you should concentrate on are: -How to market yourself -Professionalism: skills overlooked by universities and some coding bootcamps -Keeping up with the developer community -Coding skills and tech interview preparation -System design skills -Continual Learning
I recommend this article from ButterCMS that is a great reference guide for any junior developer looking to get ahead in their career: buttercms.com/blog/best-skills-for-junior-d..
I gotta echo what Marco Alka said, learn to do everything you currently know how to do without the crutches that are frameworks. or in many cases they're not crutches, they're hobble skirts... in some cases they're even a sledgehammer to the shins ala "Misery"
Until you can do it without the frameworks, you aren't qualified to know if what the framework is doing is the correct way, most efficient way, or even the simplest way. This is why beginners should NEVER be allowed anywhere near "frameworks" and why MOST of the big fancy popular ones are -- to be brutally frank with a highly unpopular opinion -- incompetent nonsense.
More so if you take the time to learn those underlying langauges -- and to use them PROPERLY with full separation of concerns -- you may in fact find that EVERYTHING you've been sold on said frameworks is nothing more than one giant lie rooted in apathy, ignorance, and wishful thinking; propagated not through actual merit, but from the same propaganda techniques and psychological failings such as bandwagon, glittering generalities, transfer, and card stacking that are the cornerstone of most major popular delusions; from garden variety snake oil peddling to "monuments to the stupidity of mankind" such as faith.
How are you at working with proper semantics, FULL separation of presentation from content and behavior from content so you don't have HTML full of things that flat out don't belong there? How well does what you're working on handle if client-side in the browser scripting is blocked? What about users on non-screen media targets? Are you derping in classes presentationally like "text-center", "clearfix", or "w3-red" or are you keeping your HTML saying what things ARE, and not what you want them to look like.
But Joe forbid anyone come right out and say any of that.
What can you do WITHOUT the frameworks?
Mahaveer Thing is well written SPA's ("single page applications" should anyone who doesn't know what that is reads this) in most cases should -- if the plan is for users to use it in a browser and not in a standalone like nw.js or electron -- be written FIRST as a static multi-page website.
... and progressive enhancement is one of the keys to making sites that gracefully degrade be it for device limitations or accessibility.
As the old saying goes:
That's really where a lot of the whole CSR (client side rendering) thing goes bits-up face down, resulting in websites that are nothing more than a giant middle finger to users with accessibility needs or who have scripting blocked/disabled/unavailable for whatever reason. reasons like locked down workplaces, blocking scripts due to bandwidth limitations, just plain not trusting it...
But again, if building standalone apps for electron, metro, nw.js, etc, the above doesn't really apply since no scripting, no application... but if it's going to be run in a normal browser by normal users, well.
I think that -- along with a lack of grasping semantics and separation of presentation from content -- is where a lot of people screw up using web technologies. Hence why SO many websites unintentionally tell users with accessibility needs to sod off; pathetic when meeting accessibility needs is one of the core concepts of what HTML is even for.
Of course we'd have even less of said problem if people would just take HTML seriously, instead of scoffing at it for "not being a real programming language" or being "so easy". If it's so blasted easy why do dev's -- including many alleged "experts" -- screw up so much and end up utterly ignorant of the most basic concepts of it?!?