Refactoring Code: What Benefits you will gain vs Risks that you have to face

Code Refactoring is an old and new topic that will never die. while it comes with huge benefits to your organization and clients there are some risks that you need to address and plan for it. I’ll be starting by listing some of the benefits of code refactoring and what you will gain once you decide to into this path:

  1. Improved Maintainability: By following the right procedures during code refactoring, it increases the readability of the code and code code clarity, which is ultimately will facilitate maintenance and troubleshooting/bug fixes.
  2. Technical Debt Reduction: By resolving code odors and inefficiencies reduces the need for upkeep in the future. There is no doubts this pay off late one down the road
  3. Performance Enhancements: Users and system resources both gain from quicker running code by adopting better algorithms and techniques .
  4. Scalability: Refactoring makes your codebase more capable of handling growth and increases in demand. Which means you can handle more clients or client’s business growth
  5. Team Productivity: Ultimately you will notice a better team productivity as a result of the above points; Quick development cycles and improved cooperation are two benefits of clean code.

Below are some of Risks that you may face during the code refactoring project:

  1. Time: Code Refactoring will consume time from the team in order to accomplish it, while clients can’t be on stand by and will continue asking for fixes/improvements, Developing new features requires time away from refactoring. I personally have been in this situation while client demanding for new features while we are running the internal refactoring projects, The only mitigation solution for this is to Make sensible priority lists and get client engage with you in the refactoring projects. Maybe you can split the big refactoring projects into smaller projects.
  2. Bugs: Updates and changes could bring up new problems. So the thorough testing is necessary – Having tests is a must after refactoring. I believe this will help building a better understanding with your Testing team.
  3. Scope Creep: Refactoring may go beyond what was initially intended due to scope creep. Clearly define your bounds and make sure you will not go beyond it.
  4. Backward compatibility: When reworking legacy systems, ensure legacy compatibility. Make sure it works backwards. So when you go live, you will not be impacting existing clients.
  5. Keep it simple and DO NOT over-engineer: do not introduce the needless complexity. Simplicity is the key.
  6. Time and Efforts will ultimately translated to money. this will be extra cost on your organization. but remember it is investment you are making to have a better code base and have a better client service/robust system

Why do I need CRM Software

More businesses adopting the hybrid working style and mixing having employees on the office and working remotely. The nature of this model putting more pressure on management on how they will be managing businesses, team, customers and making sure they are doing really good job on that. Google, Microsoft and other giant software companies are moving into the hybrid model. But to be able to move to hybrid model or the remote-working model, you need to make sure that you have the right tools to empower employees and get the best out of them.

Being lucky and select the right CRM system (customer relationship management ) can empower your business like nothing else. Storing and managing customer and prospect information, will help your marketing team find new customers faster by boosting your lead generation speed. Ultimately, this will make you closing more deals and winning more customers. It will definitely make your customer happier and more satisfy with your service with integrating your help desk solution with CRM.

Being customer-oriented will be easier while having the right CRM solution and you will never lose the precious information. It will keep the whole team on the same page about the customer status and needs.

There are so many benefits of using CRM on your day to day business, with MS365 CRM, we built-it while keeping in mind the needs for you and your customers and we built it to be customer-oriented. Adopting MS365 CRM will help you:

  1. Being on top of your Massive lead generation and never miss any.
  2. Store and retrieve customer information like never before. You will not need anymore to depends on your memory or on your notebook to store customer information. It is all on the cloud.
  3. Managing teams remotely and easily
  4. Better customer service and better customer satisfaction.
  5. Build a long term customer relationship
  6. Generate reports that will help you making data analysis.
  7. Utilizing built-in dashboards that is helping you taking decisions based on data-points.

in order to get the most benefits of CRM, you need to have it customized and tailored to your internal process. There are general rules and processes that all businesses have in place but there will be some variance per each industry and business needs. It worth to mention that MS365 is a customizable CRM solution that our team can help you customizing it and making sure it is fitting into your business needs.

The main information about MS365 will be found on the this link http://crm.myspace365.com also you can send a contact us message and the CRM team will be contacting you within 1 business day.

Agile Software Development Principles

It has been proven that Agile software development life cycle is the best approach to follow. it is making sure the client is more engaged into the development cycle, which is in turn reflecting on the project success. Some basic agile Software Development Principles:

  1. Satisfy client by continuous delivery of valuable-workable software components/modules.
  2. Welcome changes even in late development cycles
  3. Deliver Workable software frequently, the shorter Agile sprints the better.
  4. Keep client’s business people involved and work closely with them to get the project completed.
  5. Make sure to have team of motivated and trusted individuals from both parties; client and development team.
  6. Communicate frequently with client and make sure they are part of the process
  7. The deliverable are the primary measurement for project progress
  8. It is essential to do the simplest thing that works and satisfy client needs. Don’t seek for complicated solutions that overwhelmed the development
  9. Make sure your team is self-organized. Having self-organized team will produce high quality software on time/budget/quality.
  10. Always always always check how make things better and easy on everybody. This will make your team and your client more effective, which means moving towards the goal faster

These are the basic Agile Software development principles and of course there is more. I always recommending to go with Agile development approach, it is proven to have project succeeded over other approaches.

#AgileSoftwareDevelopment #AgilePrinciples

MS SQL Management Studio Snippet

It is normal to keep writing very similar SQL statements while working on database logic. Over the course of the past 10 years, I’ve been using SQL Prompt from RedGate in order to make my life easier while writing repeated SQL statement, it is very nice tool that is integrated with SQL Server Management Studio (SSMS). I mean by repeated statement things like “Select * from “, “Select Count(1) from “, etc… to a more complex statement which is checking what is being running currently on specific database. well, I can save these complex statement into files and just keep opening these files and use them. But that’s takes time. RedGate SQL Prompt, is relatively expensive tool specially when you need to purchase it to for your large team.

There is a cool feature on SSMS that helps me solving this issue. which is basically code snippet. which I save certain queries on SSMS IDE and use it later on. in order to do that I follow the following steps:

1. Open Notepad or any text editor, paste the below XML

<?xml version="1.0" encoding="utf-16"?>
 <CodeSnippets>
 <CodeSnippet Format="1.0.0">
 <Header>
 <Title>createIndex</Title>
 <Shortcut>createIndex</Shortcut>
 <Description>Create Index</Description>
 <Author>Yasser Jaber</Author>
 <SnippetTypes>
 <SnippetType>Expansion</SnippetType>
 </SnippetTypes>
 </Header>
<Snippet>
 <Declarations />
 <Code Language="sql"><![CDATA[

You SQL Snippet Goes here

]]></Code>
 </Snippet>
 </CodeSnippet>
 </CodeSnippets>

2. Before saving the file, change the text “You SQL Snippet Goes here” to your repeating sql statement.

3. Save the notepad with extension .snippet

4. On SSMS, select Tools menu , then ‘Code Snippets Manager‘, this will bring below popup

5. Click on Import, navigate to where you saved the notepad file, and select it. choose the folder that you want to have the snippet to show

By doing above steps, you will have new snippets imported into your SSMS IDE. to use you, do right click, click on “Insert Snippet”, select your correct folder, then select your correct Snippets.

How to get the off screen window back (windows 10) ?

Couple of days ago, I came across a very small issue but it is really annoying one. my chrome’s development tool went off screen and I couldn’t get it back on screen. it was completely invisible to me and I couldn’t see it any where but on windows 10 status bar. to overcome this issue, I used a simple trick on windows 10, which is

pressing Right-Shift and clicking on the chrome’s development tool on status bar.

doing so, windows 10 brought to me a context menu where I could click on Maximize which maximized the window on my screen again.

Restarting Computer Remotely using cmd

I came across and issue where I can’t RDP to my PC which is located on another country and I need to get connected to it. Unfortunately, while there is no one physically can restarting the PC. So I had no option but restarting the PC remotely.. Thankfully, there was an easy way where I can restarting the PC using command prompt. Below are the steps that I follow to restart the PC

1. Run the Command Prompt with admin mode. to do so, right click cmd short cut and choose “run as Administrator”

2. type the following command:

net use \PCIPAddressIPC$

lets assume the IP Address is 192.168.1.5 then the command will be

net user \192.168.1.1IPC$

you will get this response

The password or user name is invalid for \192.168.1.1IPC$.
Enter the user name for '192.168.1.1':

3. Enter username along with domain name like below

Enter the user name for '192.168.1.1':   DomainName\UserName

4. you will get prompted to enter the Password as below

Enter the password for 192.168.1.1 :

if the username and password is correctly provided, then you will get the below message confirming things are good:

The command completed successfully.

5. Now we are ready to send the restarting command to the target PC as bellow

shutdown /r /m \192.168.1.1 /c "Comments"

Restore SQL Backup and getting Error “Specified cast is not valid (SqlManagerUI)”

SqlServerHeader

Couple of days ago,  tried to restore a SQL database backup that I got from my client. I was restoring it to my SQL 2008 R2 database engine. I followed the following steps:

1. Right click the databases folder and then chose Restore Database from the drop down list

Restore Database backup

2. I got the below popup so I choose the proper name for the database and selected the backup file

Restore Backup Popup

but I got surprised with a not meaningful message from SQL server saying “Specified cast is not valid (SqlManagerUI)”.

SQLBackupError

Although this error message doesn’t give much info, but it is telling that the SQL 2008 is not being able to read the database backup headers. So there was couple of possible causes for this:

1. The database backup is corrupted.
2. This is a backup from a newer version of SQL Server
3. This backup is password protected.

In my situation it was 2nd cause, so I only restore it on SQL 2012 Engine and things went fine with me.

The Golden Rules to Achieve Goals

Achieve Goals

Achieving goals might not be an easy thing. But by using the right approach to tackle your goals will be a big part of achieving your goals. There are some rules that might help you to setup and achieve your goals… Goals are more than a TODO list that you have in place. The rule of thumb, DON’T PROCRASTINATING ACTIONS. Procrastinating will kill your dreams.

Researches showed that to achieve your goals there are 5 basic rules that you need to follow, below is a summary of these 5 golden rules:

  1. Goals should motivating you, it is important to like what you do in order to excel and achieve your goals.
  2. Set the SMART goals. Read more about SMART Goals
  3. Have your goals written in front of you. Keep reviewing these rules every single day.
  4. You have to have action plan in order to achieve your goals.. Dreams will not come to real without action plans.
  5. Stick with your goals.. Keep progressing towards your dreams and don’t drop the ball.

This article is explaining each point in more details. I recommend reading it.

First Step towards success

Toxic People
Toxic People

The first step towards making your success if to get rid of the toxic people from your life.. It is not easy task to be done, But this is what will make you moving quickly towards achieving your goals and make your successful story.

There is many toxic people in outlives, business insider listed the top 8 kind of toxic people in the real life. Click here to read the article

Big Security Company has been Hacked!

LastPass

There is nothing non-breakable.. a word that I used to say while I was back in school and still valid word. Recently, news were talking about hacking LastPass company. LastPass is a security company that providing a secured way to store your encrypted credentials for different websites. The encryption for credintials relying on the user selecting a very strong password for LastPass login. Then using this password to encrypt other sites login info. LastPass said that as the credentials are encrypted on their servers it is still secured and the hacker have almost no chance to decrypt and get the info.