Skip to content

Latest commit

 

History

History
590 lines (490 loc) · 24.7 KB

dev.md

File metadata and controls

590 lines (490 loc) · 24.7 KB

All About Development

Web Development Basics

  • What is web development
    • How websites work
      • website is simply a collection of web pages of codes, codes that describes that layout, format, and content on a page
      • web server is a internet-connected computer that receives the request for a web page sent by your browser
      • domain name is the address that you type into your web browser address bar to get a website
      • browser connects your computer to the server
    • Front-end and Back-end
      • Front-end is that part of the website that you see and interact with directly in your browser
        • also known as the client-side
      • Back-end is part that everything that happens behind the scene
        • it is also about how website works
        • it's also known as server-side
    • Code editor
      • code edit is one of the most essential tool that you will use to build a website
      • this provides the means for a programmer to create and modify (edit) programming language source code
      • some of the most popular free code editors
        • VS Code
        • Sublime Text
        • Ato
    • Basic Front-end
      • What is HTML
        • HTML is the standard markup language for creating Web pages
        • HTML stands for Hyper Text Markup Language
        • HTML describes the structure of a Web page
        • HTML consists of a series of elements
        • HTML elements tell the browser how to display the content
        • HTML elements are represented by tags
        • HTML tag labels pieces of content such as "heading", "paragraph"
      • What is CSS
        • stands for Cascading Style Sheets
        • describes how HTML elements are to be display on screen
        • saves a lot of work and control the layout of multiple pages all at once
        • define styles for your web pages, including the design layout and variations in display for different devices and screen sizes
        • CSS rule set consists of a selector and a declaration block, e.g., h1 { color: blue; }
      • What is JavaScript
        • JavaScript is a programming language that was designed to run in the browser
          • you can make your website dynamic, meaning it will respond to different inputs from the user, or other sources
        • one of the 3 languages all web developers must learn:
          1. HTML to define the content of web pages
          2. CSS specify the layout of web pages
          3. JavaScript to program the behavior of web pages
    • Tools
      • package managers
      • build tools
      • version control
    • Additional Front-end
      • SAAS
      • responsive design
      • JavaScript frameworks
    • Basic Back-end
      • servers
      • programming languages
      • database
  1. You don't need a degree to program
  2. Googling is a skill
  3. You can't learn everything
  4. Writing easy code is the hardest thing to do
  5. There's no time for proper testing
  6. Time estimations are never even close
  7. You'll feel ashamed when you look back at your old code
  8. You'll spend way too much time looking at bugs
  9. Internet Explorer is the worst browser that was ever created
  10. Work stops when servers are down
  11. You'll pretend that you understood everything your colleague said
  12. You don't need to memorize everything
  13. You need to be a good problem solver
  14. You will be reading a lot
  15. Responsive can be a pain
  16. Knowing how to debug saves lots of time
  17. You'll be looking at suggested solutions that won't work for your problem
  18. A good IDE will make your life much easier
  19. Working with the terminal can make you more efficient
  20. Don't reinvent the wheel
  1. Think to solve
  2. Practice
  3. Learn about Data Structures and Algorithms
  4. Learn programming paradigms
  5. Look at other people's code
  • Have a framework
    1. Understand
    2. Plan
    3. Divide
    4. Stuck?
      • Debug
      • Reassess
      • Research
  • Practice
  • Absorb
  • Build
  • Iterate
  • Master the language, then learn frameworks
  • Solve coding challenges
  • Use StackOverflow and Code Review as much as you want
  • Read a lot of code
  • Install a linting tool
  • Code idiomatically
  • Build something!
  • Don't give up
  • Jedi tip: while(true) => study()
  1. Spend time to organize stuff
  2. Use version control for everything
  3. Invest in books
  4. Don't fear the command-line
  5. Master your IDE (tools)
  6. Write and share everyday learning
  7. Watch conference videos
  1. Volunteer for Things You Don't Know
  2. Ask to Pair Up
  3. Talk about What You're Doing (and What You're Not Doing)
  4. Write a Blog
  5. Have a Notebook and a System
  6. Keep Notes about Your Wins
  7. Have a Time Slot for Important Tasks
  8. When Stuck, Take a Break
  9. Don't Chase Silver Bullets
  10. Build Those Habits!
  1. Clean Code by Robert C. Martin (Uncle Bob)
  2. The Clean Coder by Robert C. Martin (Uncle Bob)
  3. Refactoring by Martin Fowler
  4. Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides
  5. Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
  6. Soft Skills: The Software Developer's Life Manual by John Sonmez
  7. Clean Architecture by Robert C. Martin (Uncle Bob)
  8. The Effective Engineer by Edmond Lau
  9. The Pragmatic Programmer by Andrew Hunt & David Thomas
  10. Additional Resources
  • Really Understand Git and Semantic Versioning
    • Pull Requests (or PRs as they're known on GitHub)
    • Merge Requests (this is what GitLab calls PRs)
    • Merging
    • Rebasing
    • squashing commits
    • Semver (semantic versioning)
  • Come prepared to your standup meetings
    • what you accomplished the previous day
    • what you're working on today
    • what's blocking you
  • Learn how to ask for help
    • Asking for help in person
    • Asking for help over instant messenger
  • When receiving help
  • Make sure that you manually test your code
  • Learn to write testable code and how to write tests for them
  • Constantly be learning
  1. Everything Has More than One Solution
  2. Get Involved
  3. There's a Resource for Everything
  • Foundations (HTML/CSS/JS)
  • Frameworks
    • Bootstrap and jQuery
  • WordPress
  • Domain Names and Hosting
  • Backend Frameworks
    • Django, Ruby on Rails, and Node/Express
  • Node and Express
  • Frontend Frameworks
    • React
  • DevOps
    • Docker
  1. Learn HTML
  2. Learn CSS
  3. Learn Javascript
  4. Learn CSS Preprocessors
  5. Learn a Single Page Application Framework
    • ReactJS
    • VueJS
    • Angular 5
  6. Misc. Topics
    • Git (Version Control)
    • Unit Testing (Javascript)
    • Javascript Tool Libraries
      • jQuery
      • Lodash
    • CSS/Style Frameworks
      • Bootstrap
      • Foundation
      • Semantic UI
      • Material Design
  7. Practice, Practice, Practice
  1. Choose Your Weapon (Language)
    • Python
    • Javascript (NodeJS)
    • Ruby
    • Java
    • Other Languages to Consider
      • PHP
      • C#
      • TypeScript
      • Go
  2. Learn a Relational Database
    • Postgres
    • MySQL
    • MS SQL
  3. Learn Version Control (Git)
  4. Learn Web Application Framework(s)
    • Flask (Python)
    • Django (Python)
    • Express (Javascript)
    • Ruby On Rails (Ruby)
  5. Misc. Topics
    • NoSQL
      • Redis
      • MongoDB
      • Memcached
    • DevOps
      • Build Tools
      • Continuous Integration / Continuous Deployment
      • Scripting
      • Cloud Technology
      • Linux Administration
      • Monitoring Tools
      • Configuration Management
    • HTTP
    • REST API Development
    • Data structures and Algorithms
  1. Start Here
  2. How to learn
  3. What is the Most Useful CS Bookmark You have
  4. Programs & Classes
  5. Learn HTML
  6. Learn CSS
  7. Learn JavaScript
  8. Learn React.js
  9. Full Stack Tutorials
  10. Learn Node.js
  11. Learn Python
  12. Learn APIs
  13. Learn Databases
  14. Learn Authentication
  15. Learn Git
  16. Games & Challenge Websites
  17. Free Programming Books
  18. Open Source Contribution Opportunities
  19. Am I Ready to be a Developer?
  20. Software Developer Success Stories
  21. Resume's, Portfolio's, LinkedIn, Interview Prep, & Salary
  22. Information
  • Humility
  • Algorithms
  • Design Patterns
  • Programming Paradigms
  • Data Structures
  • Testing
  • Personal portfolio
  • Articles
  • LinkedIn
  • Twitter
  • Stack Overflow
  • Open Source
  • GitHub
  • Conferences
  1. Slow down and enjoy the experience
  2. Don't rely solely on freeCodeCamp to learn how to code (Be as resourceful as you can)
  3. Embrace the Read-Search-Ask method
  • Underpromise, overdeliver
  • Perfect is the enemy of good
  • Stay on path
  • Collect feedback early
  • Seek before you ask
  • Optimize for simplicity
  • Desire
  • Purpose
  • Motivation
  • Selecting the wrong teacher/mentor
  • Trying to learn everything at once
  • Striving for perfection
  • Selecting the wrong tool
  • Swimming in tutorial purgatory
  • Relax you will get there
  • Ask questions
  1. Get through to real people
  2. Start small and work your way up
  3. Study like your future job depends on it (because it does)
  4. Put your best foot forward
    • Sell Yourself
    • It's a Two-way Conversation
  5. It's a marathon, not a sprint
  1. Find developers to talk to
  2. Ask the right questions
  3. Research and prepare
  4. Get hired
  • But why be a developer?
    1. There is a huge demand for developers
    2. The work can be very varied and interesting
    3. The work can be flexible
  • How to become a Developer
    • Coding Bootcamps
    • Get a Mentor
    • Get a Job as a Developer
  • Starting a Plan
    • Finding Your Job
  • Creating the Plan
    • HTML and CSS
    • Version Control
    • JavaScript
    • Building Your Portfolio
  • The Job Search
    • Using Recruiters
  • Continued Improvement
    • Learn a library
    • Completing the HTML and CSS Lessons
    • Advance Your CSS (optional)
    • Learn how JavaScript Works
    • Build Projects
  • Interviews
    • Know your CV
    • Know about the company
    • Practice your skills
    • Be early, polite, and confident
    • Ask Questions
    • Follow up after the interview
  1. Build your Roadmap
  2. Train your focus
  3. Chase your curiosity
  • What's Your motivation
  • Research, research, research
  • Beating ambitions goals
  • Detailed schedule
  • Ignore the haters!
  • Maximizing time
  • Learn what others do
  • Just ship it!
  • The 80/20 Rule
  • Keeping things moving forward
  • Month 0 - Udacity CS101, Harvard CS50
  • Month 1 - Harvard CS50, Linux, 1st Meetup, freeCodeCamp
  • Month 2 — YDKJS, freeCodeCamp Front End, React
  • Month 3 - freeCodeCamp React, CodeClub, Starting freeCodeCamp Back End
  • Month 4 - Finished freeCodeCamp Back End, Yeggle
  • Month 5 - StockIT
  • Month 6 - jobSort(), Job Hunt Prep
  • Month 7 - Testing, Job Hunting
  • Month 8 - Night Shift, Redux, Open Source, Onsite Interview
  • Month 9 - Job Offer
  • Advice
    1. Find out what motivates you and use it to your advantage
    2. Make goals and meet them
    3. Go to meetups way before you think you are ready
    4. Contribute to open source way before you think you are ready
    5. Start applying way before you think you are ready
  • Commit to learning
  • Follow a structure
  • Build things
  • Be bold
  • Build your network
  • Make it work
  • Speed Up Your Learning
  • Build Projects
  • Knock, Knock, Neo
  • It may take you even less than a year (What?)
  • Make sure you've covered your basics
  • Don't give in to rationalization
  • Don't start with your BIG IDEA
  • Where to get ideas for projects
  • Structure your project first
  • It's okay to get stuck
  • Be in over your head
  • Resilience
  • Set a daily time-bound goal
  • Copying code is wasting time
  • Don't spread your efforts around
  • Your portfolio is what will get you hired
  • You will do better at interviews
  • You will identify the real gaps in your knowledge
  • Every new project scares you. What to do?
  • Forget perfectionism
  • Let your creativity flow!
  • Give in to a distraction - once in a while
  • Get feedback on your projects
  1. Learn to code
  2. Work on a few personal projects
  3. Get your first programming job or internship
  4. Learn data structures and algorithms
  5. Prepare for coding interviews
  6. Apply, apply, and apply again :)
  • Writing code that works is easy
  • Writing good code is harder
    • It's understandable
    • errors are caught
    • It's documented
    • It's maintainable
  • How to write good code
    • Conception
    • Code reviews
  • Working efficiently with a team of developers can be THE challenge to face
    • Divide the work up-front
    • Conception (again)
    • Move fast
    • Fake it until you make it

Other Articles