Programming Concepts & Terms

There are 3 core web developer languages:

Programming language levels; high level, assembly code, machine language, hardware

Tools needed & Considerations

Web Development vs software engineering vs hackers vs Fullstack design

Web Development - someone who has a strong competency in front end design with basic competency in backend programming. Focuses on blogs or websites. Websites don't focus on back end with lots of calculations, information, and processing. Focuses more on how it looks with basic functions. Graphic and user interface design. LAMP stack or WordPress development.

Software Engineering - heavy on back end development and some front-end. No UI or graphic design.

Fullstack developers - very rare; good at both front and back end development.

Full Stack Designer - A graphic designer that can also program. Less people on your team as they can do more; Design can be better captured in the final product;

Hackers - implying that someone knows basic back end/front end. No traditional backgrounds. Not focused on usability. Opposite of production developers. Ugly but it works.

How to learn Front End Development

HTML, CSS, Javascript. Setting up feedback loops and able to see it. Interaction with Ajax Calls. Learn HTML first, then download websites and change the CSS. Understand nesting and inheritance. Be able to create it from scratch and be able to edit existing sites. CodeAcademy helps with learning javascript. Javascript is all about action and events and interaction. Bento is also a good resource. Learn jQuery, Angular, React

How to learn Back End Development

Pick the language you want to learn. Python, Ruby, PHP, Java; Pick it based on the industry or the company you want to work for;

Frameworks & APIs

Frameworks are a predefined structure that programmers can build upon by changing existing code or adding on code; Programming is an instructions list and Frameworks are essentially pre-made code. Essentially the Frameworks function is similar to coding templates for specific languages.

Front-end Frameworks; HTML, CSS, Javascript - Template websites provide a CSS sheet and a Grid system/Layout (style sheet that lets you put objects such as buttons or images into columns), UI pack/kit (buttons & objects) will give a premade set of buttons, headers, sliders, components, frames, submitting forms, popups, search boxes, error messages. Interaction snippets are pieces of action code or bits of javascript. Bootstrap is a very popular front end framework.

Back-end Frameworks - When you set up the server side files, frameworks help set up the file and folder structure. CSS, Images, APIs, Models, Themes; They will give pre-made code for functions. Example, every time you pull from a database you have to write a query to pull the information. The frameworks will provide you with a template for that. Frameworks might index the information and give the system where you can search it. Downloading files. Optimizing images, saving and recalling them. Setting up APIs or setting up a payment terminal. Frameworks will provide structure. Full frameworks give a lot of premade functions and support for a wide variety of use cases. Micro-frameworks focus on core functions, smaller and easier to maintain.

Development Environment and the IntegratedDEs;

IDEs provide a template system so that you can program faster; They're similar to frameworks; programs that programmers use to write programs. They include tools that make it easier, has spell check for code or autocomplete features. They help developers organize and structure files before they're uploaded to a webserver; sometimes it includes version control. They're an automatic development environment where you can write code and test it before you can upload it to a website. IDEs can be expensive or adds extra code based on a template.

Framework Examples: Visual Studio for low level programming; Xcode for iOS; Java Netbeans; PHPStorm

**Libraries function similar as an IDE or Framework; ReactJS and JQuery; HandleBars & Mustache.

API Application Programing Interface

Layer that runs outside of your normal code; basically a mini application that runs on top of the larger application that you're building and used to facilitate the transfer of information to external apps that ask for them; they can handle transfers & fulfill info requests; they limit what other apps can ask for; APIs give out details in the best way to access the information you have so it doesn't make a mess or slow down the system of the host. There social media APIs function to let you login to the account of a website and provide the extra data from the social media sites; Less building, more information requests; APIs can be a business model; crunchbase is a business model that has a bunch of API's that you can use; Menu = API, placing an order = Executing an API Call, Food = Systems response. You still need the switch code to reference the API

CMS - Content Management Systems

Massive applications that can be installed on a web server and then let a website owner create and manage their website through intuitive and non-programmatic administration panels. Wordpress & Drupal focus on newspapers, blogs, forums, Magento focuses on E-Commerce including Inventory management, SKUs, product imagery; all 3 are built in PHP. Allows the owner to use template websites that can easily add and manage functions such as tracking analytics, sharing information, commenting, storing user submitted content. Site owner & Site contributors

WordPress focuses on Themes. Themes affect the overall look.
Plugins are miniature application that plugs into WordPress. They mostly focus on popups.
Extensions - a large piece of another code base you're attaching.

The Free CMS Websites acted like platforms while using their site and everything made was stored on their servers or sometimes listed directly on their domain.

OOP - Object oriented programming

A collection of functions and data that can be grouped into what is called an “object.” Then when you are programming and you need to access some of the information in a class (not object), it's called “instantiation.” It means that the program being written has access to a large chunk of code stored somewhere else. Save time by grouping data and functions together; apply attributes broadly across objects. You create a class and everything in this object is going to be output in a certain way or format. You make mega functions that you call in later to save time programming.

  • Examples of class; Color, Font, Height.
  • The group of classes would apply to the object for each product. In eCommerce, it would be the item for sale, if it's social media then the object = person.

    OOP scales better than Procedural paradigm (the standard way of developing something; Do this, send this, call this, send this, output this; scale is growth based on users.)

    Other Programming Paradigms; Functional, Imperative, Logical, Procedural

    Programming Language Concepts; Execution Order, Design Space, Language Design, Higher Order Programming and Functions, Implementation Advantages and Drawbacks. Other related topics would be Process Management, Process Scheduling, Concurrency Issues, CPU Scheduling, Memory Management, Virtual Memory, Mass Storage Systems, Input/Output System

    Integration

    Integration refers to when you merge/collaborate code with multiple people or large existing code like a CMS. It's meant for efficiency.

    Generally you make an elaborate server setup that can automatically do all of the integrations for you. It allows you to pretty much check progress and make sure that all the parts function together from a technical perspective. 2 different servers; one is called a version control server and the other is a build server. People will take what they've been working on throughout the day and upload it onto the version control server. The build server then checks the version control server and sees if the code executes properly or if there are errors or general issues. Then everyone gets together and troubleshoots it. Generally done with larger companies.

  • Continuous delivery -> Continuous deployment -> Continuous integration
  • With smaller companies you put it on the test and see how it operates in a browser and with users and if it works then you move it over in batches to the live server which is what people see when they go to the URL.

    Responsive Design

    What people used to do is to give separate instructions depending on what screen is loading. There's an app that detects the size of the screen that's viewing it and it automatically stretches or contracts to fit the screen. You can tell responsive design has been used based on the sites usage of white space. There's a lot more buffer zone between objects; Floating code is used; Lots of bug testing; 5 major browsers in different interpretations.

    Absolute vs Relative.

    Absolute has fixed object positions based on pixels.

    Relative is based on where the other elements on the page are.

    Hybrid App

    Native app is written in the code that the mobile OS recognizes and accepts; native spp for iOS would be in Objective C; Android is written in Java.

    Web Apps are websites shrunk down to fit and work on a smaller screen that is packaged to look like an app.

    Hybrid App is an app written in basic web code that goes into a system like Adobe PhoneGap which functions as a compiler that takes that code, compiles it and interprets it in a way that every mobile OS can understand. Downsides are that it lacks interactivity. Harder to control interactivity, less core functions as it's underdeveloped. Netflix uses Hybrid

    Like Adobe PhoneGap; Adobe Air takes the web apps and compiles it for your desktop.

    Server Types

    You can have Saas on PaaS and then Iaas as a stack. Difference between software and a product; product you own, service you don't. Data that is stored and accessed on a different device or server is considered cloud based.

    SaaS - Software as a Service; the company houses it for them, maintains it for them and leases it out to the user. Web version of the system. Some companies like Adobe make logging into the software only accessible through the web and have the software downloaded to check if you paid to use it. If you have it, shut it off and prevents you from using it. Canva is a simplified version of photoshop. Charge less, but more often and for longer. Access your files anywhere. Continuous updating

    PaaS - Platform as a Service; Set of tools, resources, software that come together to let you build software on top of it. ie Facebook or Slack; designed to assist in building software; AWS, Microsoft Azure (.NET framework, Microsoft SQL, Live Services), Heroku.

    IaaS - Infrastructure as a service - 90% Web Storage like Amazon EC2; Security and firewalling; Routing and network services; Maintenance and load balancing; services like that automatically scale based on your users so that you don't go offline instead of your server overloading.

    Tech Stacks; Refers to Web and Mobile apps

    You reference technology in the form of stacks and you have things on platforms. So first floor would be the OS that's acting as an interpreter, next level would be a browser, then the websites would be the next level. That's how programs would work. When you have technologies that reference each other, that would be called a stack. Stacks are a specific series of technologies.

    General Stack format would be Operating System -> Server System -> Database -> Back-end Language; by default everyone uses HTML, JS, CSS as front end so that doesn't need to be specified.

    LAMP Stack; Linux - OS, Apache - server software, MySQL - database (user form data or profile info), PHP; Used most often and easiest to learn.

    WINS; Windows server -> IIS server (host) -> .NET -> Microsoft SQL Server; good for companies that have security concerns or finance. Great for big companies, expensive but slow.

    MEAN Stack; Mongo DB (database system) , Express (back-end web) , Angular.js (front end framework), Node.js (back-end runtime environment); learn for personal preference

    FullStack Javascript - Interaction Technology that works on your browser but not your server. Node.js is a system that allows you to create an environment on your browser and then test your javascript. It's not a library or a framework. This allows you to do Front-End and Back-end functions like querying databases, or making calculations, or pulling information from APIs.
    Asynchronous Javascript; multi-threading, the javascript will be running processes simultaneously so you can be pulling information from the back-end and checking basic validation from the front end. It doesn't work very well with databases as it will be pulling information all the time. Updates pages instantly.

    Languages

  • Python - High level programming language that would need a program to convert the language so web browsers or OS can understand it. Uses frameworks like Django & Flask. Used with Web or Desktop platforms.. Better used for technologies like Artificial Intelligence, Machine Learning, Data Analytics. Python also proves to be useful for web development, creating enterprise applications, and GUIs for applications.
  • PHP - PHP Hypertext Processor; Easy to learn general purpose scripting language used for server-side web development but has inefficiencies. Open source language(free). Facebook is built via PHP. Word Press also uses PHP. Cross-platform for destop, mobile, web, and provides a way to do back-end web scripting. Used for CMS (Content Management Systems), eCommerce platforms, and web applications.
  • Ruby - Fast and time saving. Small community, expensive. Poor performance in larger systems; Esty and Groupon use it.
  • SWIFT - New programming language designed by Apple for their iOS. Uses frameworks like Alamofire, RxSwift, & Snapkit. It's more forgiving than Objective C since Objective C is a low level language and it's very strict. Learning SWIFT without Objective C is harder. Paired with Apple's Cocoa and Cocoa Touch framework, Swift can be used to create apps for virtually every Apple device, such as iPhones, iPads, Mac, Watch, and other devices.
  • Java - good if you want to work at a large company or Android Platform. Uses frameworks like Spring, Hibernate, Strut. Used with Web, Mobile, & Desktop. Used extensively on Android, it's a necessity for Andriod Developers. Allows developers to create apps for banking, electronic trading, e-commerce, as well as apps for distributed computing.
  • C & C++ - very low level programming languages that allow for fast performance. Used to create system applications, real-time systems, IoT, embeded systems, games, cloud, containers, and more. Mostly focused for operating systems and system tools.
  • C# - Focuses on application and webdevelopment using .NET. Uses frameworks like .NET, Xamarin. Used on cross-platform, mobile and enterprise software applications. Designed with the focus of the .NET ecosystem so developers can access the large rage of libraries and frameworks offered by Microsoft.
  • Javascript - a high-level programing language that functions as the top frontend programming language for the web. Used with Frontend Scripting or Web & Desktop platforms. Uses frameworks like Node.js, Angular, React.js, Vue, Metor. Handles all the interactions offered by webpages, such as; alerts, events, popups, and etc. Mostly used for enterprise application development. Mostly used for interactive web developement
  • R - Mostly used for data analysis, data science, behavior analysys, or Machine learning projects, it's an intermediate level language. Mostly used on Desktop platforms. Language works well with C, C++, Python, Java, and .NET.
  • Go or Golang - Focused mainly on server-side programming. Used for crossplatform but mostly desktop. Used with frameworks liek Revel or Beego. Fast and simple syntax that is easy and efficient to use. Mostly used for back-end technologies, cloud services, distributed networks, IoT, console utilities, GUI applications, and web applications.
  • SQL - Back-end database management. Allows storing and access to vast amounts of data. Enables developers to create and manage tables and databases for storing relational data over hundreds and thousands of data fields. Databases use SQL through an RDBMS.
  • Miscellaneous Terms & Concepts

  • Developer Tool Console; powerful free tools for debugging your code. You can experiment with JavaScript in the console. Most web browsers have a developer console. There are different ways to access the tool. Right-click on a space on a webpage and choose to inspect the element. Or Alt+Command+I for Mac; Ctrl + Shift + i for windows. Or F12
  • Javascript Linting Tools are code quality checking tools. Brackets text editor uses JSLint and ESLint. Will highlight errors, could be syntax errors.
  • Output is how you display the results or statements; can be screen, console, or window after the program is run or executed.
  • Input - used to receive information from the user in order to output a result. Forms and text boxes are methods of input that are entered from HTML and javascript reads the data and inputs it into your program.
  • Printing - will take all of the work done so far and present it on the screen.
  • Commenting - How well documented is the code? It's additional explanations about the code; if there's a specific symbol assigned per each language that excludes it from the rest of the code. For example, python has a # followed by a space then anything after “# “ will be excluded from being run. It doesn't have to be in front of a line. For PHP is /* with */ ended for what to ignore.
  • Javascript Events are things a browser or user does to have HTML elements have interactivity to occur.
    Event listeners wait for an event to occur to respond. Could be onclick.
  • Variables - stored information that can be manipulated later. For example, you would have items on a menu, the name of the item would be the variable and then the cost would be the value assigned to the variable. Formulas are then associated based on a subtotal = combined variables selected with the amount and then tip = another amount, then you would have a total variable defined by (subtotal*tip)+subtotal. If variables were not an option then you would have to manually enter the cost each time. It would also be easier to adjust the value that was assigned instead of going through each item and manually adjusting the prices since they're referencing the same variable.
    Standalone statements are called literal variables;
  • Strings - Have to be stored in a variable so that the defined variable isn't confused as a command; example variable = “string shows text from here”; Escape commands are for variables that have confusing text that can be confused for code.
  • Arrays - Series of pieces of information that are all formatted the same; for example, it would be all numbers, strings, or variables. The “Pointer” is essentially the position of the variable in the array. This will essentially reflect back the data based on the position or order it's in.
  •             $value = array ('string1' 'string2' 'string3')
                If input () == value; == means i equal toPrint $value; 
                this will return 'string1' 'string2' 'string3' on the screen
    		
  • Statements - instructions written to tell the computer what to do; group of words, numbers, and operators that perform a specific task. Statements are composed of Values, operators, Expressions, Keywords, comments. Values are the data, they can be numbers, string, or text. Statements are executed from top to bottom, left to right, one by one.
  • Expressions are any reference to a variable or value or a set of variables or set of variables and values combined with operators. Ex a = b * 7; has 4 expressions. 7 is a literal value expression. B is a variable expression. b * 7 is an arithmetic expression. a = b * 2 is assignment expression where the b * 7; is an expression statement.
  • Algorithm - the written set of instructions
  • Source code - refers to the plain text instructions in the text editor
  • Pair programming - Two people write one piece of code. Designed to increase quality; architecture makes a big difference in programming. Code quality improves, pairing generally has a senior developer with a junior and they learn an enormous amount from the senior.

  • User Flow Charts
  • Agile, Scrum, & Kanban are project management methodologies that relies on incremental developement.
  • Loops - blocks of code that repeat until a condition is met. 'For' loops will repeat a certain number of times and 'while' loops will repeat until a condition is true.
  • Functions - blocks of code that perform a specific task. Ex; take in input, process input, 'return' a result.
  • Conditionals - boolean statements or expressions that evaluate to true or false. Mostly used to determine 'if' statements and 'while' loops
  • New Guard; WYSIWYG; What You See Is What You Get - Build your site visually and you grab what you want and place it where you want.
  • CRAP - acronym for Contrast, Repetition, Alignment, and Proximity. Design philosophy for giving your site a professional appearance.
  • CRUD - acronym for Create, Read, Update, Delete. Refers to the four functions that are necessary to implement a persistent storage application.
  • GIT - repository for storing project code; it's a process that allows version tracking.
  • GITHUB - Online host that stores repositories for branching and version control. It has Forking that allows for creating versions of the code that's already been uploaded.
  • **Things to consider for eCommerce: Accepting payment in a different currency, How to detect user fraud or pick up on a bad credit card, Routinely offer sales on certain items to boost sales.