Notes For Professionals vs Documentation

by: Artur Dziedziczak

October 12, 2020

Introduction

Hello after a long break. I haven’t written anything since I finally got my bachelor degree and I wanted to chill out a bit

Anyway, some time ago I made a small presentation entitled: "Programming Notes for Professionals books as a quick guides for impatient people". Presentation was about comparison between books that you can find here in regard to various language specyfications

I would like to share this knowledge also on my blog and this post will be about my view on different learning sources and approaches that I found helpful while becoming a more professional programmer

What are these books?

Basically these books were created from compiled source of StackOverflow documentation

Sadly currently StackOverflow documentation is down and it’s not accessible in a form it used to be

stack documentation

You can still download it and compile to more readable format but since someone did that for you it would be more of a waste of time to do it by your own

As documentation was closed in 2016 you might think that content of these books is outdated but you can still see some updates from the community. Also it’s worth mentioning that sources from which these books were compiled are still being updated but not as much as when it was over StackOverflow community input

You can see this by checking latest updated from www.goalkicker.com change log

updates

The thing is that for repetition of knowledge before job interviews or to use these books as quick documentation replacement you can use them without a problem

Books vs Documentations

JavaScript

I read whole JS [1] book but here I would like to focus only on one part just to get you an idea of the difference between documentation [7] and book content

My choice here is the part describing testing if value is NaN. In JavaScript you can do it on different ways. The commonly used functions are window.isNaN and Number.isNaN. The difference is that window.isNaN checks if expression in argument evaluates to NaN

Ok but let’s go back to books content

book
Figure 1. Screenshot from JavaScript book
documentation
Figure 2. Screenshot from JavaScript documentation

As you can see in Notes for Professional book you not only have every possible outcome of window.isNaN for different arguments but it’s also mentioned that this method can cause confusion. Other than that you have syntax highlighting on code and generally whole page due to its formatting don’t hit you with wall of text that seems to be hard to understand

On the other hand documentation is written in notation that it’s just hard to understand and if you never read any documentation you probably would not understand what’s going on there

CSS

Another book I picked is about CSS [2]. A lot of programmers struggle with understanding of how to use CSS to style HTML and don’t make some fixes like !important or they create a lot of unnecessary div elements to style content which is inside

I think it’s because there is no good reference that they can find. I never really read documentation [3] of CSS as for almost everything I always go to MDN [4] but today I wanted to check how this documentation look like and …​

dissapointment

As I used to read documentations from Atmega8 or other microcontrollers documentation of CSS was something I though at least should have some syntax highlighting

Let’s first start with CSS book to give you understanding of why I think it’s much better for Junior/Mid devs. For this I prepared screenshots of Attribute Selectors chapter

As you can see Notes for Professionals book not only have basic syntax highlighting which makes reading code so much more pleasant but it also covers all possible cases of Attribute Selectors at once. Other than that it provide JSBin examples

book
Figure 3. Screenshot from CSS book
documentation
Figure 4. Screenshot from CSS documentation

It’s another wall of text that you really need to read carefully to get understanding of how to use different Attribute Selectors

For sure it’s not your first option to pick when you want to revise knowledge for job interview or you want to start learning about CSS

Bash

Last example that I want to show you is a book about Bash [5]. Before reading this book I found that Bash is extremely unintuitive language but now I just know that I didn’t understand basics of it on the first place. After reading this book I truly loved writing scripts in Bash and whenever I need to work with files/text/linux env. it’s my first choice

Ok, but why do I think this books is really cool when it comes to describing how Bash works?

Well, let’s say you want to learn some language from scratch. To do that one of the first things you need to learn about language is how to use loops and iterate over array. It’s not so trivial in Bash and simply writing question in StackOverflow will point you to https://stackoverflow.com/questions/8880603/loop-through-an-array-of-strings-in-bash which covers a lot examples but the answers there (especially the ones on the bottom) are really confusing

So let’s compare official Bash manual [6] with a Notes For Professionals book

book
Figure 5. Screenshot from Bash book

You not only have examples but also all possible loops are in one place. The syntax for looping over array for i in ${array[@]} and loop based on index for (( i=0; i<${#arr[@])};i++) shows you all proper ways to do it

documentation
Figure 6. Screenshot from Bash documentation

When it comes to documentation I couldn’t find full example of how to use loops. The only thing I found is this page I shared above

Don’t get me wrong

I’m not saying that you should not read documentation. Myself I also sometimes find them useful. The problem is that in life you might encounter situation when you need to quickly learn how to use some language. For that purpose I would not start with documentation

Even learning some language from the point zero should not involve language specyfication. If I had to start learning programming languages from beginning I would not start from documentation as some professors on my University mentioned

Conclusion

If I had to start from learning some language from beginning and I would knew similar language which allows to write in same paradigm like OOP for sure I would use one of these books. The reasons why:

  • They are beginners friendly.
  • There is no bullshit in them. If you want to quickly go throught language features you won’t find unnecesary words.
  • All core features of languages are usually easilly described.
  • These books are shorted than documentation. When you don’t have time to learn everything it’s good to pick one of these books and with learning all features without some deep dive into details.

And last thing. I shown these books to like 6 people and everyone said that they are great and let them move forward when they had to review material for job interviews or had to learn some new language

Sources

[1] “JavaScriptNotesForProfessionals.” https://goalkicker.com/JavaScriptBook/JavaScriptNotesForProfessionals.pdf

[2] “CSSNotesForProfessionals.” https://goalkicker.com/CSSBook/CSSNotesForProfessionals.pdf

[3] “Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification.” https://www.w3.org/TR/CSS22/css2.pdf

[4] “MDN Web Docs,” MDN Web Docs. https://developer.mozilla.org/en-US/

[5] “BashNotesForProfessionals.” https://goalkicker.com/BashBook/BashNotesForProfessionals.pdf

[6] “Bash Manual.” https://www.gnu.org/software/bash/manual/bash.pdf

[7] “ECMAScript 2015 Language Specification.” https://www.ecma-international.org/ecma-262/6.0/ECMA-262.pdf, 2015