5 ms·
The thing is, much of the skills it takes to be a decent programmer are skills that we should endeavor to teach to and instill within everyone. These are thing
by blunte 6y ago
The thing is, much of the skills it takes to be a decent programmer are skills that we should endeavor to teach to and instill within everyone.
These are things like:
- attention to detail
- development of a sense of when attention to detail is very important and when "just about" is reasonable
- ability to communicate a process in words, especially written words
- ability to identify patterns and recognize that one has identified a pattern (pattern recognition is automatic in animals and especially humans, but it is often occurring subconsciously)
- ability or willingness to ask "why?" and follow that answer far enough to understand the basic reason for something
- willingness to challenge status quo when the eventual benefit may be worth doing things differently
- ability to consider multiple factors at once (time, cost, effort, etc. etc.)
I could go on and on. Suffice to say, much of what makes good programmers/developers are attributes and behaviors which make good humans. Sure, if for example you have a huge inheritance, you could probably get along fine doing absolutely nothing difficult or productive or creative, but that's not really living. So human life involves a lot of the skills on this list.
- junon 6y agoI disagree. These are things everyone can apply to their jobs. Being a programmer involves understanding how computers work, what makes them interop, how networks work, perhaps some basic understanding of electronic engineering concepts, the ability to keep mental maps of insanely complex callgraphs in their head, etc. This is not something "everyone" can just pick up and do. To reduce programming to a set of soft-skills is what got us into this mess in the first place.
- Jtsummers 6y agoThat's something being a good, skilled programmer working on larger systems needs to be able to do. That's not something every programmer needs to be able to do.
- junon 6y agoDisagree, entirely. Knowing how a computer works is important when programming a computer. Just because you're not writing assembly when making a website doesn't mean you're not employing knowledge about a computer.
- blunte 6y agoMy list wasn't comprehensive, but I think it is a reasonably fundamental set. Without those "soft skills", the developer will not be great. On the other hand, if someone has most of my list, then they are probably quite capable of learning the more specific things that meet your requirements.
- junon 6y agoYour list makes a good student. Being a good student doesn't make you a good programmer in and of itself.
- halfjoking 6y agoI think the same thing, but most of the hard skills you listed like understanding computers/engineering/networks are pretty irrelevant. Those all can be abstracted in many situations. Working through complex mental maps is all you need. Thinking through all possibilities and edge cases, and logically ordering instructions to represent a mental model. It's similar to chess where you have to evaluate every possible and unexpected scenario. If you're good at chess you'll almost certainly be good at programming. If "programming is easy" for some people it's because this one skill comes naturally, and beginners should be made aware of that before they get unrealistic expectations.
- junon 6y agoI disagree. Knowing how memory works, how a CPU works, what Multi-Processing is, etc. are all pretty vital in being a decent programmer - yes, even for the web: if you don't know that Javascript contexts run single threaded (in the UI thread) then you run the risk of writing hugely unperformant code.
- tectonicfury 6y agoThey don't tell the audience this otherwise they won't be able to fleece them. "It's so easy to make apps" "Learn X in 40 projects". I think the problem is also compounded by people who mostly have superficial knowledge of programming (a few frameworks here and there, couple languages etc) and are in the software industry and carry the title of programmers and engineers.
- musingsole 6y agoProgramming as a topic is a iceberg. Pick some flavor, find some tutorials, accomplish some small things and it's easy to think the rest of the industry is just that process * 10 every day. In reality, it's that process * 1000 plus the addition of a few other processes those tutorials can't expose because they're only needed at the intersection of 50+ different applications. Plus an entirely unaccounted for process in the form of creative problem solving that makes up 90% of the work. I've had a number of executives plop down at my desk, proudly proclaiming to be a python dev only to see their eyes glaze over and every other word fly above their heads only a few commands into the interpreter.
- tectonicfury 6y agoWhen you have websites like hackingwithswift and you see Chris lattner (who is some genius because he made a new language) endorsing it with lavish praises, you tend to believe that it’s easy. But then every time I tried to make a 10% decent app, I had to look up the documentation and used to be confronted with (gatekeeping?) jargon like concurrency and background thread. I even paid for raywenderlich’s annual subscription but now I realise why these websites are so flashy and captivating. There are also a lot of resources which sound as if they would be great as they have big name authors but they actually make you more depressed. I had many such experiences most notably with Stroustrup’s books. The one called Programming - principles and practice is a hopeless soup of complicated syntax and lousy pedagogy. It’s aimed at beginners but really anyone who’s read chapter 6 of the book where he seeks to teach ‘what programming is actually about” using a calculator program as an illustrative example, he really makes it appear as if recursion is some exotic and esoteric thing, whereas it is a recurrent theme in the domain of programming. I say this because before this chapter he never used recursion and it becomes very unintuitive, unlike SICP, where from the beginning this is identified as one of the central ideas in all programming. I was fortunate I used to read e-books and didn’t spend too much on purchasing flimsy books, turns out, as far as CS is concerned, the best stuff is actually free (and accessible as pointed above in the link)