News for hackers. Stuff that matters.
Re:How to Design Programs (2014) by Gene_Parmesan on Friday March 19, 2021 @12:39AM (#26510204)
I am self taught, I worked as a lawyer for six years and four of those were spent prepping for a career change - self-teaching comp sci and software dev in the evenings, then working as a volunteer a few years in. (I come from an engineering family and should have just done it from the start, but oh well.)

I'm not sure if it's still on the platform, but about a year into my self studying I took a series of courses on edX that used this system. I think it was called Systematic Program Design, but I could be misremembering. Anyways, the courses were incredible. I completely credit them with beginning to turn me from a coder into a software dev. The system they provide just locked into my brain like it had always been there.

I almost didn't take it because it used Racket, and I questioned its general applicability for that reason. I'm so glad I pushed those concerns aside, because in addition to introducing me to software design principles, it introduced me to Lisp in a way that also completely changed my thinking about what programming itself could be.

I've now been a paid dev for 2.5 years. I don't really explicitly use the system from the course in my daily work, but the knowledge contained within it has molded my entire understanding of the field.

The course literally changed my life.

Re:How to Design Programs (2014) by wjossey on Friday March 19, 2021 @12:45AM (#26510224)
Once a SE discovers that they can learn, quite significantly, in a language that may have very little practical day to day use, it's a powerful moment.

Sometimes the best tools for teaching aren't the tools we need in our day to day work, and that's ok. When you're in learning mode, it's about discovering those foundational blocks upon which all else is built. Those fundamental blocks are never the actual programming language itself.

Re:How to Design Programs (2014) by dopidop on Friday March 19, 2021 @01:06AM (#26510310)
Well said.

On the day job, I wish for the level of expression of a different paradigm.

I sigh at the entanglement of information that is presented to my kind.

And when comes the evening, I’m relying on cheap tricks and iterative steps because I’m fried and human.

That’s a bitter sweat thing, that you describe.

Re:How to Design Programs (2014) by doom2 on Friday March 19, 2021 @09:43AM (#26513206)
I'm sort of experiencing this myself. Currently learning C even though it's not practical in my day to day. My main language is Python and sometimes Scala. Learning about memory management, pointers, etc., has been eye opening to me (I studied math but not CS in college) and I've taken the opportunity to start digging into the CPython code base to see how Python handles things under the hood.
Re:How to Design Programs (2014) by lanstin on Friday March 19, 2021 @12:09PM (#26515029)
CPython is an excellent C code base to learn from. Readable despite being battle hardened and functional. Lisp tho is a wonder of a deeper kind - towers of dazzling beauty and power. I still recommend On Lisp by Paul Graham. And no, one won’t be using it day to day. But it will carve grooves in your brain that make you forever a deeper thinker about the possibilities of software.
Re:How to Design Programs (2014) by tartoran on Friday March 19, 2021 @01:04AM (#26510302)
I've had that moment and it's a paradigm shift in thinking. I'm still on my first leg of my journey as I started learning Racket/Scheme relatively recently but I've already started seeing things in a different light. I almost don't care about performance (at this point) as I know that could be attainable somehow once a solution is fleshed out but I simply enjoy the understanding of the concepts and the patterns that arise. At this moment I see possibilities all around and feel quite electrified.
Re:How to Design Programs (2014) by Hendrikto on Friday March 19, 2021 @05:16AM (#26511358)
> I almost don't care about performance (at this point) as I know that could be attainable somehow once a solution is fleshed out

It rarely is though.

Re:How to Design Programs (2014) by zelphirkalt on Friday March 19, 2021 @09:06AM (#26512827)
I've not read HTDP, only very little of it. However, I find it hard to imagine, that they would not introduce data abstraction layers, like they do in SICP. So, if you relate to the usage of single linked (nested) lists, I quite sure, that improvement by switching out the data structure and putting in an appropriate one can be had. Furthermore, they'll probably teach mutation as a last resort, not as a standard thing to do, which allows for easier parallelization, provided you choose an appropriate data structure.

Once a fundamental understanding of the problem solution is achieved, one can think about refactoring steps like this. Depending on how well one wrote the code, these refactoring steps become easier or more difficult.

Re:How to Design Programs (2014) by bostonsre on Friday March 19, 2021 @09:39AM (#26513168)
It's a cs101 book, they keep it simple and focus on functional programming without mutation. I was a bored business major that took the class at neu and it was a pretty amazing intro to cs that i credit for making me love cs. They got into the more advanced stuff in future courses. I love oop now, but think functional programming was a great way to introduce programming.
Re:How to Design Programs (2014) by tartoran on Friday March 19, 2021 @12:59AM (#26510271)
I see you as fortunate. I battled for years with frustration and loss of passion for coding until I ran into LISP/Scheme/Racket. I like how you put it that it "locked into my brain like it had always been there", I felt the same when I finally got to it. I also discovered this accidentally but much later in my career and only after I started lurking on HN few years ago. I am learning and toying frequently and am very excited again. To give you an example, I'm on vacation with my family and took with a me a book in logic programming in scheme which introduces the logic programming concepts, solves a few problems using the learned techniques then it goes on to to implement minikanren in less than 300 lines of code. The whole book is a mere 50 pages. The knowledge and understanding blow my mind.
Re:How to Design Programs (2014) by axarydax on Friday March 19, 2021 @02:12AM (#26510520)
Do you remember which book that was? Sounds interesting.
Re:How to Design Programs (2014) by nils-m-holm on Friday March 19, 2021 @03:21AM (#26510774)
50 pages? I think it is Logic Programming in Scheme: http://t3x.org/amk/
Re:How to Design Programs (2014) by tartoran on Friday March 19, 2021 @07:45AM (#26512189)
Yes, this is the book and I guess I am replying to the author:) Thank you Nils M Holm. This book is very much on my taste, it contains exactly what it should and nothing more and nothing less. I guess some would prefer the Reasoned Schemer style but I find the dialogue a bit distracting for the first book.

I ordered a paperback from lulu and it was a great decision, I use a marker and write on the margins. It is absolutely worth it.

https://www.lulu.com/en/us/shop/nils-m-holm/logic-programmin...

Re:How to Design Programs (2014) by nils-m-holm on Friday March 19, 2021 @08:20AM (#26512417)
Thank you! I am glad you liked the book!
Re:How to Design Programs (2014) by minikomi on Friday March 19, 2021 @02:28AM (#26510587)
Sounds like the reasoned schemer!
Re:How to Design Programs (2014) by agumonkey on Friday March 19, 2021 @06:48AM (#26511887)
The whole series is very high grade. I don't appreciate the dialogue format all the time (too fine grained and a bit distracting after the first book). But high density of knowledge here.
Re:How to Design Programs (2014) by lanstin on Friday March 19, 2021 @12:12PM (#26515063)
Seriously these are not quick reads. If you don’t feel your conceptual space expanding every few pages you are surely missing something.
Re:How to Design Programs (2014) by agumonkey on Friday March 19, 2021 @08:16PM (#26519503)
I came to them long into my lisp/scheme journey. So maybe it made me impatient.
Re:How to Design Programs (2014) by vram22 on Friday March 19, 2021 @02:28AM (#26510586)
Yes, I would like to know too.
Re:How to Design Programs (2014) by tartoran on Friday March 19, 2021 @08:00AM (#26512282)
The book is indeed http://t3x.org/amk/

I ordered a paperback at:

https://www.lulu.com/en/us/shop/nils-m-holm/logic-programmin... in-scheme/paperback/product-1z82nmng.html?page=1&pageSize=4

It was absolutely worth it.

Re:How to Design Programs (2014) by vram22 on Friday March 19, 2021 @12:23PM (#26515215)
Thanks.
Re:How to Design Programs (2014) by unrequited on Friday March 19, 2021 @01:56AM (#26510471)
What would be your advice to someone who's going through that frustration? I would love to get in touch to talk more about this. Thanks.
Re:How to Design Programs (2014) by tartoran on Friday March 19, 2021 @08:06AM (#26512319)
It really depends on what your current situation is. Sometimes a break or distancing solves the problem. Other times it simply is trying something else, job, language, hobby. Make changes until something clicks. It sounds cliche, each person has a different journey but journeys do have some common patterns. Not sure what your frustrations stem from but I could get in touch and talk more about this.
Re:How to Design Programs (2014) by unrequited on Tuesday March 23, 2021 @11:42AM (#26556341)
Thanks, this in insightful. Is there a way I can reach out to you?
Re:How to Design Programs (2014) by qilo on Friday March 19, 2021 @01:43AM (#26510434)
Re:How to Design Programs (2014) by theprotocol on Friday March 19, 2021 @03:35AM (#26510839)
Do you think these courses would be worthwhile for a seasoned software engineer?
Re:How to Design Programs (2014) by ddek on Friday March 19, 2021 @05:51AM (#26511572)
I followed them a long while ago, they're fun but you'll probably find they move too slowly.

Seriously though, they are fun. Racket's way of programming with pictures is great. Maybe following the book at your own pace would be more rewarding.

Re:How to Design Programs (2014) by hackermailman on Friday March 19, 2021 @10:35AM (#26513793)
I believe op is talking about the entire sequence where after those 2 you learn java and typescript. I also took the entire sequence the java one was really good at explaining aliasing problems, how to figure out an existing codebase by yourself, and all taught by UBC profs.

The two intro courses that use htdp are not nearly as rigorous as the book, you never get to see anything difficult enough to warrant using the design recipes where the book you begin to appreciate that style more and more as it gets harder.

Re:How to Design Programs (2014) by grey4228 on Friday March 19, 2021 @01:27PM (#26515981)
The two courses of your parent comment are 2 out of 6 courses of this program [1]. It mentions Java and Typescript. It seems like all 6 can be taken for free if you click the individual links. Is this what you took?

[1] https://www.edx.org/micromasters/ubcx-software-development/

That indeed is the course the top comment is talking about.

The instructor Gregor Kiczales has a youtube channel named 'Systematic Program Design' [2]. His 5 minutes intro video [3] is really good IMO - one can send it to ones relatives or friends who ask you what the heck you are doing in your job.

[2] https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w

[3] https://www.youtube.com/watch?v=dJbpHukiQ7I

Re:How to Design Programs (2014) by hackermailman on Friday March 19, 2021 @02:54PM (#26517046)
Yep well 5.5 courses I took as the last one is a big project and I already was doing one so skipped it. The java courses are good in teaching how to properly make an abstract object iirc, was many years ago I took them. Probably the best intro to programming sequence you can find though maybe not enough assignments
Re:How to Design Programs (2014) by ralphc on Friday March 19, 2021 @07:03PM (#26519051)
Kiczales also wrote the Common Lisp classic "The Art of the Meta-Object Protocol"
Re:How to Design Programs (2014) by stanulilic on Friday March 19, 2021 @04:05AM (#26511008)
Are the 2 courses sufficient on their own? or do I need to read the book as well?
Re:How to Design Programs (2014) by grey4228 on Friday March 19, 2021 @01:34PM (#26516089)
Those 2 are part of 6 courses. See my comment above:

https://news.ycombinator.com/item?id=26515981

Re:How to Design Programs (2014) by drchap on Friday March 19, 2021 @04:48AM (#26511225)
The 2 courses are based on the book, but do not require, or even refer to the book.
Re:How to Design Programs (2014) by dominicjj on Friday March 19, 2021 @06:32AM (#26511806)
So what you're saying is:

“Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.”

Re:How to Design Programs (2014) by bostonsre on Friday March 19, 2021 @09:43AM (#26513212)
Yea, I took the course at neu and it was an amazing introduction to programming. I love oop now, but I'm pretty sure my code still has hints of this course in it. The simplicity and elegance of functional programming was awe inspiring when I took the course.
Re:How to Design Programs (2014) by dagw on Friday March 19, 2021 @07:47AM (#26512200)
That is exactly how I feel about learning Haskell.
Re:How to Design Programs (2014) by nemoniac on Friday March 19, 2021 @07:45AM (#26512190)
The quote is from Eric S. Raymond, How to Become a Hacker
Re:How to Design Programs (2014) by terminalcommand on Friday March 19, 2021 @02:17AM (#26510533)
Hello, this might be a bit personal but I am a fellow lawyer having practiced law for 3 years. How did you take the plunge after six years of doing law? Were there any external circumstances? How did you get over worrying about finding a job, losing status etc.?

I dream of getting into legal tech and combine my passion for computers with my hard earned law knowledge at some point. But it's just a dream at this stage as I can see no way out.

Re:How to Design Programs (2014) by bostonsre on Friday March 19, 2021 @09:47AM (#26513260)
If you can get a law degree, you can definitely learn comp sci. Lots of people with no experience think it's magic, but it really isn't that hard to learn. This book and the teachings that use it were a great way to get started when I took the course. It built a solid foundation for everything else to come when I took the course at neu.
Re:How to Design Programs (2014) by terminalcommand on Friday March 19, 2021 @02:55PM (#26517056)
Actually I always had an interest for computers and I already have a lot of CS knowledge (minus maths). That's why I hang around on HN :).

I was always obsessed with computers since childhhood, I somehow got into law school and faked my way from there.

My problem is taking the plunge to do something else other than law. I try to live day by day and focus on other things besides computers.