I went to a web development meetup today at the public library on Cesar Chavez, in downtown Austin, hosted by General Assembly. I thought it would be a great opportunity to learn about General Assembly. The class was hosted by Elias Carlston, a web developer who started out as a coding hobbyist. He emphasized the importance of notation in code, and the similarities between learning a foreign language and learning to code.
He defined a bug as code that produces an undesired output. Sometimes a bug can be redefined as a feature, haha, if you change your mind about the usefulness of the output. Web development is a niche of programming. Some programming, for example, in certain car parts, is not web development, as there may not be a connection to the internet. He mentioned DRY, "don't repeat yourself." He mentioned that it is usually not ideal to reinvent the wheel, so we should adopt code from a library, if possible.
Computer scientists are not necessarily web developers, and web developers deal more strongly with monetizing the product and with user experience, for example. He discussed Twitter's fail-whale, and how letting users know how many followers they had in real time was taking up a large amount of computing power.
There's a quote:
"It's going to be hard whether you learn fundamentals or not...might as well be a superstar."
Dennis Rodman was told he good overall, but was great at defense. So, he focused intensely on defense, and became great.
We should learn the fundamentals so as to build a solid foundation on which to grow on. There's usually a complicated way to do things, and a shortcut way to do things, for example, via the use of a library. We should learn the complicated way to it, so that we understand why the shortcut way works, but we should use the shortcut way.
General principles:
1. Security
2. Stability
3. Scalability
The speaker also spoke of premature optimization, which deals with not optimizing code if you don't have to, basically in order to ship a feasible product within a desired time frame. We can then optimize once it needs to be done and we have more resources with which to do so.
You have to enjoy solving problems, coding, and the logical/mathematical beauty of the code, in order to be willing to put in the time required. The distinction between front end and back end only began to be really discussed in about 2008. However, there isn't a hard line between the two. Elias stated he's never had a project where he didn't have to at least do a little bit of back end work (Elias is a front end specialist).
HTML, CSS, and JavaScript are the most common files. An analogy could be made with the human body, with HTML as the skeleton, CSS as the skin, and JS as the muscles. If a browser doesn't understand an HTML tag, for example a geo-location tag run on an older browser will simply be ignored. This makes HTML very flexible, because support for new tags can be added to newer browsers, without crashing older browsers, as the new tags will simply be ignored by the older bowsers.
He spoke of single page apps, noting gmail as an example, which is in JavaScript. He said these apps are becoming more and more popular, because the page doesn't need to be reloaded to access various functions of the app. JavaScript is able to make these pages, and so front end developers are becoming JavaScript developers.
JQuery can be used to minimize problems caused by developers having to create different versions of their code for each browser. JQuery is becoming less necessary as browsers are standardizing.
Elias then moved over to talking about the server side. We went over DNS (domain name system), which converts your domain name into an IP address. MySQL is open source database software, it's free, can be scaled up, and it's very popular. Oracle is database software which is used by banks and other high requirement users.
Java tends to be a more complicated back end programming language, which tends to correlate with high paying, professional, big company jobs. He mentioned that Ruby is an elegant language that's very user-friendly.
The instructor used starting your car as an analogy to using an API. We turn the key, and the car starts. We don't see the inner workings of how the car actually starts, as the pieces interact, we simply insert the key and twist, and our wrist motion then starts the car, almost as if by magic.
Apache and NGiNX (pronounced Engine X) are server software technologies. GUI is the Graphical User Interface, and it is pronounced gooey.
The # 1 skill for a web developer is desire. If you love coding, you will put in the effort required and be a great coder. Vietnam has been educating children in programming for about ten years, and many of their graduates are very, very competent. To work as a junior web developer, it can take you about 90 days, if you go at your training full time. Elias mentioned that the jobs are out there, if you put in the work.
If you want to do remote work, other than git/github, is there any web dev language that might give you an edge in securing a remote position? With remote work, your people skills matter a lot, more than any particular language, because you have to work as a team/coordinate, while dealing with time differences and distance.
O.k., now let's get back to Chapter 51...
SUMMARY OF CODING SKILLS
Total Treehouse Points: 5,385
Treehouse Points by Subject Matter (Miscellaneous not included):
HTML: 663
CSS: 1,599
Design: 1,193
Development Tools: 747
Javascript: 1,120
Treehouse Ranking (%): "You have more total points than 94% of all students."
Treehouse Badge(s) Earned Today:
Treehouse Courses Completed:
How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Adobe Photoshop Foundations
Adobe Illustrator Foundations (66% complete, switched focus from web design to web dev)
Git Basics
Introduction to Programming
Javascript Basics
Codecademy (& other) Courses Completed:
HTML and CSS (Codecademy)
Design Foundations
Adobe Photoshop Foundations
Adobe Illustrator Foundations (66% complete, switched focus from web design to web dev)
Git Basics
Introduction to Programming
Javascript Basics
Codecademy (& other) Courses Completed:
HTML and CSS (Codecademy)
Books Read or in Progress:
Completed: "Head First HTML and CSS," by E. Robson & E. Freeman
In Progress: "Eloquent JavaScript," by Marijn Haverbeke (On pg 27)
In Progress: "Head First Javascript," by Eric Freeman and Elisabeth Robson (On pg 56)
In Progress: "A Smarter Way to Learn Javascript," by Mark Myers (on pg 155)
My Progress on The Odin Project:
1. Introduction to Web Development 100% Complete
2. Web Development 101 29% Complete
3. Ruby Programming 0% Complete
4. Ruby on Rails 0% Complete
5. HTML5 and CSS3 0% Complete
6. Javascript and JQuery 0% Complete
7. Getting Hired as a Web Developer 0% Complete
Hours Spent Coding Today: 2
Total Hours Coding: 579