This question may contradict the above, but if my salt will always be a randomly generated value? If so, when can it be helpful?
Salts should be random. Their only use is to make brute force attacks on hashes much more expensive. Something called the "rainbow table" (which is a fancy name for a database where someone pre-piled a whole bunch of possible passwords and lets you search for passwords if you know the hash) allows you to take unsalted password hashes and turn them into passwords in fractions seconds in many cases.
Moderate-sized salts can increase the complexity of a brute-force campaign attack exponentially. For every single bit of random data in your salt, you double the time it takes for a brute force election attack. For each unique salt value in your database, an attacker must start by attacking a password protected by that salt.
If you had 1 KB of random salt for each user password, precomputed hashes exited the window. You would not affect the amount of time it takes to iterate over one user password.
One way to make an attacker’s life harder is by making the hash process computationally intensive (for example, 5000 rounds of sha1 (salt + sha1 (salt + sha1 (salt + password))). You should only do this for every login attempt. The attacker must do this is for every combination of salt + password that they want to guess. You have to decide if it is worth your needs. The answer is probably no.
Edit: besides passwords, the user of the system, what else needs to be encrypted as a good practice? Are they encrypting usernames or something else?
I am paranoid, but I would say that any information that you, the owner of the site, is not needed until the user is logged in, must be encrypted derived from the user's password. Thus, the attackers do not have access because you do not have access.
An online order processing system, for example, may require their mailing address, their name and last order, not encrypted, but their order history and favorite color can be encrypted using an account password.
Please note that if you do this and they lose their password, protected information will also be lost.
2nd Edit: What is a one-way hash? I am technically, I can’t cancel the engineer my source code? Maybe this is a bad question because I don't know much about one-way hashing.
A hash is a method of systematically extracting information. Say you start with a line and produce "srflcdos", throwing out everyone but every fourth character. The text I “hashed” may be: “spear, if the fish is lying calmly, do not sit!”, Or it could be: “supercalifragilisticexpialidotious”. It is impossible to prove any of the methods.
Cryptographic hashes do a lot more mixing and other transformations along with outlier to make them safer for small amounts of input and to avoid leaking any facts at all about the input. As an example of an insecure hash, if you know that whenever the input contains the letter A, 12 bits of the hash is 1, then you publish information about the source text, and the result is not a cryptographically secure hash.
The principle is that you cannot reverse engineer a process if, between each transformation, you throw out information vital to changing a previous transformation. MD5sum produces 128 bits of output, regardless of whether you put 1 bit or 12 petabytes of information. You obviously cannot compress 12 petabytes per 128 bits, so information is explicitly thrown out during the calculation of the hash.