7 Habits of Highly Effective Developers

Software Development is one of the most-rewarding & fulfilling Job in the world.  I would like to Jot down the Best Developer Practices so that it can help the coding community in forming High-Performance Teams.

Take Away: Distributed Architecture | Clean Code | Less Chaos | High Refactor | High ROI

image

#1 Be Accurate on Estimates

Estimating the Story points accurately is an Important skill for developers.  I have seen that many Scrum Teams are not properly doing the Estimations & Retrospectives so that the Team is spending lot extra hours on development.

Few points of improvement are: Setting 6 hour day, Adding buffer hours, Job Design of separating API-Developer, UI-Developer, Buffering Hours on External Dependencies, Deployment Overheads can improve the Credibility of the team.

#2 Begin with the Distributed in Mind

The world of Monolithic application is completely gone.  We are seeing Microservices & Distributed components are racing towards replacing older codes.  The advantages are Smaller Teams, Independent Deployments, Individual Scalability etc.  These strongly emphasize the need to modularly design the application components.

Another point to note is the Distributed Component should be Self-Health-Check ready.  Each component can tell whether it is running correctly or not.  We can introduce REST API calls like api/health to validate the health of each component.  In this way the Invoker or Application Validator can quickly validate all the underlying distributed component health quickly.

#3 Put Test things First

More the often, I see Developer writing the Code first then the Unit Tests.  This often lead to the state that “There are no unit tests!” 

In fact, if we adapt TDD (Test Driven Development) we can ensure the Unit Test is written first.  Code will definitely follow!

Enforcements CICD team can enforce check-in rules that requires 80% Code Coverage or more.

#4 Think Subscription

Often in the world of Cloud, I have seen more & more applications getting converted into Subscription model.  This mainly involves writing an application, test it right with one customer, then replicate the same with multiple customers. 

Few design elements which help in improving the Subscription Adaptability are:

  • Design Database with GUID Identifiers which are Faster like Integers link | Integers will Fail on Copy/Paste data scenarios involving Foreign Keys
  • Design APIs with Client ID passed through HTTP Header | Rather than changing the method parameters

#5 Seek first to Design Then to Refactor

As you know the Lifetime of the Code is mostly undergoing Refactor! Refactor is the element of Software which gives High ROI on the investments.  The code should be Refactor Ready.

As an example, an application which is tightly coupled with SQL Server will be difficult to Refactor & Reuse against an Oracle database.  We need to use Interface Segregation principle of S.O.L.I.D to enable easier refactoring of the code. 

Another example would be Support of Unit Tests.  The more number of unit tests are present, the Refactoring will be more easier & controllable.  Otherwise we would not know which code will break at later phase of the application.

#6 Synergize

Overall the product development is a Team Effort.  Often times I have seen a Scrum Team is failing due to  Dependency on external Folks etc.

Solution: Adding a shared resource into Scrum Team will Accelerate their Performance thereby Improving the Spirit of Team. Synergizing!

#7 Sharpen the Coder

Software Development is one of the Most Rewarding Job!  We will start coding & we don’t know when time passed by and End-of-Day has reached.

Following are few aspects which can Sharpen the Coder inside you:

  • Map with a Like-minded Coder | This will make the coding world more interesting
  • Spend 1 hour daily on learning | Keeping a MVP Target can help you focused on learning & blogging
  • Share knowledge 1 hour a week | Sharing gets more focus on your knowledge, question & optimize
  • Powerful Hardware | Have a powerful machine – preferably desktop / mechanical keyboard which makes the Coding Life Fun

Summary

I hope this will add value to your day-to-day Development activities.  Please let me know your comments.

Full Book

I am creating the Full Book along with DotNetSpark.  You can order it here which includes the Real-world 7 examples, technical POCs, design guidelines, unit testing techniques etc. supporting the above facts.  This book less than $10 can really save you $ K-Million depending on the size of your software projects.

image

Plus, bonus you will get a 1-hour webinar/meeting where you can discuss the same with author. 

How to do App Registration for Enterprise Application?

In this post we can see how to do an App Registration for a Web application so that it will become Enterprise Application.

Step 1  Open Azure Portal > Active Directory

Open Azure Portal > Go to Active Directory from Resources.

image

Step 2  Open App Registrations

Open App Registrations blade as shown below.

image

Step 3 Create New App Service

Click on the New Registration button. 

  • Enter Name for the service
  • Leave the default options
  • Enter the Redirect URI as the URL of your web application / web api

Click the Register button

Copy the Client ID  as displayed over there.

image

Step 3 Create Credentials

Go to the Certificates & secrets blade. 

  • Click on New client secret
  • Save changes

Copy the Password generated

image

Now you have the Client ID and the Client Secret for the App Registration.  Now any application authenticated using these will be given privilege of this App Registration.

Step 4  Open Enterprise Applications

Open Enterprise Applications blade from Active Directory.  Search for the name.

image

If you can find your Application – Congratulations!

You have just created an Enterprise Applications.  Now you can do the following & more with it.

  • Add Owners
  • Add Users
    • Internal & External
    • Enable Self-Servcie
  • Audit Logs
  • Troubleshoot

References

https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/what-is-application-management

Summary

In this post we have seen how to perform an App Registration.

Azure Infrastructure – Connecting On-Premise Network to Azure

One of the challenges of Organizations migrating On-Premise resources to Azure is Security. 

  • How to transfer data securely over the Internet?
  • What are the Alternatives?

VPN Gateway

Virtual Private Network is a Private Interconnected which uses Encrypted Tunnel to communicate between 2 Private Networks.  The untrusted internet problem is resolved by Encrypting the communications.

VPN Gateway is similar to Virtual Network Gateway which allows Site-to-Site, Point-to-Site and Network-to-Network connections.

  • Site-to-Site connections allow On-premise datacenter to connect to Azure Virtual Networks
  • Point-to-Site connections allow User Devices connections to Azure Virtual Networks.
  • Network-to-Network connections allow Azure Virtual Network to other Azure Virtual Networks.

ExpressRoute

Azure ExpressRoute allows secured, dedicated, high-bandwidth connections between your On-Premises and Azure.  This will bypass the Internet and hence more secured.

Following are the Features of Express Route:

  • Layer-3 Connectivity
  • Faster Access due to Peering of Networks
  • More Security
  • Higher Bandwidth
  • Bypasses Public Internet
  • Available in all Locations
  • Office365 Connectivity through Microsoft Peering

Following are the Drawbacks of Express Route:

  • ExpressRoute Circuit which is a Physical Connection needs to be created from Internet Provider
  • Cost is More

Few ExpressRoute providers are listed below:

image

Virtual Network Gateway

Virtual Network Gateway is required to connect 2 Networks either as:

  • VPN
  • ExpressRoute

When to choose VPN Gateway?

Low Bandwidth requirements

Point-to-Site scenarios

Occasional Connectivity

Moderate Data Security

When to choose ExpressRoute?

Dedicated Connection Required

High Security for Data

Faster & Continuous Access

References

https://docs.microsoft.com/en-us/learn/modules/connect-on-premises-network-with-vpn-gateway/2-connect-on-premises-networks-to-azure-using-site-to-site-vpn-gateways

https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpngateways#a-namep2sapoint-to-site-vpn-over-sstp