7 ms·
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
by Gene_Parmesan 6y ago
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.
- wjossey 6y agoOnce 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.
- dopidop 6y agoWell 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.
- tartoran 6y agoI'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.
- Hendrikto 6y ago> 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.
- zelphirkalt 6y agoI'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.
- bostonsre 6y agoIt'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.
- doom2 6y agoI'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.
- lanstin 6y agoCPython 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.
- tartoran 6y agoI 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.
- unrequited 6y agoWhat 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.
- tartoran 6y agoIt 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.
- unrequited 6y agoThanks, this in insightful. Is there a way I can reach out to you?
- axarydax 6y agoDo you remember which book that was? Sounds interesting.
- 6y ago
- qilo 6y agoI think these are the 2 courses OP is talking about: https://www.edx.org/course/how-to-code-simple-data https://www.edx.org/course/how-to-code-simple-data https://www.edx.org/course/how-to-code-complex-data https://www.edx.org/course/how-to-code-complex-data
- theprotocol 6y agoDo you think these courses would be worthwhile for a seasoned software engineer?
- ddek 6y agoI 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.
- stanulilic 6y agoAre the 2 courses sufficient on their own? or do I need to read the book as well?
- hackermailman 6y agoI 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.
- deleted 6y ago[deleted]
- terminalcommand 6y agoHello, 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.
- bostonsre 6y agoIf 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.
- terminalcommand 6y agoActually 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.
- dominicjj 6y agoSo 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.”
- nemoniac 6y agoThe quote is from Eric S. Raymond, How to Become a Hacker
- dagw 6y agoThat is exactly how I feel about learning Haskell.
- bostonsre 6y agoYea, 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.