14 ms·
The Missing Semester of CS Education
- rwoerz 5y agoI fully agree. During my own studies of computer science the common excuse / pretext for not lecturing such useful things was that tools get outdated quickly. Now that I am back again in university (of Applied Sciences) as a lecturer, I dedicate a whole lecture for such things. Students' and alumni's feedback was quite positive so far.
- mixmastamyk 5y agoThat was true in the bad old days of primarily proprietary tools. Today I'm still leveraging skills learned in the early 90s that are older.
- jandrese 5y agoI had a sophomore level class that covered about 2/3 of that list. The only big thing I think it missed was version control, although back then it would have been CVS. It did cover group dynamics and management, which seems to be missing in the link. The school was trying to prepare students for the numerous group projects they were about to be assigned in the junior and senior year. In retrospect they could have put more focus on debugging tools as well. But since they didn't mandate one particular system--we had projects where every kid was using their own development environment, from VS on Windows 95 to vi, gcc, and Make on FreeBSD all developing on the same codebase. It sounds like development hell, but it made porting the app to all of the target platforms a breeze.
- okigan 5y ago“It did cover group dynamics and management, which seems to be missing in the link.” Can you share more info on that?
- jandrese 5y agoWhen working on a group project how do you divide up your work. How to keep track of everyone's progress so you don't have 3/4 of the project done only to discover that one of the members has not even started on his piece yet. Basically how to work in groups. This is one thing that many students struggle with and if you don't do it you'll often find group projects where one person did like 90% of the work because nobody knew how to coordinate.
- lostcolony 5y ago...that doesn't sound helpful, to be honest. My experience with group projects wasn't that nobody knew how to coordinate, but that people didn't -want- to. The person who was content to take a C on the project would just not do anything they were responsible for. The person who wanted an A would end up doing it. The professors had no formal method for checking in with the team, nor any real teeth for those who dodged their responsibilities, so even if it was communicated and the slacker(s) took a grade hit, it wasn't much. (For reference, I had that happen at least twice in school, where the group of us broke up the work and scheduled check-ins, and by the end of it only I had done my part...though being cynical, as the team missed check-ins with various excuses, I had also done everyone else's because I cared about my grade) Unlike the real world, where if someone is allocated work, and doesn't do it, a manager deals with it. Professors are not interested in being managers. That said, it DOES sound useful for the real world, where the incentives are better aligned.
- croes 5y agoEthics would also be a good addition.
- QuercusMax 5y agoAt Kent State (graduated 2004) I had to take "Social and Ethical Issues in Computing". It was a very easy "writing-intensive" class, where we had some group discussions of the contents of our textbook, and then had to write a few 5-page papers talking about the content. The only thing which stuck with me was the Therac-25 story. Everything else was just pretty much "don't deliberately use your powers for evil" type thing.
- silicon2401 5y agoI've said it before but I hard disagree on this. I would hate my money to go towards ethics in a field where that's not a universal requirement. You have to know algorithms etc to get into anywhere from the red cross to facebook, but not ethics. That would be fine as an optional elective
- gloriousternary 5y agoIMO that's exactly why we need good ethics courses. If ethics isn't treated as a priority in university, it won't be treated as a priority by companies.
- mxcrossr 5y agoPerhaps if you had taken a course on ethics you might recognize the good that comes from something that doesn’t directly lead to financial gain!
- silicon2401 5y agoAnd you can take a look at the ethics of the rich and powerful to see how much financial and non-financial gain comes from being unethical. I'm not at work for fun or to change the world, I work strictly to make money. If facebook or an autonomous fighter jet company offered me an opportunity to do my current job at whatever crazy salaries they pay, I'd start yesterday. If I could press a button and have them change into companies that raise orphan puppies or something (while preserving my salary), I'd press that button yesterday. If I woke up to 10MM in my bank account, I'd retire yesterday. Until one of those scenarios happens, I need a job and the best-paying one I can get. It's easy to talk about professional ethics and choosing good over income on an internet forum when the impact it has on someone else's life has no impact on yours. If I left a FAANG to work for peanuts at some volunteer agency, I suspect you wouldn't be there to chip in when my loved one needs support and suddenly my ethics can't foot the bill like my old salary could. You have no idea the impact a FAANG salary would have on my life and my loved ones', so it's not very thoughtful to suggest that somebody who has to prioritize financial gain is unable to see good other than financial gain.
- austinl 5y agoI was happy to see my alma mater introduce a class called "CS 193 Tools" that is taken by all freshmen. I never took it, but it started when I was a junior or so (~2014). A friend of mine pushed to create the course and helped TA it for a few semesters. Here's the course description: Learning Outcomes: 1. Understand Unix/Linux commands for navigating directories and files and manipulating files and folders. 2. Understand terminal commands for searching and input/output redirection. 3. Understand shells such as sh, csh, ksh, tcsh, bash, zsh. 4. Understand debugging via print statements and general debugger concepts. 5. Understand version control via Git and Github, source control, workflow, commit, collaboration, pull, push, create and pushing a new repository, cloning, branches, merging, and conflicts. 6. Understand vim including mouseless navigation, normal/insert mode, copy/paste, search/replace, and saving/quitting. https://selfservice.mypurdue.purdue.edu/prod/bwckctlg.p_disp_catalog_syllabus?cat_term_in=202010&subj_code_in=CS&crse_numb_in=19300 https://selfservice.mypurdue.purdue.edu/prod/bwckctlg.p_disp...
- devoutsalsa 5y agoLearning the basics of shell scripting has been super valuable to my career. The only time I found it to be a liability was when I was pair programming. My pair couldn't read a shell script to save their life & had very little interest in learning. When I tried explaining it line by line, they stopped wanting to pair because I was apparently making them feel stupid. They actually reported me to management for being an arrogant mansplainer. I'm pretty sure that was the beginning of the company deciding I was not a culture fit :P I had to learn how to, and how not to, work with someone less experienced in a certain topic after that.
- ecshafer 5y agoThis seems like its more of a hacker vs non-hacker mindset. Those of us that grew up with messing with computers and such daily, if we didn't know what the script did, would probably really appreciate someone giving an in depth explanation of the script line by line. People that want to just be hand held, and are not interested in how things actually work, wouldn't appreciate that. Sounds like the pair programmer was the latter.
- jgwil2 5y agoSeems like these are more subjects for "software engineering" or some other kind of pre-professional major, as opposed to CS. Obviously not every program makes that distinction, but personally I like the idea of CS being primarily academic.
- SkyMarshal 5y agoDon’t Computer Scientists still need to use computers efficiently and effectively to run research projects or test new concepts on them?
- jgwil2 5y agoYes, that is a good point. But by analogy, should an English major receive credit towards their major for a course in word processing, or is it just something that they should be expected to pick up along the way?
- munchbunny 5y agoIf word processing were as complex to use as a shell, I’d probably suggest a tutorial on word processing early in the major. I don’t have to regularly look up how to bold text even in Markdown, but I do have to regularly look up various Bash-isms.
- necrotic_comp 5y agoIt wouldn't be a bad idea to teach kids how to create a professional environment on their computer, but at the same time, the tooling around programming environments is much more complicated than a word processor and it's extremely valuable to teach the basics for credit.
- meristem 5y agoThere might be issues of access. It may be possible to go through school without ever having to break out of a GUI to do CLI commands, whereas it may be impossible to graduate from high school without ever typing an essay on word/docs/etc etc.
- octos4murai 5y agoI enjoyed these over several lunch breaks last year. Recommend it for both beginning and experienced developers/CSers. It’s casual and highly approachable.
- mfringel 5y agoI still remember being in my AI class and having the teacher say "This course is taught in LISP. We'll be spending one class on the peculiarities of our system, but otherwise you're on your own. If you don't learn it, you'll fail." They did eventually realize that teaching some of the basics would actually make for more successful students, and better alumni donations. In the end, the CS Dept. started offering these things as zero-credit courses as a way to square the circle.
- AuryGlenz 5y agoIt’s funny - I can’t think of an equivalent for that sort of thing in any other major. Of course, most other students don’t go in to their major with as much knowledge and experience as a good portion of CS students do.
- spunker540 5y agoThe one big exception I can think of is the arts. But they usually require an audition or portfolio for acceptance. CS majors take anyone but then not until first week of classes is it clear how much pre-reqs are expected.
- silicon2401 5y agoMy experience was the opposite. The learning curve for CS classes is steep, but you can go in with zero knowledge. When I took music theory, there was a hard requirement for vocal training experience and I was rather shocked that such an important and uncommon thing was just taken for granted.
- moshmosh 5y agoOh, music majors in particular are a really good comparison. Though at least music instruction is available in most US school systems over a span of several years, as an ordinary during-school-hours class. Then again if that's the only instruction you've had, you're probably still starting out (maybe hopelessly) behind those who had private lessons outside of school, who are likely the real intended candidates of such programs, and you might not even be able to get into a good program. [EDIT] incidentally, the arts are also infamous for being dominated, at a professional level, by kids with artist parents and kids with rich parents (who can bankroll years of private lessons and then years of little-to-no income while paying for access to career-makers) so... there's that.
- gopalv 5y agoThis is a great list of things which you do use a lot as you get into a job, but not at all when doing class work. Version control is the most common thing I have to teach interns in general & that too remote version control usage - particularly my "oops, I dropped my laptop after 3 weeks" story. Git makes that curve a lot less complex to deal with (no server setups). The other bit I tend to drill down into is about writing graphviz files for everything. Mostly what I do is generate code and documentation out of one system - but often, I dump out things in some arbitrary format, only to process it in python in to a graphviz diagram or in some cases some more fancy svg stuff (outputting direct D3.js is better, for something like a Sankey diagram for data-flows). Like this[1] is a way to discuss a problem with a cycle in a DAG, instead of whiteboarding it out, particularly if your work-mates are going to be remote. [1] - https://gist.github.com/t3rmin4t0r/6991ce21b41b2558c5362455c249204b https://gist.github.com/t3rmin4t0r/6991ce21b41b2558c5362455c...
- kyawzazaw 5y agoAt my school (Macalester), we use git(and GitHub classrooms) in the intro class. It doesn't have to include the more complex stuff like rebase, merge conflict. This way, as a TA, I can also code review them and it also deters plagarization.
- fishtoaster 5y agoIf I may nitpick (and really, if you can't nitpick on HN, where can you?), their definition of Metaprogramming seems weird. The subheadings are build systems, package management, and CI/CD, whereas I've always heard "metaprogramming" as a general term to cover reflection, macros, introspection, and similar concepts. Have I got the wrong definition or do they?
- chillpenguin 5y agoYou don't have the wrong definition, I had the same thought as you. They are definitely using a non-standard definition of that term, although I suppose it makes some sense if you look at it the right way (sort of like "metadata" in a way).
- chakspak 5y agoI thought that was a peculiar choice of words as well. I would understand these things under the banner of "Build Engineering", or even just "Tooling". I couldn't figure out the distinction they wanted to make by calling it "Metaprogramming".
- bewuethr 5y agoThat was raised as an issue a while ago: https://github.com/missing-semester/missing-semester/issues/9 https://github.com/missing-semester/missing-semester/issues/... The answer is basically "sure, but we explain what we mean in the lecture."
- dexwiz 5y agoI majored in Chemistry, and we had a similar course on how to use library resources and tools to research. Since it was not directly Chemistry, the advisor said you could wait until your senior year to take it as an easy final semester credit, and that is when I took it. I should have taken it first semester, freshman year. It was full of invaluable meta information which would have made my four years not only easier, but more productive. I may have even stayed in Chemistry if I had the correct tools from the start. I am largely self taught when it comes to CS, and so I learned these tools first from a practical application. I didn't have anyone to set up a dev environment for me; I had to do it myself. I am always shocked when I work with new grads from top CS schools who have almost no knowledge of basic tools like grep or how to use an interactive debugger. Theories and academia are nice, but are a fair stretch from the real world in any field. If we really want to require an advanced degree to enter the work force, then we should abandon the idea that most students attend college for a liberal education and accept they reality that students attend college for workforce preparation.
- nerpderp82 5y agoThis should be one of the FIRST classes for anyone in the sciences, not just CS. Biology, Physics, Mechanical Engineering, etc. A couple areas I would add * How to ask questions [1] * How to debug problems, control, hypothesis, baseline * Reproducible research [3] * The Art of Doing Science and Engineering - Learning to Learn, Richard Hamming [4] * How to Solve It, George Polya [5] * How to work in teams, collaborate? [1] http://www.catb.org/~esr/faqs/smart-questions.html http://www.catb.org/~esr/faqs/smart-questions.html https://wiki.c2.com/?HowToAskQuestionsTheSmartWay https://wiki.c2.com/?HowToAskQuestionsTheSmartWay [3] https://esajournals.onlinelibrary.wiley.com/doi/full/10.1002/bes2.1801 https://esajournals.onlinelibrary.wiley.com/doi/full/10.1002... [4] https://www.youtube.com/playlist?list=PL2FF649D0C4407B30 https://www.youtube.com/playlist?list=PL2FF649D0C4407B30 [5] https://en.wikipedia.org/wiki/How_to_Solve_It https://en.wikipedia.org/wiki/How_to_Solve_It
- nkozyra 5y agoI love this. This is all the stuff that first-day junior devs walk into a place and their eyes glaze over. It's not sexy. A lot of it isn't "computer science." But until you get this stuff down you won't be doing day-to-day development very well.
- silicon2401 5y ago> A lot of it isn't "computer science." But until you get this stuff down you won't be doing day-to-day development very well. This is the main issue in my view. CS isn't development. CS is research, development is application. I'm a software engineer and I would never call what I do CS. Things are going to be clunky and awkward until schools split CS from Software Engineering, like they do with other sciences and their applications.
- moshmosh 5y agoThey won't split those until employers start favoring SE degrees over CS degrees for actual SE jobs. I don't expect them to do that as long as CS is regarded as more difficult and CS degree-holders remain in plentiful supply, as they're more interested in the degree's utility as a candidate filter than what the students learn. Probably a good SE program would produce candidates far more valuable to these companies, as far as what the classes teach, except that the best candidates will keep going into CS for (valid!) signaling reasons.
- Cerium 5y agoThey do at San Jose State University. CS is part of the college of science, as is math. The college of engineering offers both computer engineering and software engineering majors.
- sumnole 5y agoThis is fantastic. When my alma mater asked for feedback on my education received, I had let them know it would be helpful for students to learn about exactly the topics listed in this course (though I was already quite familiar with a lot of those topics as I self-studied programming at an early age), in addition to theory. It tends to be more valued in the workplace once you get past the DS/Alg interview gates.
- silicon2401 5y agoAn immediate flaw with this course is only suggesting VIM. Why not Emacs and Nano? I despise VIM and absolutely adore Emacs, but after getting emacs pinky have transitioned to nano for light editing needs, Sublime for universal productivity, and Intellij for Java development. If you're only going to teach one editor, why an editor that's so arcane in comparison to something similar to a text editor like Sublime or Atom? If you're going for a terminal-compatible editor, why not Emacs or Nano? If you want the most workplace-ready tool, why not Intellij or VS Code? And my main question, why not at least teach a few and empower the users to really explore and find the best tools for them? To me this smells of people who don't want to help students equip themselves for success and instead want to teach them the "right" way to do things.
- Cerium 5y agoI had some emacs pinky and for a while had a script setup to make the spacebar plus a key act as control (releasing spacebar without a key pressed would just be a space). Eventually I recovered and learned to be more gentle with my pinky.
- stryan 5y agoIf you read the article, you'll see their explanation: Vim is the most popular command-line editor (from a Stack Overflow survey) and all of the instructors know how to use it. The course is pretty *nix based so it makes sense to pick a command line editor and focus on it. Pragmatically, Emacs is usually not installed by default on Linux systems and Nano sometimes isn't. If you had to pick a command-line editor to teach, Vi/Vim is probably the safest bet.
- lanstin 5y agoEmacs is where ever I control the base images. But yeah, vi (if not vim) is ubiquitous. And honestly, the "time to be able to edit basic files and do basic stuff" is shorter for vi than emacs. If only because emacs documentation wants you to understand their 1980s conceptual framework before telling you the keystrokes you need.
- jenningsjason 5y agohttps://software-carpentry.org/ https://software-carpentry.org/ Similar concept, but targeted towards non CS majors
- mooreds 5y agoThis looks interesting but seems to be focused on research or data engineers? I saw a lesson on R, for example, which is probably not too useful for a webdev or mobile app developer.
- kyawzazaw 5y agoIt's probably for university researchers who have to write code. Like biologists, chemists, statisticans
- latenightcoding 5y agoMany community colleges and to a lesser extent universities offer a "unix tools/unix proficiency" class that introduces a lot of this stuff.
- duxup 5y agoLater in life I took a coding bootcamp as part of a career change. One of the students I was friends with was much younger than me, smart kid, very good in the camp, still college age / situation in life, and after the bootcamp he decided to go back to school for a CS degree after some "hey you're more than capable of qualifying for a lot of scholarships" type discussions. Anyway we met up a while later and he described how he was in these classes with theory and various languages and so on. Then the students would do projects together and they'd look at him like he was a wizard with what were fairly rudimentary debugging but still similar skills to what us described in 'the missing semester of CS education', or at the very least the ability / lack of fear to pick them up fast (something that if you're good at it is super handy in a fast moving boot camp). I remember when I was in college (dropped out for a variety of reasons) I really hated theory or 'just learn this focused thing you'll understand later' type classes when I just couldn't see ... the end use / test that end use in front of my face. It occurred to us that a sort of 'full stack light' boot camp almost would be a good intro to some of these deeper programs. Even if just to give some level of ... practicality / way of testing / seeing output ... etc. No doubt that many schools / departments would be averse to such a system for a lot of reasons. Even the bootcamp I went to was hosted by the same large university... but was sourced bought from some outside company and had NO association with the CS and similar departments.
- pcmoney 5y agoI think we are at the tipping point where for many roles in many organizations a Bootcamp grad is no longer just an alternative pipeline to hire with some caveats but increasingly the better hire. At a larger tech co I am consistently seeing boot campers coming in better prepared and with more hustle than CS grads. It would be interesting to see if their acceleration through the ranks is on average faster. It definitely is from my anecdotal experience.
- 908B64B197 5y ago> increasingly the better hire. That's a stretch. What I've seen with Bootcamps is that they know one stack and how to do one thing only. They are really productive in that one stack but lack the more fundamental understanding that CS grads have. When it comes to learning a new stack, technique or solving harder problems, the CS students run in circle around bootcamp grads. But to the non-technical manager, they see the bootcamp kids writing code on day one so they naively assume they are better.
- shirakawasuna 5y agoi.e. the crap I have to teach (or tell to self-teach) 95% of people who are taking on a programming role. While I understand the value of distinguishing between CS and software engineering, not being comfortable with basic shell commands, installing programming language tools, compiling something using those tools, or source control means that there has been a huge gap between theory and practice in their education, which hurts understanding of both. Particularly when interacting with senior CS students, they'll spend 6 months just getting comfortable doing very basic things like installing and running Python, using ssh with a VM, and using the command line. They try to do productive work, but their unfamiliarity with the basic tools of making software means they actually spend their time learning that. Actually, this also applies to the basics of just writing a functioning library or piece of software, or being familiar with async vs. sync programming, etc etc. It would be better if they could dip their toes into these things while learning about, say, algorithms, because identifying the slow step in its execution context and designing a better algorithm requires knowing this stuff. Or even better, before doing any of that. I've met people with 6+ years of CS or CS-related educational background who don't know how to do basic problem solving / troubleshooting of their work because they've only done toy coding for coursework.
- lanstin 5y agoIn some ways it's easier to teach a good language to someone that has been automating everything they touch with shell scripts/Excel formulas/weird python/VBA/javascript than to light a java programmer on fire with the belief and confidence that all tasks are automatable and all problems boil down to bits on a disk or bits in a packet.
- SLWW 5y agoWhile i was in college one of my main "teaching" moments were with people getting comfortable with the scary idea of using gdb. There was such a lack of understanding when it came to debugging that many people graduated still not knowing how to print a register. I worry about them because a lot of man hours were wasted in stupid errors, they would come to me after struggling for several hours. I'd take their applications, compile, run it once, see how it failed; then ran gdb and each and every time it took less then 15 minutes to find the issue. They called me "The Woz 2.0" (my first name is shared with the brilliant man associated with that nick) but it wasn't difficult or some great feat; i literally just used a debugger, like anyone should know how to do. It was a sobering realization for sure. The future of application development lie in the hands of many who are not only scarred of debuggers, but only ever know how to use them in an IDE
- Veuxdo 5y agoTooling is not computer science.
- rsj_hn 5y agoBut most people study computer science in order to work as software engineer, not computer scientists. Particularly at the undergrad level. This massive hidden subsidy to computer science also results in graduates who don't have a proper background in software engineering and at some point both government officials and the public at large is going to figure out that these are different skillsets with different curricula, and that we need to hire professors who can teach good software engineering principles and practices in our universities rather than just focusing on the computer science aspect and forcing the graduates to figure the engineering out for themselves on the job.
- Veuxdo 5y agoVim and git aren't Software Engineering either. They're just tools that some people (really) like. They aren't truly industry standards, especially Vim. Universities shouldn't be producing graduates who are dependent on specific tools.
- rsj_hn 5y agoLearning how to use professional tools is just scratching the surface of what should be taught. How to design a program, how to document a program, software design patterns and methodologies, how to refactor, secure coding patterns including at a minimum authentication, authorization, and audit systems, how to work with bug tracking systems and repositories, IDEs, unix and shell scripts, how to debug code, etc. Then they should display proficiency with assembly, c or c++, at least one scripting language and at least one higher level OO language and one functional language. Then they should also work on large software projects for practice. Then for electives they can focus on different areas of emphasis such as real time systems, AI, systems programming, database design, networking, web applications, etc. Imagine you study civil engineering but all your classes are taught by physicists and mathematicians, and you are studying physics. Yes, this is all important foundational knowledge for engineering, and you can't be a good engineer if you don't know any physics. But engineering is not physics and to graduate civil engineers without actually teaching them engineering seems like a massive fail. Adding a "missing semester" in which they learn how to use some engineering software is just scratching the surface of what an civil engineering degree should require. That we have gotten away with this in CS-land is just because of the immaturity of the field, not because this is a good way of producing the software engineers that society needs.
- llbeansandrice 5y agoPerhaps an unpopular opinion but I don't think these concepts should be taught as part of a BS program for Computer Science. Teaching tools of the trade is, well, a trade school thing. I suppose you have to decide if the degree program is more like "Prep school for FAANG" or a program to teach people how to be computer scientists. When I see classes like this I flashback to the required "Problem Solving" class I had to take as part of my CS degree which was a full semester of "How many windows are there in NYC?" or "How many bowling balls fit inside a Boeing 747?" Biggest waste of time considering Google and the like had moved on to HackerRank/LeetCode style questions years ago. Coming from a school that's known as a good technical/engineering school I found the CS program to be a bit lacking on the "CS" part. Lots of outdated classes on "how to develop for the web/mobile" and such.
- nkozyra 5y ago> Teaching tools of the trade is, well, a trade school thing Where do you draw the line? If you don't have tools and knowledge of tools you're not going very far in a "pure CS" degree, either. I'm watching the git/VCS one now and it's still touching a great deal on CS concepts, so it's not just "here's 10 git commands"
- llbeansandrice 5y agoThis general idea is something I've been sitting on for a while so I don't have full thoughts. These skills (VCS, debugging, etc.) are incredibly important in being a software engineer and could certainly have a place. I think I'm likely to fall on either side of the fence depending on how things are implemented in any given case. I have a bit of "PTSD" so to speak from my degree program. Lots of checkboxes for focuses in your major or minors to be awarded for taking a bunch of outdated classes that were largely things like "How to use Android Studio" rather than a more generalized class on "programming for mobile". I think what happened in my program is the department saw things students needed in order to be successful in the field: learning to program for mobile/web, cyber security, etc. And instead of putting together good classes on the theory and backbone of those areas they created a bunch of "trade" electives that got outdated before they printed the syllabus. Also the vast majority of students took an internship in the field myself included, and on the job was where I learned a lot about trade related concepts like VCS, flavor-of-the-week Agile, etc. I just don't want to see CS degree programs become expensive and outdated bootcamps and that's the direction I feel my alma mater's CS program was heading in a lot of ways.
- panzagl 5y agoThis type of stuff was required like second semester undergrad at my school back in the late nineties, albeit with CVS instead of Git. Everything was Solaris back then- we got our first Windows lab just as I was leaving, and it was mostly used for telneting to the Solaris boxes. I wonder if they dropped the requirement at some point as Windows took over, or if they maintained it as 'this is how real computers work'
- jayd16 5y agoNot exactly the same but my university had a similar quarter called "Software Engineering" or something vague like that with a similar hodgepodge of useful topics. I think it also had common design patterns, and uml, although I understand why uml is missing.
- MichaelMoser123 5y agodoes it cover build systems/makefiles? I usually spend some time fighting them, on the other hand there are so many different build systems, so that i can't blame them for not choosing any particular build system. Correction: there is some coverage of makefiles in https://missing.csail.mit.edu/2020/metaprogramming/ https://missing.csail.mit.edu/2020/metaprogramming/
- tonfa 5y agoNothing about code review or working with legacy code?
- Optimal_Persona 5y agoThis may get downvoted, but...How about recognition that Windows is the OS on ~%80 of the world's workstation computers, and also focus on the competent use of native Microsoft tools like PowerShell and VBA...rather than assuming everyone can/will/"should" use WSL, Cygwin or some other Unix shell/emulator? There's just no getting around this if you're going to work in US public/nonprofit sectors, or companies that don't make tech products.