6 ms·
Having spent entire days years ago poring through the JUnit 3 source code and having been completely dejected by the quality of the code there, I don't really t
by hota_mazi 9y ago
Having spent entire days years ago poring through the JUnit 3 source code and having been completely dejected by the quality of the code there, I don't really trust Kent Beck to give advice on anything related to programming.
- wyldfire 9y agoMaybe his strength is in recognizing and articulating the qualities of good programmers and not in programming itself?
- geodel 9y agoThat kind of quality is seen in linkedin style thought leaders. Mostly blathering about obvious or obviously stupid things.
- elcapitan 9y agoI think such posts (and books) are usually meant like checklists for people who already knows that stuff (not learning it), but want it formalized. Then when you have issues for example with team members, you can look at those resources and try to assess why something is going into the wrong direction. It's easier to enumerate those points then.
- varjag 9y agoIt seems this kind of posts/books is more aimed to selling oneself as a consulting business process expert in a corporate market than to teach anything to the practitioners. It's a bunch of soundbites aimed at a dilettante.
- elcapitan 9y agoWell, management to some degree is a form of highly refined dilettantism, so they may go well together.
- systems 9y agopeople need to start somewhere, for someone experienced, sure he might sound like he is stating the obvious for a novice, he might be enlightening don't underestimate how much you know, or assume that everyone else knows it
- mediocrejoker 9y agoFor this article at least, I have to wonder if a novice would get any meaningful, actionable tips or enlightenment from these terse bullet points.
- hinkley 9y agoI had a friend in college who wanted to be a writer. She was paranoid about spending too much time on comparative lit and setting the bar too high for herself before she ever got good at it. As far as I can tell, she didn't avoid that trap, despite identifying it. Occasionally I wonder if I avoided it. There are so many ways for a project to fail and when you know too many you can become a nervous wreck. Over most of the course of the '10s I've noticed that I'm a lot more comfortable with certain classes of imperfection, because they are immaterial to the job at hand, or represent an unknown that we haven't tackled yet (if you don't know how something should actually work, making it 'perfect' might make it perfectly wrong, and then where are you?). It's like a chess game. Half the board is full of pawns to be sacrificed for some higher priority. You have a contingency plan for any threat, but you can't act on them all at once. Probably everybody does this, but their set points are different than mine, so we argue over code reviews.
- BoorishBears 9y agoI don't think that's a fair way to judge the content, but I also didn't get more than I expected out of an blog post named "Mastering Programming"
- deleted 9y ago[deleted]
- uniclaude 9y agoThis comment somehow makes me think of Stroustrup's quote about languages that nobody uses and languages that people complain about. Classic middlebrow dismissal.
- rb808 9y agoI've seen a lot of programmers that love design patterns, SOLID code, and hip new frameworks; but hate talking to users, getting stuff shipped or keeping things running. Even if the code is "messy" and given that JUnit is used by millions of programmers hourly without trouble, I suspect Kent prefers the latter to the former and which makes him a master programmer in my book.
- YCode 9y agoReminds me of when I used to play bar darts. I was picking out some new darts at a billiards store and me and my buddy were discussing what size, weight, etc. to get (i.e. "best practices"). The owner laughed and said the only thing that matters in picking a dart is how well you can hit the target with it.
- geodel 9y agoIt is other way round. Kent is mostly a programing pattern/methodology peddler.
- andreygrehov 9y ago> I've seen a lot of programmers that love design patterns, SOLID code, and hip new frameworks; but hate talking to users, getting stuff shipped or keeping things running. I think these tasks are not meant for programmers in the first place. But indeed it's beneficial when programmers know how to handle those things properly.
- eric_b 9y agoHrmm, this is an interesting observation. In general I'm not a huge fan of Kent Beck or Uncle Bob as I've felt that their zealotry for "clean code" gets in the way of them actually creating valuable software. I've always been of the mindset that if the code isn't a little "gross" it's probably not doing anything very interesting.
- collyw 9y agoUnit testing isn't very interesting, so shouldn't need to be "a little gross".
- louthy 9y agoI think all code at a certain scale has it's fair share of messiness, it's just unavoidable as the battle becomes not so much about code quality, but the cognitive difficulty of keeping everything in the human brain. I am no fan of the OO design-patterns dogmatic approach and that whole cultish paradigm hurts my eyes when I look at it in code form, but I understand how even the best programmers in a field get into this situation.
- eternalcode 9y agoU am a new developer who is being thought Object oriented design. What is the alternative approach to OO? functional?
- louthy 9y agoYes, functional. I wasted a good 15 years in the OO world and wish I'd never seen it.
- vim_user 9y agoIf you're a new programmer, I don't think you should start from OO. OO-based languages are built on procedural, structural and imperative programming foundations. Starting from OO may force you to see everything as an object even when it doesn't fit. The less you start off with, the better your understanding will be, and then you should learn to expand your horizons with other programming paradigms: logical, functional, and many others.
- Sundiata 9y agoI know that a lot of universities (mine included) introduce programming through object oriented programming so this could be a problem for a lot of people going into university without much if any programming experience, much like I did. I've been interested lately and reading more about functional programming though.
- detaro 9y ago
- ashwinaj 9y ago> completely dejected by the quality of the code there Please list a project of equal complexity that has been written beautifully from start to finish in your opinion. This myth of beautiful coding needs to stop! Code is not a masterpiece from Van Gogh, it needs to ship. This determines quality, not the usage of some obscure/mainstream/unreadable/oh-look-how-cool-I-am idiosyncracy of the language. If you ain't shipping, it's completely useless.
- sloppycee 9y agoHow about Google's Closure Library: https://github.com/google/closure-library https://github.com/google/closure-library The code, imo, is some of the highest quality js I've seen. It is also incredibly comprehensive and easily as complex. High quality != shipping fast. They are separate quantities, it is easy to have one without the other but very rare to have both.
- ashwinaj 9y agoI'll take your assessment at face value (although a quick look at github repos, it seems that junit is way larger). My point wasn't to ship crap, it was about obsessing on quality over actually shipping (and cutting some corners). This is something I learned at my first job, we obsessed over quality and never shipped. Guess what happened? :)
- hinkley 9y agoThe biggest thing holding programming back is that we insist that our domain is somehow unique from hundreds of other domains that have centuries more wisdom at their disposal than we do. We reject out of hand the notion that because we've only been doing this for 60 years means that we really have no idea what we're doing yet. We believe we are more like machines than like other people. But at the end of the day we're the same trumped-up monkeys smashing away with imperfect tools. If you look at our fellow productive monkeys, they aren't using the prettiest tools, no. But the tools they are effective with have a certain beauty to them. They often have a single purpose, and they do it very well (the Unix model knew this 40 years ago). Nicks and dents don't matter, unless they're on the working surfaces, in which case they have to be repaired or replaced, so resilience in certain dimensions is an absolute must. A master does learn to work with their tools instead of against them, but within reason. If a better tool is available, or they can modify the existing tool to fit them better, they won't hesitate for a second to do it. That is what is meant by 'A craftsman does not blame his tools.' If you know you're using a bad tool, that's your fault. Get better tools.
- hinkley 9y agoTestNG exists because of how inflexible and leaky the abstractions were in Junit 3. Junit 4 exists in large part because of TestNG. I think that pretty clearly illustrates that Kent and Ward were wrong and Cedric was right. And yet I still listen to both of them about other things. Nobody has it all figured out. You figure out what things you can trust a person about, and you learn from them, and you move on to someone else for some of the rest. [edit] But I confess that I have a similar relationship to Josh Bloch that you have to Kent Beck. I can't listen to code advice by someone who wrote 2 collections APIs without understanding the basics of variance or apparently even the Liskov Substitution Principle. Throwing exceptions because you decided not to implement part of a public interface is an unforgivable offense that others have duplicated because if it was good enough for Josh it was good enough for them. He has done next to nothing to atone for that sin. You aren't an effective programmer. I don't want to hear you talk about the subject you so obviously know nothing about for 500 pages.