6 ms·
There is a class at Georgia Tech I colloquially referred to as "making sure your coworkers don't hate you." It covered design patterns, software testing, and pr
by conjecTech 9y ago
There is a class at Georgia Tech I colloquially referred to as "making sure your coworkers don't hate you." It covered design patterns, software testing, and project management. I'd tack on a basic knowledge of databases to that. These are things you can gain a true functional knowledge of in a couple of weeks, and which not knowing might make senior engineers hate working with you.
So to mimic the class:
The Mythical Man Month
Design Patterns - Even if some of the particulars are not as relevant, it still provides a useful framework for thought.
Lessons Learned in Software Testing: A Context-Driven Approach
I'd also add Harry Potter & The Methods of Rationality. A lot of engineers can think empirically, but its not their first reaction. Going through this book helped make it second nature for me. Can't remember if a certain data structure is immutable? Now I'll write a couple of lines of code to see rather than go looking for documentation. A lot of big problems start as false assumptions. Having the instinct to think to test them and knowing how to will prevent a lot of wasted effort, regardless of your role.
How to Solve It by Polya also gets an honorable mention for similar reasons.
- conjecTech 9y agoAn addition directed particularly at cofounders: The Freelancer's Survival Guide by Kris Rusch. It is the single best book on entrepreneurship/running a small business I have ever read. It covers pretty much all the bases. It also covers an enormous number of the issues that you will inevitably encounter if you start a business, but likely have never experienced otherwise.
- mattmanser 9y agoDesign patterns feel completely obsolete now. Not only does no-one at all talk about them, most of the design patterns themselves were harmful and are now completely unnecessary due to functional language features being available in modern languages. Design patterns are like TDD, no-one wants to come out and admit it, but they were really, really bad outside of theory. InitiatorFactoryFactory I do not mourne thee!
- fdw 9y agoCould you please elaborate that? I still see patterns like Builders, Factories, Singletons and even sometimes a Strategy in Java. Why do you think they are bad? What are the functional alternatives?
- mattmanser 9y agoJava's not a good example as Java 8 took so long to come along. Almost took them 10 years to catch up with the rest. In modern C# you won't see hide nor hair of Factories, Singletons, etc. Expect modern Java to be the same in a few years.
- maveonair 9y agoWell, what’s about the new HttpClientFactory... https://github.com/aspnet/HttpClientFactory https://github.com/aspnet/HttpClientFactory
- mattmanser 9y agoYeah, what with the asp.net core team being such great devs, I'll definitely listen to them. That team can't commit to anything and yet make regular sweeping changes to the framework depending on whatever the current flavour of the month is. This month it's DI, DI, DI. They've been incredibly inconsistent since ScottGu left.
- olavk 9y agoSingletons have fallen out of favor, not because of language improvements, but because of increased focus on unit testing, which does not work well with singletons. I believe this trend actually started earlier in Java than in .net.
- c_shu 9y agoThey are not really bad. Reading about them can help you get familiar with how programmers usually name their patterns. But I don't think one needs to study "design patterns" to come up with code using builders, factories, and singletons. People should always know the optimal way to write their code (or almost optimal). They can come up with any design patterns when coding, instead of choosing some among the well-known ones.
- mettamage 9y agoHow is the class actually called?
- conjecTech 9y agoI believe it was CS 3300 - Intro to Software Engineering
- godelmachine 9y agoHarry Potter & The Methods of Rationality - I'd to Google to see if that was really even a book.
- sophistry 9y agoJust a small pointer because I assume you're a non-native english speaker: you never (I think) contract an auxiliary verb before an unconjugated main verb. You have to write "I had to Google ..." The only reason I mention it is because it's an easy error to make but one that makes people have to read the sentence a few times to figure out what it means. If "to Google" was conjugated, you could write "I'd Googled that last week ..."
- godelmachine 9y agoThanks for this, Sophie!! I reiterated this from my GF who also happens to be a professor of English :)
- yesenadam 9y agoAs a native speaker, I've never thought in terms of auxiliary verbs, unconjugated etc, or known what they were. So I'm trying to think of the way native speakers learn, the natural rule. Doesn't it depend on whether there's a stress/emphasis on the verb? I'd to seems wrong because the had in I had to is stressed, so the had just seems missing. In I'd love to - the would isn't stressed. If it is, like "I would love to, but I can't" then the contraction isn't used. It's how contractions arose in the first place, I guess.
- sophistry 9y agoI believe the experience of "stress" that you feel in this sentence is because "had" is being used as a modal verb. That is, it's being used to qualify the verb "to Google" rather than specify it's tense like in "I'd Googled that last week". Modal verbs are a type of auxiliary verb. I don't know the "real" rule for when you can contract and when you can't, but I'm sure that there's some linguist somewhere who has written a paper on it. The reason that I didn't try to explain the stress that native speakers feel by talking about modal verbs is because I don't think that you can say in general that you never contract a modal verb. For example you can say "I would talk to Jim" or "I'd talk to Jim" where is "would" a modal verb modifying "talk". Maybe it's the case that the only time you have a phrase in the form of [auxiliary verb] [unconjugated verb] is when the auxiliary verb is being used as a modal verb? I don't know. I don't have any expertise in linguistics, I just know the terms because I took a class on it in college.
- framebit 9y ago2340 (the mandatory group project course) also covered a lot of this stuff, though not in as much detail. The suggested reading for that course is a book that blew my mind when I first saw it as an undergrad: Clean Code by Robert Cecil Martin. I believe the examples are all Java, but the lessons are applicable to any language. Stuff like naming your variables more carefully than you name your children. https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 https://www.amazon.com/Clean-Code-Handbook-Software-Craftsma...