8 ms·
I love the simple software-centric approach to analyzing this survey and categorizing the answers. There's one thing I'm sure was mentioned a lot by 17.1% of t
by sephoric 8y ago
I love the simple software-centric approach to analyzing this survey and categorizing the answers.
There's one thing I'm sure was mentioned a lot by 17.1% of the participants, but it's one thing I'd like to stress:
Find a good mentor!
I've been teaching my son programming steadily for a few years now, and every so often he likes to take what he just learned, go and revisit some old programs he wrote or read from before he understood the new concept, and understand it better and often improve on it a lot (even rewriting it sometimes), and then he comes back to me very excitedly telling me how the new concept I taught him greatly improved the thing he did.
He's already writing code better than I did when I was a decade older than him, easily grasping new concepts like linked lists, garbage collection, pointers, and Lua coroutines and so on. When I was his age, I was still struggling to understand arrays in QBasic, had nobody to mentor and guide and teach me, and was generally pretty lost. Having a mentor who can guide you carefully and at your pace is an incredibly powerful shortcut.
- ChucklesNorris 8y agoExcellent input!
- stcredzero 8y agoit's one thing I'd like to stress: Find a good mentor! At my old Hackerspace, one of those high school robotics teams came to us for some help. The kid who was doing coding could really have used that advice. He confessed to me that he didn't have time to read through all of the controller framework code and understand it completely. We were under coding marathon conditions at that point, so he wasn't far off with that. One of the motors they were using was pretty big, though. Plenty big enough to seriously hurt someone. So I urged him to at least set breakpoints in all of his stubs, and step through those in the development environment at a minimum. He was pretty dismissive about checking his work. Downright smarmy, actually. Sure enough, something goes wrong, and the metal body of this robot ends up spinning wildly, right in the middle of the team huddled around it, sending parts flying everywhere. Miraculously, no one was hurt. Did that kid learn anything? Nope. He still knew it all.
- sephoric 8y agoThat reminds me of me. I was overconfident in my abilities so I didn't take the advice of people who were trying to guide and help me. But looking back, I think a big part of what played into that overconfidence was not seeing that I actually could do the cool things I saw other people doing, because I had no one to show me how. So I was satisfied with doing slightly cool things and convincing myself it was amazing. I think a good mentor can show you a clear path from A to Z and get you excited about the fact that you actually can do B, you just have to start with A, then go to B, etc. That's one of the things I've been doing with my son, is trying to show him a cool thing that seems too advanced for him, and show him that it's only a small step up from where he is, and that after a simple 30 minute lesson that he fully understands, suddenly he can actually do the thing he thought was impossible! He just went from A to B in 30 minutes! Enough times of doing that and you're already half way to Z and it doesn't seem so impossible, so you stop being satisfied with letting yourself thinking B is actually Z. I'm probably not making much sense, but I hope the point is coming across at least a little.
- stcredzero 8y agoThat's one of the things I've been doing with my son, is trying to show him a cool thing that seems too advanced for him, and show him that it's only a small step up from where he is Right on! One of the most valuable skills I've learned over the past several years, is how to decompose your projects into small pieces, then decompose those things into even smaller bits and keep going until the pieces seem downright stupid. That last part is the key. You have to keep going until you'd feel insulted if someone asked if you could do those things. This sounds bad, but it's actually a very powerful mental tool. Let's say you want to build an MMO. That's a really huge, complex chunk of work. So let's just take a piece of that, let's say the networking part. That's still really huge, so let's just take a piece of that, like the part that synchronizes the client's ship position. That's still quite big, so let's just make something that can send some kind of data between some clients and a server. Well, it turns out there are a bunch of tutorials online for building a Websockets chat server, so let's just start with going through one of those. Then, when you can send/receive data, write a game loop simulation of an Asteroids ship, and build it into the server. Then, for a client, forget about networking altogether and go through a Javascript Asteroids tutorial. Next, sync those two in the stupidest way possible. Then, when that's working, make your sync just a bit smarter. Rinse and repeat. This is actually how I started building my game server. (You can see a sort of reverse chronological order of this process here: https://www.youtube.com/watch?v=7x2uQjLtXkY&list=PLnAL8xf0QQaD0bN5tCGnvh7Qq_kpFZznO https://www.youtube.com/watch?v=7x2uQjLtXkY&list=PLnAL8xf0QQ... )
- KoenDG 8y ago"Good" being the key word. Most professors I had in my day were probably masters of the material, but their droned explanations bored me to death and were overly theoretical. Asking for help was a sure way to be mocked by your fellow students, who for some reason lived by the idea that it's okay to mock people for not knowing something they do know. And then lab professors saying it's not their job to explain things, just google it. I was literally told several times by the lab professors that "we're just teaching you how to effectively google things". I wonder if that contributed to my hating bad documentation and guides.
- dkarl 8y agoTastes vary. Not about being mocked, that sucks, but about what's important and interesting. When I was in college I borrowed algorithms textbooks from a CS student to study for fun but never took a single CS class because I didn't want to do the "boring" stuff she was doing for class like writing Telnet clients and kernel modules and implementing parts of the network stack. I loved the books that concentrated on theory and yadda-yaddaed how it might be applied in the real world. Ten years later my tastes were reversed; I was sick of math but really curious about nuts and bolts. So don't assume people are put off by focusing on theory and dismissing everything else as "Googleable"! For some folks it's exactly what they're looking for.
- paulie_a 8y agoFind a good mentor and listen. Don't have a chip on your shoulder. Don't be afraid to try a different approach. But sometimes a mentor will explicitly warn you, and it's almost funny when the person says "fuck that I'm going the route you warned me about" I might not know everything by any means and generally provide a couple potential ideas, but 6 months later and they come and say "yeah you were right" I may be petty but I've said "no fucking shit"
- austincheney 8y agoThe need of mentoring must be completely voluntary. I was hired to be a team senior of developers who didn’t think they needed a mentor and it didn’t work out so well. People actively seeking a mentor are likely willing to consider the advice and tough criticism they get as points to self-reflect upon, because they want to improve. They want to become faster stronger developers. As common as that might sound I have found intentional yearning for self-improvement to be rare or severely misunderstood among junior developers in the corporate world. More common than self improvement is interest in specific technology stacks of the moment and persuit of near instant gratification. EDIT Actually, I can remember observing this behavior once as a junior developer. When I started learning JavaScript 12 years ago the real big deal then was Java. Compared to me at the time everybody seemed incredibly experienced and talented, but most of the developers were negligent to the point of horrid incompetence at the frontend skills even though this was a big brand web business and 90% of their efforts generated frontend code. There were a few Java developers who did have a solid understanding of the frontend code, but they intentionally didn’t advertise this. I had to actively observe for it. After badgering some of these people it was clear they were willing to provide mentoring if I asked for it and worked my ass off to chase it. What I learned the hard way is the people who made the best developers had a secondary skill they actively thought about more than their primary skill and used that to reinforce their primary skill. At first it was Java developers who had a solid grasp of things like CSS, but I also saw it in others who were working out product management skills or business pricing logic more related to finance than programming. These people also tended to make strong mentors. The people focused on only their primary skills weren’t as capable and didn’t seek mentoring themselves or have much to offer other junior developers.
- mikekchar 8y agoOn that topic, if you are the most senior person on the team and the other members don't seem like they want mentoring, my biggest piece of advice is to wait. Sometimes it feels like you are waiting forever (and with some people you will be). Mentoring is as much about trust as it is about passing over knowledge. You can imagine the people you will potentially mentor as wild animals. Even if you have gobs of yummy food on hand, they won't be ready to take it from you at first. The trick is to stand still, keep your calm and keep offering small little treats. Eventually one or two of them will come by and take a nibble. Don't pounce on them. Just stay calm and keep offering treats. Eventually some of them will come to trust you well enough to eat a whole meal from you. Some never will. That's just the way it is.
- thenanyu 8y agoHow does one do this? I've never had a mentor, less a good one, and I can't help but think it's held me back. I've been successful in my career but maybe I'm leaving something on the table?
- mikekchar 8y agoFrom personal experience, some people (i.e. me) are too pig headed to learn from other people. Sometimes it feels like a step down to take on a mentor. Sometimes it feels like the available mentors are all so far behind you that there is no point. But there is a real danger of getting isolated in a local maxima and not being able to jump across to somewhere better. Sometimes you have to lower yourself in order to go higher. I once had a good manager who explained to me that perspective is like looking at a room through a small window. You can only see part of the room. Other people are looking through other windows, and likewise can only see a small part of the room. In order to see the whole room you need to see what the other people see. You have to go where they are and look through their window. It's the only way to piece together the whole picture. Even if you have the best window and the best vantage point, it's still better to give it up for a while and take a look at the other vantage points. So, it doesn't really matter who you pick as a mentor, except it should probably be someone who sees the world differently than you do. And it will be really, really annoying for a while (maybe a long while) ;-)
- james_s_tayler 8y agoAren't like 99.9% of people always leaving something on the table? At least that's my gut feeling...
- sosodev 8y agoHow do you find a good mentor?
- Evan_Hellmuth 8y agoShoot me an email! (email in profile)
- hyperpallium 8y agoThere's your problem right there: > It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. https://wikiquote.org/wiki/Edsger_W._Dijkstra https://wikiquote.org/wiki/Edsger_W._Dijkstra
- jtms 8y agoDijkstra: Read heaps about his work, but had never seen his picture until just now - looks very Walter White esque there! “Breaking BASIC”
- james_s_tayler 8y agoholy crap he does too!
- vezycash 8y agoFound this hilarious >The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
- mesaframe 8y agoFinding a mentor is really hard. I've been trying to find a mentor since a year now or more. Either I get ignored, and if people agree they just can't spare time then I also don't feel right to nag them with questions.
- Evan_Hellmuth 8y agoShoot me an email (see my profile) if you're interested in a mentor (:
- mesaframe 8y agoHey! thanks for the reply. I am really interested in creating OS/kernels. Do you have any experience in them?
- kungito 8y agoBe sure to version his code so that you have fun memories stemming from before all the rewrites!
- rc-1140 8y ago"dude lol just find a [good] mentor" Please stop dropping this empty-yet-well-meaning line - you're not the only one in this field who does this, either. I understand that it's not with ill intentions, but it's a feel-good line that people with experience like to drop on the internet as a catch-all piece of advice for how to develop software competency. The mentorship culture doesn't permeate nearly as strong as many of you think. Smiling and going "find a good mentor!" hides the complexity of the task and is disingenuous - it's a task that is limited by physical geography, electronic geography (the online communities one frequents), workplace culture (for the employed), and sociability of all parties involved, and a task that changes based on whether or not the recipient of this line is employed or in higher education at the undergraduate level. It can even be limited or change based on the mentor-seeker's current tech stack.
- james_s_tayler 8y agoI'd venture to say that stunningly few people actually actively thought "I think I'll go and ask someone to mentor me" and then went and did it because of all the reasons you say and more. I would imagine most mentorship is of the incidental kind that just happens as you work with colleagues and some of them teach you things that take you to places you wouldn't necessarily have gotten to on your own. You may in turn do the same for others without realising it. Definitely working alongside good developers naturally benefits you greatly.