5 ms·
I noticed when I was trying to learn how to program, everyone seemed to think it was trivial to just take a course online and learn it. Only once you've gone th
by Kluny 9y ago
I noticed when I was trying to learn how to program, everyone seemed to think it was trivial to just take a course online and learn it. Only once you've gone through a few tutorials do you realize how shallow most of them are. If you want to get beyond Hello World level, you need to pick up some thick textbooks or go to college, and there's precious little instruction available at the intermediate level. You have to learn everything on the job whether you like it or not.
- noir_lord 9y agoAgreed. I've just inherited a legacy software system and I've been hunting down every podcast episode I can related to handling legacy projects holistically and there is a dearth of material. Lots of the real world things I've learnt over the years I haven't even seen in books, at best books are incomplete and at worst hopelessly naive. I've considered writing a book called "The hitchikers guide to software development: Surviving the bosses, the deadlines, the insane team members, this weeks buzzword management style - Towel is optional", I want material on programming in the real world not the idealised "and of course you should allocate time for <insert thing your boss will never understand the benefit off>". Also on a similar related topic, why the hell are software visualisation systems so bloody useless, everything is optimised for creation not maintenance, I know my IDE has the data since it has internal state for things like autocompletion/jump to definition but when I do a "find usages" it gives me a table with each line and the filename...which is a pretty horrible way of visualising it, why can't I see a neat graph and re-orientate it around things like "find usages in this class and it's descendants" or "show me the class with the most usages of <foo>". Even the best IDE's (I use intellij which is generally wonderful) still approach the problem from the wrong side sometimes, even the limited diagramming tools it has are very useful but you can't do much to interact with them.
- TeMPOraL 9y agoSeconding all your points, and especially the complaint about writing vs. maintenance. I complain about that a bit too, and spent a fair amount of time searching for tools facilitating efficient reading and exploring of code. I found nothing. The space seems to be almost empty. The closest I found to something useful was an old and probably completely abandoned Eclipse plugin that doesn't work with Java 8. IntelliJ in particular should have such tools - the IDE has all the right information. Just no tools that would be particularly useful for exploring codebase structure.
- yourapostasy 9y agoInvestigate the software archeology field [1]. There are offerings [2], but they tend to not be well-recognized because most software development management hasn't realized (or willfully denies) how big their technical debt has grown, in the form of poorly-understood code. There is a "map for the territory" cognitive bias working here, where the mere presence of documentation seems to lull most management teams into believing that conveys sufficient understanding. In light of that predominant situation, it is difficult to lobby for more structured and tool-assisted code meta-management. I don't know if this phenomena you and I are talking about is just my emotion-based but factually-incorrect perception, or an actual trend. I like to think it is an actual trend, because I look at fields like truck driving, and the boundaries of what is required to be known today by even average drivers seems greater than say, the 1930's. But the more specialist drivers have to know far more. Same with nurses, farmers, pipefitters, etc. It seems that while the "table stakes" to get into the entry level of many fields have gone up, certain specialties and career development paths simply didn't exist in the past, and they're far more demanding than the field used to expect of the average entrant. It is like the complexity level exploded across many fields as technology moved us forward, and we're not preparing students for the complex reality of the fields they are entering. [1] https://en.wikipedia.org/wiki/Software_archaeology https://en.wikipedia.org/wiki/Software_archaeology [2] https://www.embarcadero.com/solutions/software-archeology https://www.embarcadero.com/solutions/software-archeology
- kabouseng 9y ago"I've just inherited a legacy software system and I've been hunting down every podcast episode I can related to handling legacy projects holistically and there is a dearth of material." Might I suggest the book "Working effectively with legacy code" from Michael Feathers.
- noir_lord 9y agoSecond person to recommend that to me in the last week, I moved it up the list, thank you.
- jholman 9y agoI agree about the intro courses. I also agree about "precious little instruction available at the intermediate level". Though some is out there, if you're willing to spend a lot of money and sift through a lot of dross. But I definitely disagree about needing to pick up some thick textbooks or go to college to get from Hello World to employable junior. What you need to do is work. Textbooks or college (or bootcamp) are certainly a possibility, but there's no shortage of free material, if one has the grit to do the work. I mean, shit. Entry into an upper-middle-class white collar job used to be a project of at least 4 years of full-time effort, with a cost (on top of cost of living) at least equal to a year of salary of that upper-middle-class job. Modern educational opportunities in the area of software engineering drop that by a factor of 2 or 3 or 4. But some people (the "everyone" in your "everyone seemed to think...") figure it has dropped by a factor of 100. It's preposterous. Would-be programmers have got it pretty damn good... that doesn't mean it's miraculous!