Live data from Hacker News

I no longer understand my PhD dissertation

medium.com

261–270 of 281 posts

Re: I no longer understand my PhD dissertation

#261

Earlier quoted context omitted.

I completely agree on the culture point: Programming and math _is_ essentially the same (Curry Howard isomorphism) and the problems are indeed equally complex. The difference is that programming is driven on economical terms, hence agility, flexibility, etc. has been developed. Mathematics is driven in the university sphere, where mostly intrinsic motivation drives. Not many mathematics professors have the urge to si…

I don't think that programming and math are the same in a practical sense. I am studying math and CS and they're fairly different. Programs deal with specific things, types and data that you manipulate and see with your eyes. Maths deal with abstract concepts for which finding examples can be pretty difficult. Also, while programming, you can design your functions and their interfaces before writing them down. In mat…

I've done mathematical research in the past and I actually think a lot of the practical methodology I've learned from software development could be incredibly useful to mathematicians. I'd love to work full-time on a selection of related research problems with a group of coworkers following a sort of "agile" process with quick morning standups, a centralized repository of works and proofs in progress, "proof reviews", Trello boards, and so on.

Would it actually work? I honestly don't know, but I'd seriously love to try it.

Re: I no longer understand my PhD dissertation

#262

Earlier quoted context omitted.

Considering that PhDs get paid next to nothing, I actually think they're getting paid pretty adequately.

Nothing would be better, considering this article.

Except that some % of PhDs go on to be professors (who do a real service), and every once in a while you get a PhD student whose work probably contributes hundreds of millions of value to society. And every couple years or so, you have a PhD student who contributes billions to society in value.

Not to mention PhDs usually have to TA (teach students), which accounts for some of their pay.

Re: I no longer understand my PhD dissertation

#263
post #82
post #64

Earlier quoted context omitted.

> Why can't we just provide a simple real life example first and then go on explaining the details? This. People learn differently, in my case, if I can't get the 'Why' first, I'm not that excited to learn it. I guess making 'simple' real life examples in many cases is hard. I also tend to learn things much better if they came from a real problem/need I have. There was a good discussion about a 'project based univers…

High school math was awful at this in the US. I went through a year of calculus and never knew what the heck it was for.

Yup. I don't recall actually learning anything in math class from 7th grade through my senior year.

I learned trig and geometry from my shop and programming courses... Trying to do graphics in QBasic and determine lengths and angles in carpentry gives concrete examples. It's not as though most math sprang spontaneously from pure thought-stuff - at some point, architects, inventors, astronomers and others in concrete endeavors discovered these rules.

Re: I no longer understand my PhD dissertation

#264
Someone doesn't understand his own work five years later to this extent, this is a strong indication that the work is actually garbage, and the prior understanding five years ago was only a delusion brought on by the circumstances: the late nights, the pressure, and so on.

Perhaps it doesn't make sense today because it never did, and the self deception has long worn off, not because the author has gone daft.

Several weeks ago, on the last work day before going on vacation, I submitted fixes for nine issues I found in one USB host controller driver. The last time I looked at the code was more than a year ago. I had refactored it and really improved its quality. Looking at some of the code now, I couldn't understand it that well. But that's because it wasn't as good as I thought it was. I was still relying on the fictitious story of how I thought certain aspects of the code worked really well thanks to me, and it wasn't meshing with the reality emanating from freshly reading it with more critical eyes. And, of course, I was also confronted by a reproducible crash. As I'm reading the code, I'm forced to throw away the false delusions and replace them with reality. This is because I'm smarter and fresher today, not because I've forgotten things and gotten dumber! It's taking effort because something is actually being done.

Perhaps a similar problem is here: he's reading the paper with more critical eyes and seeing aspects that don't match the fake memory of how great that paper was, which was formed by clouded judgment at the time of writing. Maybe that obscure notation that he can't understand is actually incorrect garbage. His brain is reeling because it's actually digging into the material and trying to do proper work, perhaps for the first time.

If you can show that your five year old work is incorrect garbage, that suggests you're actually superior today to your former self from five years ago. So that could be the thing to do. Don't read the paper assuming that it's right, and you've gone daft. Catch where you went wrong.

By the way, I never have this problem with good code. I can go back a decade and everything is wonderful. Let's just say there is a suspicious smell if you can't decipher your old work.

Good work is clear, and based on a correct understanding which matches that work. There is a durable, robust relationship between the latent memory of that work and the actual work, making it easy to jog your memory.

Re: I no longer understand my PhD dissertation

#265

Earlier quoted context omitted.

> there are absolutely times when comments are necessary . I'll have to take your word for it, because I've yet to run into that situation.

1) Vector3 computeNewtonianGravity(float massA, Vector3 positionA, float massB, Vector3 positionB); Which way does the returned force vector point? Towards mass A, or towards mass B? 2) Vector3 UnitVectorWithDirection(Vector3 originalVector); What does this function do when the magnitude (length) of originalVector is zero? 3) float ArcTan(float x); What is the allowable range of values for x? ...

I prefer to put that kind of stuff in the javadocs/xmldocs, but I mostly work in C#/Java, with IDEs that have tooling baked in that make generating that kind of documentation A.) really easy to generate and B.) very useful in auto-complete lists, mouse-over popups, etc.

Ideally, you'd have some tests as well that would test those kind of corner-cases and illustrate failure cases and expected outputs.

Re: I no longer understand my PhD dissertation

#266
post #34

Earlier quoted context omitted.

During my PhD I found I had to occasionally lock myself in a conference room with a bunch of papers and all the whiteboards to do a sort of "deep dive", in order to get everything into my head and push things forward. Things that were a bit rusty quickly came back after a little bit of effort. At the end I'd emerge with a bunch of photos of whiteboards with clear intermediate steps, and then I'd write it up as a shor…

When I was studying, I went to two schools, one using semester system and one using quarter system. With the semester system I had plenty of time to read the material and really explore the mathematics behind what I was learning. With the quarter system I was so busy running around and catching up in different classes that I never really had the time available to sit down and do that. It sucked. I think the quarter s…

The quarter system is pretty non-optimal, I think. The college I went to ran on ten-week quarters, and even though it was normal to only take three courses, when each of those three is trying to jam an entire semester's worth of material into ten weeks, it's hard to even keep up with a surface level coverage of the material, much less dive deeply into it. It was pretty standard to have about 500 pages worth of assigned reading, plus extra research and writing, studying for exams, writing and debugging code. Fortunately, I was not an engineer or a hard-science major, so I didn't have the additional overhead of weekly lab work. When people took organic chemistry, it was a running joke that they were going on the "campus foreign-study program", since you'd see them about as often as you'd see friends that had gone off to Argentina or France for the term.

Re: I no longer understand my PhD dissertation

#267
post #106

Earlier quoted context omitted.

When you are using a particular method that is required by the context of your work rather than code you have control over. Perhaps the method name in the framework you are using is non obvious, or there is a bug in the way it works. Sometimes comments are just to save future you some time or help other developers find context. Suffice to say any project of significant complexity will probably require comments at som…

Break the long method up into multiple methods, each implementing a different fix. Bundle these methods up into a gateway class.

That introduces unnecessary complexity in the code for something that could just be explained in a comment.

There were no fixes performed in the method, the method just gets a product instance from a factory. The comment gives reasons for why it was using a core factory directly instead of using the automatic object resolution mechamisms.

The real method name was getProductInstanceFromCoreFactory. Still long, still clear as to what it is doing. But making the context clear would be more code than it is worth.

Avoiding comments by writing clearer code isn't a bad habit, but my point is that they are very useful to provide context for something that getting context for would otherwise be erroneous or cumbersome to implement.

Re: I no longer understand my PhD dissertation

#268
post #138

Earlier quoted context omitted.

I don't see how Ruby saves you from optimising (to my limited knowledge, it's not exactly a fast language), but I agree with you that naming stuff sensibly and extracting functions (which you can then name sensibly) is most important for maintainability and can make "in-code" comments unnecessary in many cases. However I strive to always document what a function does if its not obvious -- though I'd call that "docume…

> I don't see how Ruby saves you from optimising (to my limited knowledge, it's not exactly a fast language) That's precisely why you don't optimize. If you find you need fast code, you use a different language. Ruby is the language you use when maintainability and extendability take priority over speed. It's excellent for web development, where any speed improvements you make will ultimately be dwarfed by network la…

> That's precisely why you don't optimize. If you find you need fast code, you use a different language.

Ah, now I get you :)

> First, generally you can tell by looking at a method's code what it's expecting you to pass to it.

Here we might differ, I would always prefer to state clearly in the function doc what types of parameter values are allowed. For example, even if you have a really simple little wrapper in javascript:

  function log(x) {console.log(x);} 
Without documentation, you have to know what console.log can do for different types. So I'd definitely prefer this:

  /** 
   * Logs x to console.
   * @param x a value of a primitive type (other types are not guaranteed to be logged in a readable manner). 
   */
  function log(x) {console.log(x);}
> A gem will often define its own classes, which you might pass objects of around, (money, phone numbers) these will often be the primary focus of the gem, and how to use these objects will be written right there in the documentation.

Yes exactly, it will be documented as any public API should be. I have no problems using opaque types. But a function call(x) which expects x to be some object representation and not any old string (for which the library has constructors, e.g. PhoneNumber(string)) should surely document this, no?

Re: I no longer understand my PhD dissertation

#270
post #250

Earlier quoted context omitted.

There is still a key difference. With programming the information is always there. If you don't understand a higher level language but do understand the language in which the compiler is implemented, you can always read the compiler. The "it trivially follows", the information is simply missing. Gaining a mathematics degree will often give you the intellectual power of finding the missing pieces yourself, but the onl…

At least in programming it's possible to step into a function and/or work at multiple levels of abstraction. Getting a math degree just to be able to fill in the gaps created where 'it trivially follows' is equivalent to being required to memorize the API for a framework because clearly defined documentation is hidden behind a paywall. so called 'intellectual power' has little to do with it. What you're describing is…

> ... because clearly defined documentation is hidden behind a paywall.

Hmm you are from US aren't you? :)

Post reply on HN