DEV Community

Cover image for I've hit a brick wall.       
How do I progress as a React Dev and other confusions.
SandeepGamot
SandeepGamot

Posted on • Edited on

I've hit a brick wall. How do I progress as a React Dev and other confusions.

It's been 4 months that I've learnt just enough React to build some very basic apps that consume API and can also dynamically handle routes.

So far, I've build a number of projects with React that just work fine, but something that always seem to be in common with these projects are the lack of a solid structure and organisation to the project.

I strive to make my code follow the 'SOLID' principles and other such best practices, but I have frequently found myself in situation where I'm deep into a project and some feature addition requires either a lot of refactoring or duplicating the code.

Also, off-topic, something that I noticed is how rapidly Typescript is being adopted in almost every React project and is growing in demand among the tech companies.

So in all, I have few questions to ask the veterans and this community.

Where do I go from here to develop production grade React clients?

Does Typescript solve some part or all of the above problem?

I know, I'll need a lot of practice and I'm totally down for it, but I don't want to become a world-class spaghetti chef by cooking spaghetti all the time, instead I just need a way to learn about the design patterns and philosophies that Pro React Devs use.

A deep gratitude If someone is possibly open to guide me or mentor me in any way. Thank youšŸ™

Thank you for reading.

Latest comments (26)

Collapse
 
andrewbaisden profile image
Andrew Baisden • Edited

Put together a list of projects that you want to create. Something exciting and that will challenge you. For the projects make sure that they increase in complexity so that you are forced to learn new things. And then just build!

You can even take it one step further and work on projects that solve real world problems. Make them open source and put them on GitHub.

Collapse
 
endymion1818 profile image
Ben Read

TS isn’t required To be a good developer, but it will improve your code and help you understand JavaScript types better.

Collapse
 
greengreens3 profile image
Alex Boutin

Hey there!
No language would be more or less oriented for a SOLID approach, but learning Typescript can never hurt for a career since it will help you grow as a developer compared to using only Javascript.

Most challenge as a dev who want to apply best practice is.. well applying best practice from the start. It's easy to write spaghetti code and tell yourself you'll change it moving forward, but if you get guidelines (something like that) and apply them from the start, it's always easier to go forward.

Another thing I find that help, is finding other people to look at your projects. Working alone remove the pressure to do something SOLID.

If you are looking for experience that will tell companies "Look here, I know what I'm doing" don't give up. it took me 6 months to find a good Dev job that I like, but something that can help getting attraction is focusing where you want to apply and making your resume look like their website (I'm trying to find the posting here on Dev that mentioned it, will edit when I find it). It gives a punch and help you make things according to a wireframe instead of just what seems easy.

Anyway, hope my comment helps,
Have a great day!

Collapse
 
sandeepgamot profile image
SandeepGamot

Hey, felipe that's a great resource I've personally found myself learning alot through reading through other's elegant code. And your repo brings it all together. Thanks man helped alot.

Collapse
 
stereoplegic profile image
Mike Bybee • Edited

Take these steps:

  1. Breathe. You can do this.
  2. Remember that it's just JavaScript. Focus on REALLY learning that, and your React obstacles will become much easier to get past.
  3. Don't obsess over SOLID or especially DRY (if you're in too much of a rush to abstract what appears to be duplicate code, you may miss some critical edge cases - but also focus mostly on functional components and hooks so you're not repeating the same class methods over and over again).

TypeScript is good to learn to for getting a job, but dangerous if you rely on it as a crutch, a replacement for a solid understanding of JavaScript qua JavaScript. That type "safety" goes out the window in runtime, after your code is transpiled to JavaScript. See step 2 above, and take it to heart. Personally, I hate that so many people are imposing TS (and all the extra learning curve that comes with it) on less experienced devs (who you should be encouraging to learn JS as it is - loosely and dynamically typed), especially when you can achieve the same things with proper JSDoc comments and ESLint (and even get the same Intellisense if you enable ts-check for JavaScript in VS Code), without all the unnecessary, nonstandard syntax.

Even if you don't use it (I haven't in my own projects for over a year now), Redux is good to learn for getting a job (I'd guess about 50-75% of React roles are still using Redux) and because it relies on so many concepts that translate to programming in general (reducers, middleware, pure functions, etc.).

Collapse
 
annietaylorchen profile image
Annie Taylor Chen

If you want to find a job in a company:

  • learn typescript as it's used commonly in a team
  • learn testing
  • seek internship and get referees to vet you as a developer
  • when you intern, you can learn how to function in a team and learn form seniors by reading their code

If you want to be a successful freelancer

  • make amazing, eye-catching portfolio and demo sites, that's close to what your clients would want, such as landing page, small e-commerce store, home page for small companies etc
  • network like crazy
  • study algorithm hard enough to pass entry test to gain access to some freelancer platform, they will find clients for you (but some might require working experience too)

No matter which, you can also try studying Gatsby or Next.js as they're commonly used React-based frameworks. Know when to use which. Also, this year is extremely tough for everyone, including developers. :( So besides seeking opportunities, we will also have to improve our skills in every way to stay competitive.

Collapse
 
crimsonmed profile image
MĆ©dĆ©ric Burlet • Edited

Hey don't pick your brain to hard on this.

We had the same issue with comse clients at times. They completly wanna change the flow of a system and it means refactoring the whole system. It is normal and this is why you should have a strong testing pipeline to align with such consequential changes.

One thing tho think about when building an APP (regardless of language) is to think scalability. Take a simple notification system you could do it very easily as a json payload but then what. What if in the future you want to add an action to the notification or also add tracking of interactions (views / clicks). What if you want to add priority to notifications?

The idea is any feature asked from a client should be easily scalable this might mean that you will need to put extra work at the beginning to make it easily scalable. This is why when building an app it is also important to understand where the business is gonna go. What are their future plans to make sure that the piece you create will also be compatible for any other future dev they have planned.

Ideally you should always be thinking on how will the feature be expanded in the future.

On the note of Typescript do learn it and do use it if you can. It forces you to write much more rigorous and structured code.

Collapse
 
sandeepgamot profile image
SandeepGamot

Was on the fence with learning typescript, now its clear typescript is the way to go. Thank you.

Collapse
 
daltonfury42 profile image
daltonfury42 • Edited

Hi Sandeep. Some actionable advice, I hope

I think the best way to go about doing this is to collaborate with others and work on some open-source project. When you do hobby projects, you learn the framework/language. You would also pick up some design patterns, but you learn 10x when you work with "veterans" on production grade projects. These you learn though code reviews, discussions on issues etc.

I recently came across Typescript website... and they have done a lot to make it collaborator friendly. There is a roadmap here: github.com/microsoft/TypeScript-We...

Look for issues labelled "You can do this" (github.com/microsoft/TypeScript-We...)

Raise a few PRs.. PRs against "You can do this" might be accepted. You will learn a lot when you make the changes, and but learn twice as much when your PR gets reviewed.

Collapse
 
sandeepgamot profile image
SandeepGamot

That is useful link, thank you!!

Collapse
 
chidioguejiofor profile image
Chidiebere Ogujeiofor

Hello. The concern you currently have is a very good one. It shows that you are interested in learning how to write better software and not just get stuff to work. That's a very healthy ambition.

One thing that helped me to learn this was building projects with folks that are more advanced than I am. I have found that one or two of these kinds of projects can help you learn a ton(literally every day of working with these senior folks).

So if you have any in your network you could do well to interact with them on this idea

Finally, I think you are very correct, TypeScript is something you need in your arsenal. However, I think solving the spaghetti issue should be of higher priority(you can do both at the same time you see)

Collapse
 
sandeepgamot profile image
SandeepGamot

Thanks Chidiebere, stepping up!

Collapse
 
nikilsriram profile image
Nikil Sriram

Hi.. knowing typescript is awesome because it can help with the process of getting errors. But I don’t think it’d help much on getting more clients