DEV Community

What are the core concepts that a new developer needs to know?

Tomi Adenekan on October 25, 2020

I have been hearing a lot about a developer needing to learn core concepts and not just the latest frameworks/libraries. What are the core concepts a developer needs to know?

Collapse
 
kallmanation profile image
Nathan Kallman

Fundamentals to me are things like:

  • Boolean logic (the og fundamental)
  • "Pointers" (any sort of reference, not just memory pointers a la C; a smaller piece of data that leads to a larger piece of data somewhere else)
  • Recursion
  • Polymorphism
  • Basic data structures (contiguous memory arrays, stacks, queues, linked lists, and trees)
  • Cacheing
Collapse
 
tominekan profile image
Tomi Adenekan

What is caching?

Collapse
 
kallmanation profile image
Nathan Kallman

The storing of information in an easier to access location and/or format that came from a source of data in a more difficult to access location and/or format.

Some examples:

  • Browsers caching CSS/JS/Images because its easier to access from a local hard drive than a request across a network.
  • CPUs caching blocks of memory because its easier to access from on the same chip than to go over the motherboard to the main RAM.
  • dev.to caching the count of reactions because its easier to query one column on a record already queried for than to query a whole set of related records and count up the total.

Whenever there is heavy computation or long latency involved in fetching a value, some form of caching may be helpful. The pitfalls being when the source of information changes the cache needs to change as well; and caching too much can ironically slow the system down, since the cache now has higher latency to search/fetch data than getting it from the source.

Thread Thread
 
tominekan profile image
Tomi Adenekan

Thanks for explaining

Collapse
 
yaythomas profile image
yaythomas

At simplest:

  • how to instantiate (declare/let/set/new etc.)
  • conditionals (IF/THEN/ELSE)
  • loops (WHILE/FOR)
  • error handling (TRY+CATCH/RAISE)

This is really pretty much all you have to learn when you are learning any new coding language. The design patterns, APIs, frameworks all come on top of this.

Collapse
 
tominekan profile image
Tomi Adenekan

Thanks, I just have a question? Where does file io come into play?

Collapse
 
yaythomas profile image
yaythomas

file io is how you interact with the file system - so this is how you read & write files.

this is not a "fundamental" in the sense that the basic language constructs I mention are fundamental - although it IS pretty important! but there's lot of programming you do without necessarily working with files.

how exactly you do file io depends on your programming language - you will use an API to do this. most programming languages tend to have a built-in API to handle file io for you. So the IO operations exist as an API on top of the programming language structures itself, and very frequently you have different levels of abstraction.

For example: if you're using a JSON api it might well give you functions to load and save json from and to a file. Underneath this api will be a more fundamental api to work with filestreams directly, but if you use the abstraction layer on top you generally don't have to worry about the underlying mechanism.

Thread Thread
 
tominekan profile image
Tomi Adenekan

Thanks for explaining :)

Collapse
 
aarone4 profile image
Aaron Reese

Data constructs (sets, tuples, arrays, objects, linked lists), basic algorithms, immutability, transaction scope and database locking, database normalisation to at least 3nf. Functional, procedural and object oriented development paradigms, source code control, esp Git. Clean code, SOLID principles. Soft skills (empathy, listening, compromise, NLP strategies for building rapport) industry specific knowledge and terminology.

Collapse
 
tominekan profile image
Tomi Adenekan

What are transaction scope and database locking and database normalisation?

Collapse
 
aarone4 profile image
Aaron Reese

Transaction scope is where you need to update multiple database records t o complete a business process. For example. Debit my bank account, credit yours. Either both should succeed (commit) or both should fail (rollback). Locking describes what can happen to records whilst they are being written to or read. Should you be able to read the balance off my account if another process is currently updating the balance figure. Does the decision change if it is updating something else like the overdraft credit limit?