News for hackers. Stuff that matters.
Re:Reality has a surprising amount of detail (2017) by dathinab on Saturday January 11, 2020 @12:57PM (#22021253)
I see this wrt. Software Development all the time. There are Tons of Online Curses, Books and other self learning material but:

1. Completely self learned people are more often prone to develop some bad habits or worse have some subtil but fundamental misunderstandings which are hard to get out of them. (in my experience)

2. Often just a view month with proper guidance can have much better effects then a year+ of self study or "isolated" experience. The problem most times not the general ideas but the details, wrt. the situations for which there are no clear rules you can "just" apply. And often making a wrong decisions doesn't matter that much and sometimes fall under "programming style", but there are hundreds of such small decisions and making many somewhat suboptimal decisions can easily pill up and cause serious problems.

Best example is KISS (Keep it Stupid Simple). Seems easy right, but what does simple mean? Is less code more simple. Are less sanity checks or maybe less validation more simple (due to less additional complexity in them)? Is using less abstractions more simple, even if more abstraction allow you to have code which is harder to get wrong when writing/changing it, _assuming_ you got the abstraction right? Is it more simple to sometimes just repeat yourself, or should you keep strictly to DRY? Is it more simple to sometimes explicitly write out type which would be inferred anyway? What about kinda unnecessary temporary variables? What if it's like `var valid = ...; if valid { }`? What about splitting functions, is it more simple to have 2 pseudo independent sub-functions you will not reuse or one slightly to large function where everything is in the same place?

The answer is always: It depends on the exact situation.

There is no clear cut definition of simple. The best would probably be based on code readability.

But then is it more readable to have one large function body or to split it into sub-functions which are well named but to which you have to explicitly navigate to "fully" understand all details of that function?

Sure we do have guidelines and they allow you to generally get it right (well ok, if you use some good guidelines, there are many bad ones, too). But there is a limit on how much you can learn from them and the rest needs practice. But many problems only show if you do large projects by yourself _and care to maintain and reflect on them, and come to the right conclusion unbiased by the programming language induced bubble you are in_ which is super time consuming. (So guidance is important, but hardly done as many companies do not plan in any time for that at all).

Re:Reality has a surprising amount of detail (2017) by ericb on Saturday January 11, 2020 @01:25PM (#22021416)
> 1. Completely self learned people are more often prone to develop some bad habits or worse have some subtil but fundamental misunderstandings which are hard to get out of them. (in my experience)

I don't find this is particularly true of self-taught people. People who are raised in bad coding environments like working alone or, project-based consulting shops may have bad habits. Hint: the habits are not taught in school.

Re:Reality has a surprising amount of detail (2017) by TJSomething on Saturday January 11, 2020 @01:40PM (#22021499)
Isn't working alone part of being self-taught?

My school tried to teach good habits. Many of the professors are out of touch with what good habits are though, so they usually teach to books of varying quality or practices specific to how they learned a few decades ago.

Re:Reality has a surprising amount of detail (2017) by ericb on Saturday January 11, 2020 @10:14PM (#22024219)
Yes, but I think there's a stage learning where you learn "this is how I work in a manner that lets me get along with others." There are a lot of ways to gain the knowledge of this stage. One part of it is working on projects that you will maintain for a while--this lets you see the cost of tech debt. Another part of this evolution comes from working with others--you learn where your code falls short, and you learn better conventions.

The right environment helps a programmer evolve through this stage.

In a similar vein, stay at home moms or dads may choose to send their child to daycare a day or two a week to learn how to interact with others. Without these learnings, life, or work, can be more challenging.

Re:Reality has a surprising amount of detail (2017) by dathinab on Saturday January 11, 2020 @01:50PM (#22021571)
Yes, through it might also happen if you are not self thought and even if you work in teams as long as you don't do proper reviewed with time to fix non critical problems in a PR it's still like working alone. Which isn't good.

I do count school and University courses as self thought, just with a sometimes better fundation (but sadly often with a worth one too).

As long as you don't have someone who checks your code or does pair programming it's all self thought just with different sources of input.

Also school/uni projects tend to be not that useful either even if you do pair programming, because the people you pair up with have roughly the same experience like you (most times).

Re:Reality has a surprising amount of detail (2017) by nicoburns on Saturday January 11, 2020 @07:10PM (#22023400)
Not necessarily. Me and a friend both taught ourselves, and made projects together (games, websites, etc). I guess we partly taught each other, but there was no expert or teacher involved.

Besides, self-taught programmers have to work with others as soon as they get their first job.

Re:Reality has a surprising amount of detail (2017) by jacobolus on Saturday January 11, 2020 @02:14PM (#22021709)
I take it you are agreeing with the previous poster that hands-on apprenticeship would be a good alternative to formal study out of books. An apprenticeship (hopefully) implies a good deal of mentorship and guidance.

* * *

Personally I think “schooling” should consist much more of student-directed projects, with scope, difficulty, and autonomy gradually increasing over time.

It’s a real shame that typically the most substantial pieces of work 18-year-olds are expected to complete in school take maybe 10 or 15 hours, and most of the work students do is broken down into atomized and unrelated chunks which individually take <10 minutes with few if any decisions involved.