The pointer is not a thing that every developer needs to know, but it's still a thing that exists. This question is kind of a stand in for concepts like pointers and not just that one thing.
I wonder: Do they teach this concept in bootcamp at all?
Should they teach stuff like pointers at all to a group learning, say, web development in JavaScript? If so, does it come early or late?
I imagine the course doesn't need to cover computer science from the ground up, but what should get detailed and when?
In computer science, a pointer is an object in many programming languages that stores a memory address. This can be that of another value located in computer memory, or in some cases, that of memory-mapped computer hardware. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number and reading the text found on that page. The actual format and content of a pointer variable is dependent on the underlying computer architecture.
Latest comments (34)
No they don't (personal experience). Yes they should - incredibly useful concept. I'm of the opinion that a good code bootcamp should pivot to teaching Go; a simple language, but one that is explicit about the use of pointers/references.
They did not at my bootcamp. I learned about it from a very thorough Java class I took on Udemy.
Even in C++ people probably won't juggle complicated pointers. But they might cause a memory leak in Java. They should understand why and how.
If not the above, they should understand linked lists and I'm not sure how to explain that without talking about references which are basically pointers that are automatically dereferenced when being accessed.
I recently finished a Web Dev bootcamp that covered the basics to the Trinity, then did a LAMP cms, then two Angular cms (one in ionic), then covered some react frontend basics. There of course was a lot of information about creating API's and consuming them via JSON (course was mostly JS) At no point did we discuss pointers. I went in to class with about a year's worth of prior knowledge, but i had learned the basics of data structures from a Udemy course I took. As much as I went over them (interviews, right?), I have yet to come across a required use case for when I would need them in Web Dev. I'm new, but does that actually come up? Like, would I use them in electron for a desktop app or something?
The objective of a bootcamp is to get people quickly proficient in a particular technology. It's not a replacement for a Bachelor's degree.
I would suspect that if you interview to find out if the person understood their BS that you would filter out Bootcamp people. But then why are you even interviewing them?
Bootcamps are a tradeoff. Recursion and pointers are more in-depth.
When I designed a university curriculum I forced everyone to learn recursion and pointers (much to the initial horror of some). But when I designed a Bootcamp curriculum I preferred to teach concurrency, transaction isolation, and multi-threading that I thought was more relevant and urgent to teach in the limited time we had.
We couldn't teach everything. If you want everything you should do a BS not a bootcamp.
Pointers, I would think no as you don’t really have to worry about those in higher level languages, however there are foundational programming paradigms that I think should be taught like separation of concerns, dependency injection etc, essentially how to write clean code.
I think what people are trying to imply when they value pointer experience is knowledge of how the code controls the hardware memory. You do not have to use pointers to understand this, although the minutia of dealing with pointers does provide you with significant hints.
But the short-term benefit of being instructive does not outweigh the long-term maintenance hassle of being fiddly and error prone. Even garbage collection can teach you the memory model eventually, because you have to dig deeper when you run into its limitations.
I think that it is very useful but not required skill. I personally prefer work with a person that doesn't know how pointers work but can write very readable and testable code if the project doesn't need to deal with bare metal things.
I think that knowing what a pointer is it is quite important, even if you use a language (like JavaScript, Ruby or Python) that does not show them explicitly to you. It is important to know what happens "under the hood." Keep also in mind that you never know and maybe later you'll need to work with a language that uses pointers explicitly.
No, web development bootcamps should categorically not teach pointers.[1]
Bootcamps typically take place over the course of several weeks, or at most a few months, and as such there is a high opportunity cost to each concept taught. Learning about (just a few examples) the HTTP protocol, CI/CD tools, version control systems, or agile software development methodology are all orders of magnitude more useful than learning about low-level concepts that are fully abstracted away in the languages used.
Joel on Software is a fantastic blog, but this is one instance where I strongly disagree with him. Interview questions should be tailored as closely as possible to the actual requirements of the job. While I agree it may be a warning sign for a JavaScript developer to not understand recursion, it would be absurd to expect them to have a deep understanding of concepts that aren't used in JavaScript.
I also wonder if Joel himself may have updated his opinions on this, since the article was published 14 years ago.
On the other hand, the difference between passing by reference and passing by value, which is the closest thing JavaScript has to pointers, is a fundamental concept. Any web development bootcamp worth its salt should cover this distinction.
[1] Nor should data science bootcamps and so on, for similar reasons. Unless of course they're using a language that actually has pointers.