9 ms·
What I would do differently if I was learning to program again
- sus_007 8y agoI'd just buy the book on the subject and leverage their respective web docs instead of watching lengthy videos of people talking about the thing. Looking back at it, I regret not investing in quality books rather than some online subscription.
- j45 8y agoI have generally always learned from books. Today's increased use of videos helps with high level explanations, but video can't keep up with changes as quickly as text can.
- abledon 8y agovideos where I can watch the developer coding are the best for my style of learning. really sticks seeing it executed rather than showing some powerpoint slides of high level diagrams and code snippets.
- j45 8y agoI prefer a combination of videos and books. It doesn't seem realistic with how content is packaged and delivered that one or the other entirely can work on their own. I'm not sure where the idea of powerpoints came from. Well written books generally read like videos. Books have the added benefit that it's easier to jump around and drill down right to what you are looking for, something that's generally harder to hop around on the timeline of a video. Still, Videos are excellent to watch for many things. Updating videos though is tough, and it can cause videos to not be as up to date and indepth.
- hguhghuff 8y agoI’d use an ide from day 1 instead of wasting time with vim. I seriously dramatically slowed down my advancement as a programmer because I didn’t use a full featured ide straight up. Now I only use vi to edit files in /etc
- jasonkostempski 8y agoI don't think they need to be mutually exclusive. I use both daily. I don't use vim emulation in anything else and the context switching hasn't tripped me up in a long time, it was a bit of a problem at some point though.
- omidmnzadeh 8y agoI'd use Vim from day 1, instead of wasting time with several IDEs.
- dboreham 8y agoSpaces! No tabs.
- cup-of-tea 8y agoThe real advice is try different tools rather than sticking with the first one you try or were told to use. When you find the one for you you'll know. Also remember you can make your own tools. Don't struggle with crap tools and find a way to make it easy to develop your tool kit.
- omidmnzadeh 8y agoIt's been a long time I haven't used Vim. I left it in favor of Evil+Emacs a few years ago. And I don't recommend it to every single person I see. The phrase "wasting time with Vim" was the thing that made me reply the way I did. Learning Vim properly has helped me every single step of my way.
- hguhghuff 8y ago
- mxuribe 8y agoI don't code anymore (I'm more of a pointy-haired lower boss)...but what i wish i could go back in time and change around this is to have focused - I mean really, really focused - on 2 or 3 different programming languages only. Instead, what I've done over the years - again, when I coded as a dayjob - was to go shallow on far too many different languages (and ecosystems). I don't think it was me just chasing the "new thing" for the popularity of it. I genuinely was curious about, and wanted to learn "the new thing". The problem - as is often the case with tech - is that there's just too many "new things" coming out all the time...and one just can't keep up. So, sure, i feel like somewhat a jack-of-all-trades (and all my employers have benefited from it), but in more ways than i would like, i lack the depth - and possibly enjoyment/fulfillment - of being really awesome at one or very few things. That old adage about picking one (or a very, very few) thing(s) is no joke; and i see its wisdom only now (after working for 22 years professionally). If i could travel back in time (relative to programming), I'd tell my younger self 3 things: 1) Focus on depth of a couple of things, and never mind breadth. 2) As soon as possible - either before graduating college, or right after, etc. - work for yourself and not The Man. whether going into business as a solopreneur, or partnering with a few people - doesn't matter. Mistakes will be made, but you will feel more in control of any/all outcomes - good or bad. 3) Be generous for experiences, but be a cheap bastard when buying actual/material "things". Save shit tons of money.
- sus_007 8y ago> ...either before graduating college, or right after, etc. - work for yourself and not The Man... Why do you think that would an appropriate moment to do so ?
- mxuribe 8y agoBecause the early complacency of working for someone else doesn't get a chance to set in. Also, because if things don't work out with some initiative, you can bounce back from a setback much easier/quicker.
- sanderjd 8y agoI disagree somewhat strongly with your point #1, or at least I have a different framing for it. Don't bother focusing on depth in a very small number of programming languages or technology stacks. There isn't enough depth there to make that worthwhile. Programming languages are fundamentally similar with very few different paradigms, all of which can be learned and then applied appropriately to new languages. You can learn the more interesting or fiddly bits of any specific language you're working in as needed. But depth of domain might be worthwhile. That is: "I work on distributed data storage systems", or "I work on data analysis systems in the energy industry", or "I work on self-driving sensor data analysis", etc. Maybe I'm wrong about this, it's certainly not the way I've done things, but it is the kind of deep expertise that I'm often envious of.
- watwut 8y agoI dont really agree with do not go to bootcamp advice. I think that structured supervised learning it can be very useful for those who are starting from very little knowledge. Knowing what is worth cloning/learning and what exactly to do with that clone or what exactly to learn is half the struggle for those who dont know much but have aptitude. Moreover, deadlines add motivation and prevent freeze from the thing not being perfect enough yet. Some bootcamps seemed to really push people to learn maximum during short time, so if it is not too expensive (money matters) then it might be really effective way to start. I was able to come up with realistic own projects only after learning in sort of similar way - through structured organizations and from friends advice. Not everyone has friend advice. And having actual task someone will check adds motivation to finish it - finishing those own assigned projects that you are pretty positive are no useful to anyone is demotivating.
- falcolas 8y agoIf I had to do it again? Avoid going down the operations path. Not because the knowledge wasn't valuable, but I always enjoyed working on bigger programming projects more than tinkering with other people's big programming projects (Linux, Ansible, AWS, Cisco, etc). Having operations on my resume, however, pigeon-holed me into a particular role professionally. Of course, that's not of much use for anyone else. In fact, I'd recommend getting operations experience to more programmers, if only because we always need more people. But I also understand why more people don't aim to get operations experience.
- curlcntr 8y agoI learned to program on my own then studied EE and hard sciences in school. Figured I already knew everything about programming. Hubris of my youth. I'd have taken more CS courses in college.
- noelwelsh 8y agoThe number one thing I see in my students (I teach Scala, usually to already experienced developers) is they don't actively engage with the material. Write notes, or code up short examples, or draw pictures, or whatever works for you to actively think about what is being taught. This corresponds to "Write down what you learn" and "Build shitty stuff that works" in the linked article. Bike shedding IDE or editors is a game everyone can play (use Spacemacs) but as long as the tools don't get in the way it's not very important at the start.
- ci5er 8y ago> they don't actively engage with the material. Write notes, or code up short examples, or draw pictures, Do you lecture? I'm an intense scribbler of notes during lectures, but I don't (wouldn't) code up examples during a lecture, because it would get in the way of my listening. I guess I'm asking: what is your knowledge delivery system format? "Actively engaged" will take different forms depending on the delivery system...
- noelwelsh 8y agoIt varies. Several years ago it was lectures interspersed with exercises. Now we know a lot more about pedagogy we use many tricks: we live code, we get students to vote on questions, we have them work in teams and teach each other, etc. Live coding is a good time to code along. I agree that what actively engaged means will differ depending on student and context.
- ci5er 8y agoInteresting. If I had to work with a pair or a team, as an introvert, I would find myself subtly withdrawing from active participation. I like live-coding, and I like active-listening (the latter is absorbing, hoping to understand and the former is testing/verifying/correcting/practicing your understanding, but I like absorbing or total-immersion personal practice. Group exercises get in the way of that (for me - again - I'm probably weird). So, (and I'm thinking about this as I type), I think that I am active, but in my own particular ways. Because I grew up in odd remote/rural circumstances, maybe these habits were habituated because I did not get socialized with normal folk well until my mid-to-late- teens. But, maybe it's genetic? I notice one of my two sons has the same tendencies, and he's lived in an urban/public environment his whole life. What I'm pondering is (beyond the scope of your Scala classes), is whether there are ways to actively engage multiple "types" of people? I'm not just talking about what they call "visual learners" vs "audio learners" (which has largely been debunked?), but ... IDK. I'm trying to assemble a platform for programs that get people to/through their GED, as various states put work requirements on government benefit recipients, and a major hiring block is simply not having a high-school degree. I'd like to make everything as warm and fuzzy and low-friction for everyone as I can - but I don't know how - because (obviously) not everyone is me! :-)
- bungie4 8y agoI wouldn't. I'd learn a trade. Not to be facetious, I'm serious. I love programming. I never played video games, I spent my free time learning basic and then assembler in the late 80's. At the time, I was custom cabinet maker. I eventually become allergic to the 'smell' in oak, causing health problems. I had to give it up. I was busy 8 hours a day. I made decent money. Theirs a certain satisfaction at the end of the day and being able to point at something physical and say 'A good days work'. I began contract programming and eventually into full time employment. Flash forward about 30 years. I'm still writing code professionally. I rarely write code for just enjoyment anymore. Those carpenters, cabinet makers, plumbers, electricians.. .trades people, make the same or more than I do. Their unionized. They can work practically anywhere and make the same amount of money. Not just in major cities. It doesn't see many radical shifts in technologies, unlike programming that is a life long learning because of advancing tech. Its VERY likely you will find your skill set obsolete without a real concerted effort of constantly upgrading. I wont even get into the culture which IMO is fostered by those writing the cheques and even your peers. Nor the moral issues that you will inevitably face - something few programmers ever talk about. It's a real kick in the happiness meter when something you write is designed solely to put many people out of work. My opinion, my real opinion, is that if you find yourself writing code 'for fun' even if you don't know what your doing, pursue it. If your only in it for the career. Turn and run like hell. You'll be burnt out in 5 years and starting over.
- mieseratte 8y ago> My opinion, my real opinion, is that if you find yourself writing code 'for fun' even if you don't know what your doing, pursue it. The dirty secret of turning your hobby into a career is that there exists a very real chance you will kill your hobby and passion for the craft. Unfortunately, one can only deal with some much half-assed code and coworkers before turning into a cynic who hates the craft. I almost wish I was just in it for the money, for this reason.
- marcosdumay 8y agoThe dirtier secret is that if you turn something you dislike into a career, you won't get even the small consolation of liking it, and all the other problems will not go away.
- snarfy 8y agoDon't be a language snob. I wish I would have learned more languages sooner.