My FeedDiscussionsHeadless CMS
New
Sign in
Log inSign up
Learn more about Hashnode Headless CMSHashnode Headless CMS
Collaborate seamlessly with Hashnode Headless CMS for Enterprise.
Upgrade ✨Learn more
What should I use / What should I learn?

What should I use / What should I learn?

Mario Giambanco's photo
Mario Giambanco
·Mar 19, 2016

There have been a lot of posts on Hashnode recently asking: which framework is the best? I spent x days learning y - what do I do now? Which is better - x or y framework ? etc...

I want to shed some light on what I think are many misconceptions new programmers have getting into this game.

1. Which framework / language is the best?

TL;DR - There is no best framework!

Long - When a new website or app needs to be built, every developer must ask themselves or the client or the boss, what are we trying to accomplish? Who is the target market? What is the target device? Who will have to maintain it? And who will continue to develop it after your gone?

Development cannot start until we have a goal and an understanding of what we need to build. If we're building a blog, we might use Wordpress / PHP. If we're building an online community (like Hashnode) we might use AngularJS or React +, or Rails or PHP or C#.

When your scoping out a project, this is when having knowledge of many languages and frameworks is valuable. We all like to think every language can do everything and in "some" cases, that might be true - But where NodeJS is great for realtime single page apps, PHP sucks at that. Conversely, PHP is great at multi page apps with an RDBMS database behind it and NodeJS sucks at that. It's a matter of knowing a language / framework limits, knowing the scope of a project and determining which is the best fit. You wouldn't build a sports car (the website) with a lawn mower engine (the framework), and you wouldn't know what engine to put into the sports car without scoping out the project first.

Who is going to maintain this after your gone? If it's for a company - most companies don't like to be locked into new or obscure technologies. Companies need to take calculated risks and that means vetting a few languages / frameworks before going into development. Many will build prototypes in multiple languages and frameworks - see which one the team likes best; which one performs best and pick one. This could take months of development just to come to this conclusion. Sometimes, this work might be done and get completely thrown out and they stay on the platform their on.

2. Which is better - AngularJS or React or ???

TL;DR - This question is DOA. Stop asking it - it's irrelevant.

Long - React is JUST a view. It does nothing but build components that get injected into the DOM and produce HTML. It doesn't process data; it doesn't serve pages; it can't communicate with 3rd party API's. Nothing. What it does do is allow a language (NodeJS in many cases) to say - Hey! I need to show the user this tabular data; got a snippet of HTML to do that? React: why yes! yes I do! Gimme your data and I'll mix the 2 together and spit it out to you.

AngularJS can on the other hand, do all of that. It can present multiple pages; it can combine data with html, it can spit the html out to the user, it can interact with 3rd party APIs.

Ever been to a fancy restaurant? The one where you have to wear a shirt and tie? Sometimes, the waiter will tell you the menu is A La Carte. A La Carte means there are no do it all dishes. Theres no 8 ounce grass fed filet that comes with choice of soup or salad, baked potato or fries and your choice of white or red wine. It's your choice (and often, more expensive) what you get. Choose your wine - want something dry? Go with a Pino Noir. What something fruity? Go with a Zinfandel. On to the appetizer - Do you feel like fish or chicken? What about your entree? Steak is a good choice, but you may want duck. Do you want a side? We have french fries, baked potatoes, asparagus, etc... You choose every aspect of your dinner based on what you feel like tonight and what you can afford. That's React. Here - We have Steak (React) ! The steak is great! But it's all you get. You need to decide what else you want to go with it.

AngularJS is going into a super fancy McDonalds and ordering a #1 - a #1 is a Big Mac with Fries and a medium soda. You can order other items, but this #1 will get you through 95% of your meal. AngularJS gives you almost everything you want / need to get through your lunch (project)

3. I Learned X, Y, Y languages / frameworks / markup - whatever in X days. I must be a pro! But... what do I do now?

TL;DR. Your not a pro. You roughly sat through the equivalent of a weekend seminar and have an idea of how stuff works, but no real comprehension of the vast language / framework you've just pursued. You probably can't debug it; write it without looking at a reference; or read other people's code. Your still new to this.

Long - So what do I do? Build. BUILD, BUILD, BUILD. Build, release, get feedback - rinse, repeat. Rinse, Repeat. RINSE, REPEAT.

Would you see a doctor who spent 1 week learning open heart surgery ? I hope not. If someone is gonna cut into your body and work on stuff, you'd want to see credentials, proof that they've succeeded doing this before and that your not going to die!

Programming is exactly the same (almost, haha - no one is going to die, hopefully). Employers don't care if your read 1 book or hundreds. Employers want to see real, in production code that works. How do you show them that? By building projects. It absolutely, 100%, doesn't matter what you build. Build a chat app. Build a website to track your diet. Go through every single page of Facebook - write down every single feature you can find and build that. Don't worry about scaling it; don't worry about choosing the right framework; don't worry about choosing the right data storage. If your new to this game, you will fail. Period. You will fail over and over and over again until you think this is the hardest thing to do in the world. Patients (projects) will die. They'll bleed out (security vulnerabilities); their loved ones (your customers) will get pissed and you'll think you suck at this. Start over; find a new patient (project) and try again. Learn from your failure before and try not to do it again.

4. So as a new programmer, what framework do I use? What language do I learn?

TL;DR - Pick one, any one. Put them all up on a dart board and throw a dart. It doesn't matter. Learn something, stick with it and learn it well.

Long. What are you trying to accomplish?

A: I need a job! Ok - goto cyber coders; monster; dice, whatever - run a few searches for languages; see what's available remotely or in your area and learn that.

B: I'm apart of a team of programmers, we're starting a new project and their asking me! Trust me, their not asking you. Their asking the other developers with years of experience and success in producing working code. They may ask you of your opinion, but ultimately, it's up to the senior developers, not the junior developers. If they are ask you, it's a brand new team, no one has more then a year of experience and the project is shooting from the hip and seeing what sticks. If you need constant, reliable income - walk away. This isn't the project for you. If you've got some cash and can risk loosing your job - stay! It'll be good experience.

C: I'm unemployed, in a foreign country and need money now! Go work at McDonalds. Seriously - if you can't afford to live; take care of that first. Working any kind of retail or fast food will teach you how to interact with customers, learn what their needs are and how to help them.

D: I have a great idea and want to run with it! Great! It's incredibly difficult to come up with an idea for a new project that has any kind of value. You accomplished the first and hardest part. Now, research languages; build prototypes and see what works best. Did you know Pinterest was built in 1 weekend by 2 guys using Wordpress? They had an idea; picked a language that worked for them and ran with it. When they saw success, they took a step back and said Hey! Wordpress isn't the best fit here anymore. We should try something different! And so they did. But not until they got feedback from their customers; saw failure (Wordpress doesn't scale well) and tried again.

5. I'm afraid of failure

TL;DR - find a new career. Programming is full of failure. Try farming, but that's full of failure also.

Long - Failure can be defined in any number of ways in programming. Failure is having a bug; having inefficient code; having a crappy UI; not understanding your customer; not making any money; server outage; hack attempt, etc...

You must, MUST, experience failure before you can succeed. Any programmer that tells you they are the best is either pulling your chain or disillusioned. NO ONE writes perfect code; No one tries once and succeeds; No one gets 1 million customers in 1 day. Every single website you've viewed has gone through any number of revisions. Those past revisions? Failures in 1 way or another. No company or programmer wants a complete re-write of their entire product. Look at GIT commit history. Any commit after the first initial push? Proof of failure. Something was wrong; not tested; didn't work for joe the plumber; They learned from that mistake, made changes, and moved on.

Programming is the writing of a story to accomplish x. X can be anything. Want to make money? You can do that with programming. Want to help people? Programming. Want to change the world? Programming. The cure for cancer will ultimately come down to a bunch of highly skilled programmers, working with highly skilled doctors and scientists to find a solution to a problem. They have failed; many many many times. But they keep trying.