Win a copy of Transfer Learning for Natural Language Processing (MEAP) this week in the Artificial Intelligence and Machine Learning forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Paul Clapham
  • Devaka Cooray
  • Bear Bibeault
Sheriffs:
  • Junilu Lacar
  • Knute Snortum
  • Liutauras Vilda
Saloon Keepers:
  • Ron McLeod
  • Stephan van Hulst
  • Tim Moores
  • Tim Holloway
  • Piet Souris
Bartenders:
  • salvin francis
  • Carey Brown
  • Frits Walraven

Do you guys memorize some things in programming?

 
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi there!

I was just wondering that in programming there are a lot of concepts. So do you guys memorize things? Like two days ago I learned some sorting algorithms such as Selection sort, Insertion sort, Mergesort, and Quicksort. Thoroughly understood how they work and then implemented in Java. Now there's a report or saying like on average one forgets 80% of what they have learned the next day. Now today I tried to implement those algorithms again in Java. I did well but got confused a bit for quicksort so could not do it completely. I always believe memorizing codes or programs are bad. But sometimes I guess we do need to memorize the important parts of a specific program so we can implement them during exams or job interviews etc. Or am I just dumb?
 
Marshal
Posts: 4856
317
IntelliJ IDE Python Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The ability to recall useful details does not have to come down to remembering it. Keeping good notes for yourself is a great way to create reference documentation that will help you throughout your career. Some people keep their own notes private, others put their notes out for publicly in the form of a blog.
 
lowercase baba
Posts: 12829
52
Chrome Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I don't memorize the specific implementation details for sorts, or data structures, or whatever.

What is more important (in my opinion) is knowing that different sorts work better in different situations - i.e is the data already mostly sorted?  will i be doing lots of inserts/deletes, or is it a mostly static list? which uses more memory, and which is faster? and so on.

Then, when I know i need so sort stuff, I'll look at my data/use case to get an idea of which criteria apply, and which are priorities.  Once I get an idea about all that, THEN I go and look at my options, and weigh all the factors.

Now, most of the time, i still don't have to "roll my own", as someone has already implemented them and I can just use their code, which is a) faster than me writing it myself, b) probably better than anything I'd write myself, and c) easier than my writing it myself.  But understanding that the analysis beforehand is critically important to choosing the route is what I think is the important thing to learn.

 
Sheriff
Posts: 7051
184
Eclipse IDE Postgres Database VI Editor Chrome Java Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I also post little project demos to GitHub so I can a) point people to them, and b) remember how to do it myself!  Also, Google is your friend (or DuckDuckGo, or whatever).  But I probably forget more than most of the people on this board.
 
fred rosenberger
lowercase baba
Posts: 12829
52
Chrome Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Knute Snortum wrote:I probably forget more than most of the people on this board.


Challenge accepted!!!  although i'm not sure how we'll measure how much we've each forgotten...

;-)
 
Saloon Keeper
Posts: 21963
149
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
How do I remember?

Brilliantly, of course.

Seriously, I've always been of the Sherlock Holmes persuasion. Memorization is for things you use. Everything else should be in storage. The key, of course, is remembering that it's in storage and finding it in storage. That's something that I'm actually notorious for. Back in the days of paper computer manuals, I got called out because out of an 8-foot rack of IBM manuals I could go instantly to the proper publication and the proper chapter within that publication to pull out detailed info.

These days, it's Google.

Well, actually, I have Calibre to keep track of major documents - storage, searching and the like - and Recoll to run through my files and index them. Recoll does a deep scan of my desktop on Tuesdays, looking at not only documents, but source files, emails, graphics meta-data and assorted other junk. Hot topics are kept - and hyper-linked - via gnote, and lists and short documents live on Joplin. I have Joplin to set up to sync between my desktop and various other devices. It's like EverNote, but open-source and I host it myself so cloud providers and shady agencies can't idly peruse my data.
 
Knute Snortum
Sheriff
Posts: 7051
184
Eclipse IDE Postgres Database VI Editor Chrome Java Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

fred rosenberger wrote:Challenge accepted!!!  although i'm not sure how we'll measure how much we've each forgotten...


What were we going to do...? ;)
 
Tim Cooke
Marshal
Posts: 4856
317
IntelliJ IDE Python Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
A cow for listing out your file and document management tools. I'm going to be taking a look into those.

Tim Holloway wrote:I have Joplin to set up to sync between my desktop and various other devices. It's like EverNote, but open-source and I host it myself so cloud providers and shady agencies can't idly peruse my data.


I'm curious: What do you use to host it yourself?
 
Tim Holloway
Saloon Keeper
Posts: 21963
149
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Tim Cooke wrote:A cow for listing out your file and document management tools. I'm going to be taking a look into those.

Tim Holloway wrote:I have Joplin to set up to sync between my desktop and various other devices. It's like EverNote, but open-source and I host it myself so cloud providers and shady agencies can't idly peruse my data.


I'm curious: What do you use to host it yourself?


I have a WebDAV server on one of the mousetech.com machines in-house. It works well providing you don't get into fights with Nginx proxying.

Incidentally, there's a reason I only run recoll indexing once a week. It does a very deep scan. Kind of like booting up Windows and having the anti-virus software take over the machine, except slightly more polite.
 
Marshal
Posts: 25436
65
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I don't memorize anything. If I use something often enough, eventually I remember how to use it and then I don't have to look it up again. But active memorization, where you use flash cards or mnemonic cues or other memory tricks? Nope. Don't do that.

So if you asked me, say, about the hierarchy of operators in Java -- I haven't memorized it and I might well get it wrong if you set me an exam about it. But it's something I hardly ever need to use so I don't care.
 
Sheriff
Posts: 7602
521
Mac OS X VI Editor BSD Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have broad concepts in my head, the details I look up if can't figure out along the way. IDEs these days are helpful for code completion what's in terms of i.e. Java API use, same with other.

Eric Kaiser wrote:Now there's a report or saying like on average one forgets 80% of what they have learned the next day. Now today I tried to implement those algorithms again in Java. I did well but got confused...


Campbell is among those 20%, probably just the smaller fraction of it... who can do quicker than that. @OP I wouldn't worry too much that you get confused along the way, that sounds normal. I also probably couldn't write just now sorting algorithm without reminding myself about its mechanics. More importantly is, to be able to write one when you have its description in front of you. Surely you can't remember every logical solution, often there are many ways of solving one or another problem. Even with sorting algorithms, i.e. you could write in recursive way or using more habitual loop constructs. If you want to read file - there are bunch of different ways to achieve same or very similar result. Most importantly you understand what the lines of code you write do - so you could competitively discuss the code with your peer.
 
Rancher
Posts: 886
22
Netbeans IDE Oracle MySQL Database Tomcat Server C++ Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Eric,

I remember fundamentals and theories--how things work, other than that, google is always there.  Now having said that, if I know the fundamentals and theory, then I can make an implementation, that is what I am paid to do all the time.  I build things with fundamentals and the theories tell me when a certain pattern will work for a combination of tasks I need to be done.  Like a merge sort, or a game engine, or a task scheduler, and etc... I know very few people that can do more than fundamentals and theory.  In the languages you program with frequently, you know the syntax of the language and use it expertly to implement the theories and fundamentals you need to use to make projects.  I've been doing this stuff for over 30 years, and I humbly say the other programmers I have worked with throughout my career and the ones I work with now call me a wizard when it comes to programming.  When they are stuck on how to get something done, they come and talk to me and I recite fundamentals and theory to them.  If it's on a grand enough scale--I have a whiteboard in my office and we write fundamentals and theory on it until they can see the direction they need to go.  

IMO: the further you get from fundamentals and theory, the worse your design and coding become.

Les
 
Ranch Hand
Posts: 33
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It depends. I have read and coded basic algorithms like bubble sort, insertion sort, selection sort and merge sort only about 3 times in my life. I always forget them a few days later. IMO, its necessary to remember specific algos only before interviews. I remember things better and longer when I write them multiple times as if I am explaining it to beginners. That is why I always make stand alone notes of such things and refer to them instead of reading a book. YMMV.

I think it is more important to remember the basic concepts of algos instead of memorizing specific algos. If you need help to remember that itself, then make short notes. Anyway, unless you have a fancy job at some fancy company, chances are that you'd only be maintaining other people's code. The only algo you will use is the one baked into helper libraries like java.Arrays.sort(collection).
 
Bras cause cancer. And tiny ads:
Two software engineers solve most of the world's problems in one K&R sized book
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic