Pro tips for a better learning process
With the advances of the Internet and computer searching for information is easier and faster than ever, so there is absolutely no need to use the outdated method of memorization and repetition to try to learn new stuff, that is just silly, what is really important for any student is to understand how things works, try to understand it principles of function, how one thing interact with the others, how things can be used as a tool for our own benefit, and of course learn about the existence of such tools memorize them is optional.
For this topic we got a great quote from the physicist Dr. Michio kaku about the the outdated education process most people, schools and universities use:
Textual quote:
If you take a look at our educational system, you'll realize that all of us are born scientists. All of us are born wondering why does the sun shine? Where did I come from? What's out there? How big is the world anyway? All of us are born scientists until we hit the danger years. When we hit about 13, 14, 15, those are the danger years and we start to lose these young scientists left and right. So, by the time they graduate from high school, we have only a tiny, tiny fraction of the original 100% of young people who are born scientists. They drop like flies. What's wrong?
Well, many things are wrong. But among that is the way that we teach science. We teach science as a list of facts and figures to memorize and we crush, literally crush, any curiosity and spirit of innovation and imagination from young children. For example, my daughter once took the New York State Regional Exam. She took the exam in geology, and I had a chance to tutor her by looking at this manual. And I realized that the entire manual consisted mainly of memorizing the names of crystals, the names of minerals, hundreds of them, and of course, all the things that you are going to forget the day after your exam. So, it's not that our students are stupid, they can memorize these things. They are so smart. They've figured out that this material is totally useless. Our students are so smart they’ve figured out they're never going to see these things ever again. They just have to memorize it once in their life, throw away their book, and they're absolutely right. They will never, ever see these hundreds of minerals, crystals, again in their life.
With the actual technology and easy of access to fast information there is no need to use the memorization to much, use it only for few key things, you can always have access to complete manuals and documented reference about all your tools, programming languages and applications any time, for example, lets imagine you are a novice web developer who need to apply some color and background image to one of your web sites, at some point in your learning course you read something about CSS which stand for Cascading Style Sheets, this language is used to setup the visual aspects for many object in web pages, CSS have something called "selectors" and "declarations" and when you join both you will get a rule as show below.
selectors + declarations = rule
A selector as it name indicates "selects" and element in your web page to apply visual styles to it, and a declaration is actually the visual property you want to configure, you can always set more than one declaration per rule like this:
selector {declaration; declaration; declaration; ...}
In any web page there is an element called "body" which as it names indicates it is the body of your web page, so as you can see so far lot of stuff have clever names to help you figure out what they are, in this order of ideas the CSS selector to select the body is also called "body" so to apply some color to the body of the page we need to write down this CSS rule:
body {background: blue;}
That CSS rule will turn your website's background to blue, but we also can do the same thing using this other alternatives and all of them are valid CSS.
body {background: blue;} body {background-color: blue;} body {background: #0000FF;} body {background-color: #0000FF;} body {background: #0000FF;} body {background-color: #0000FF;} body {background: rgb(0,0,255);} body {background-color: rgb(0,0,255);}
You may be wondering "which one should I use?", simple, use any of then that does the job or makes you happier because all of them are completely valid. try it yourself here in this online sandbox jsfiddle.net. If we take a look at the last examples we got 2 types of declarations:
background: blue; background-color: blue;
They are equivalent but why?, as you can see both of them accept color values in several formats, (blue, #0000FF; rgb(0,0,255);), that is OK and is cool, but the difference is that the first one accept many values and the second one accept only one value. Here you can see the a technical reference page for background-color and also for background.
The "background" declaration accepts several values that makes this declaration a flexible alternative most of the time, whit this declaration you can set a background color and background image same time, also you can set the alignment of that image or set the image as a repetitive pattern.
Now that we know how to set the color of the body element lets see how we can set the an image as a background for the body of your web page. Take a look at all these alternatives:
Alternative 1
body {background: url("http://docs.joomla.org/skins/common/images/workgroups_documentation.jpg") no-repeat;}
Alternative 2
body { background-image: url("http://docs.joomla.org/skins/common/images/workgroups_documentation.jpg"); background-repeat: no-repeat; }
Try it yourself here in this online sandbox jsfiddle.net.
Both of those CSS rules does the same job but as you can see the second alternative have separated declarations. In the first alternative "url" indicates the location of the image to use and the second value "no-repeat" indicates that the image should not be used as a pattern in the whole web page body, if you want to see this in action try Alternative 1 on the online sandbox jsfiddle.net and but strip the value "no-repeat" to see what happens.
Finally for this examples we need to set a color and a image same time for our web page background, check this equivalent alternatives below:
Alternative 1
body {background: blue url("http://docs.joomla.org/skins/common/images/workgroups_documentation.jpg") no-repeat;}
Alternative 2
body { background-color: blue; background-image: url("http://docs.joomla.org/skins/common/images/workgroups_documentation.jpg"); background-repeat: no-repeat; }
Try it yourself here in this online sandbox jsfiddle.net.
Again both alternatives does the same job the same way, the first one put all the sutff in a single declarations and the second one use separated declarations. The declaration "background" may looks complex an confusing some times for a novice developer but I can assure you you will use it a lot and whether you like it or not this declarations will get printed in your head for life, in the other hand those separated declarations such as "background-color", "background-image" may look more self explanatory and easier to read (and yes they are), but the drawback about them is that they actually make the CSS document bigger because those words are bigger and got more characters, so the developer got to write more, write more could cause more spelling mistakes, and is not a rare thing that some CSS files easily got about 2000 or 3000 lines of code. So is up to the developer to decide how to write the code and what declarations to use.
Conclusions
So what was the point of all this rant and examples about CSS, well the point was to demonstrate that any web developer will have to deal with lots of concepts, languages and technical detail and will be really hard and silly try to memorize all of them. A beginning or novice developer should try to apply principles like this instead:
- Try to learn the existence of the most common tools, options and alternatives from languages and frameworks to be able to construct in your mind a general view about them.
- Try to understand how something work and what it can do for you. Fact: programming languages are supposed to work for you not your for them.
- Try to imagine scenarios where you can apply some of this tools that you are leaning about to set priorities and decide which of them will actually need more of your attention in the future.
- You can always consult reference manuals about languages and framework, most of them will contain all the technical information you will ever need and even better the will contain several code examples and code snippets that you can do copy and paste in to your work, nice isn't it?
Fact: Most programming languages have conditional statements, methods, utilities and objects that does the same job in other programming languages but they simply looks different, for example PHP, Java, JavaScript which are all programming languages have a method that help you split strings of text into pieces, each language use a different names for this utility and also different syntax, but the most important thing is that you know they exist, you know what job they are meant to do and you can consult the reference manual of any of them to grab code snippets and use then in to your project.
PHP syntax: explode ( string $delimiter , string $string [, int $limit ] ) Java syntax: split(String regex, int limit) JavaScript Syntax : split(limit)