Coding Guidelines: Programmer’s Daily Bread and Butter

As we work in startup, we are under time pressure to release a lot of new features on time, features which do not have well defined requirements and the complexity of those features is often underestimated and we end up taking a lot of shortcuts / adding hacks to release such time sensitive features.

This may work for a short time, but over the period of time we realize that the same shortcuts that you took to release features quickly are now slowing you down. You can not scale and add new features on top of it, even if you do, they become quite unstable. In this situation you might want to take a step back and revamp/refactor you base system.

One of the easiest things that you can do to avoid this situation is follow coding guidelines.

Coding Standards

Well, what according to you is a good code? The simple definition could be: if it can’t be understood, maintained and extended by other developers then its definitely not a good code. The computer doesn’t care whether your code is readable. It’s better at reading binary machine instructions than it is at reading high-level-language statements. You write readable code because it helps other developers to read your code.

Naming conventions:

As the name suggests, it is a simple concept where you follow a specific naming conventions across teams. This becomes important when your team is growing and are solving problems on daily basis and pushing a lot of code every day.

camelcases vs underscore

This helps a lot when your team becomes big and a lot of developers are working on the same code-base. If you follow some fixed patterns while defining classes/functions/variables names, it becomes really easy for fellow colleagues to understand your code. This directly impacts delivery time taken by a developer to build/modify a feature on top of existing code. For example, let us suppose you want to define a time-stamp field in a database table, how would you name it ? If you have a fixed pattern like a “action_ts” or “action_at” for giving names then you can easily guess what could be the field name in the schema. If its a created time-stamp then it could be either “created_at” or “created_ts”. You do not have to go and check every-time you writing any logic over different database tables.

Function/Module/API writing (Size and Purpose)

Simplicity and readability counts. It’s always better to write to concise code than a messier one so that if any other developer is also looking at it who has no idea, should get what exactly it is doing. Not more than max 10–15 lines. Jenkins is considered as one of the greatest implementations, and has average function length of 2 lines.

A function/module should only do ONE thing and should do it NICELY. By following this, code becomes modular and it helps a lot in debugging. You can solve the problem better and debug faster when you know where exactly it’s coming.

When you are developing features over an established products, more than 50% times, new requirements are of the nature which you can build on top of existing code. In such cases, you can ship those requirements really faster and stable if existing code-base is modular and stable. Writing library functions a savior. There are countless advantages of writing a library code. It avoids code repetition, no surprises when it comes to response formats and of-course code re-usability.

Exception/Error Handling

Unknown errors are real pain in developers life. It’s always better if you know probable exceptions and errors in code in advance. But that is not the case always. Irrespective of all this, you definitely do not want your end-users to see unexpected errors on their screens.

When you have different micro-services and bigger development teams, if you follow standard response formats for across APIs and standard exceptions then there will not be any surprises in production. You can agree upon one format across all the services. Every API can have certain ‘response_data’ and standard set of error-codes. Every Exception will have an error-code and a message. Message could have variation viz, tech specific message and user facing message.

Writing test cases:

If you want to have a good night sleep, then you better have thorough test cases covering almost all aspects of your code. The best way forward with building test cases is at requirement stage only. Whenever a requirement comes, products managers discuss it with developers as well as QA. Both teams start preparing for possible use-cases and test-cases.

A testing unit should focus on one tiny bit of functionality and prove it correct. Each test unit must be fully independent. Each test must be able to run alone, and also within the test suite, regardless of the order that they are called. The implication of this rule is that each test must be loaded with a fresh data-set and may have to do some cleanup afterwards.

Automation plays an important role here. What else is needed for stable product where you have all test cases covered and running at intervals automatically, giving you a report of the all functionalities. Also, whenever you are adding/modifying code, you make sure either you write new test cases or modify existing ones.

coding

Code Reviews:

This one thing save lives, trust me! Every team can benefit from code reviews regardless of development methodology. Initially it takes time if you do not have a procedure setup of doing code reviews, but eventually it becomes a habit. Code review should be one of the core development steps.

Code review generally is about:

  • Does the new code conform to existing style guidelines?
  • Does the written piece of code covers all the use-cases specified in the requirements and has relevant test cases written ?
  • Are the new automated tests sufficient for the new code? Do existing automated tests need to be rewritten to account for changes in the code?

There are several advantages of this process such as –

Code reviews make for better estimates: Estimation is a team exercise, and the team makes better estimates as product knowledge is spread across the team. As new features are added to the existing code, the original developer can provide good feedback and estimation. In addition, any code reviewer is also exposed to the complexity, known issues, and concerns of that area of the code base. The code reviewer, then, shares in the knowledge of the original developer of that part of the code base.

Code reviews mentor new joiners: Code reviews help facilitate conversations about the code base between team members. During these conversations, team members share their views and new alternatives of doing things.

Code reviews take time: It’s an incremental process, where it takes time initially but as your code-base grows, it ensures, you are always pushing verified and tested code.

Hidden truth about code reviews: When developers know their code will be reviewed by a teammate, they make an extra effort to ensure that all tests are passing and the code is as well-designed as they can make it so the review will go smoothly. That mindfulness also tends to make the coding process itself go smoother and, ultimately, faster.

As a fast growing company our self, these set of guidelines have helped us a lot in shipping stable features on time and helping to increase a healthy learning environment.

Source:- Capital Float’s Medium Blog

More Related Posts

Card image cap
Accelerating the Growth of Ecommerce in India – BWCIO

Written by BW CIOWorld

Capital Float is a digital platform that provides capital finance to SMEs in India. They offer short-term loans that can be used to purchase inventory, service new orders or optimize cash cycles. Vaibhav Singh, Associate Vice-President, Business Development, Capital Float, in a chat with BW CIOWorld shares some insights on e-commerce in India.

The e-commerce boom has birthed young entrepreneurs with limited transactional history that directly impacts their accessibility to credit. Capital Float has identified this opportunity and has launched new debt products to serve this rapidly growing segment. Most banks continue to implement underwriting models on online sellers which were originally designed to underwrite debt of offline sellers, argues Vaibhav.

“At Capital Float, we have built our underwriting model bottom-up based on evolving data and metrics to identify creditworthiness of online sellers. The approach is tailored to be more relevant to online businesses and offers more accurate results, says Vaibhav. Explosive growth in the e-commerce segment has overwhelmed traditional banking institutions and companies like us are able to share the burden of offering credit to unserved SMEs in the market.

E-Commerce platforms are attempting to standardize processes while increasing scope and scalability of existing sellers. This effort is likely to cause a churn in the seller e-community creating a metaphoric sieve through which sellers will be filtered. Consequently, the best performers will experience geometric growth, increasing competition between sellers in the space.

Building individual brand identity would be a challenge
The nature of the business fosters competition on the basis of pricing. In the attempt to offer best prices, sellers would be challenged to build their individual brand identity. Accessibility to credit through traditional channels will continue to remain a hurdle for e-commerce sellers in the foreseeable future, as conventional sources of credit begin to adapt to the dynamic capital environment.  The fiery growth in the e-commerce segment can only be sustained if companies like us are able to share the burden of offering credit to unserved SMEs and ecommerce sellers in the market.

There will be a slow change in the mindset especially in a hitherto human-intensive space like lending.  People have to become comfortable with trusting machines to do everything a man can do; stepping in only where expressly human traits of experience and intuition are needed, even if this means that at volumes approaching statistical significance, we let a few true-positives slip through in the interest of overall productivity. It’s about slowly giving up control and trusting technology to pick up the slack.

Algorithms and big data will drive eCommerce growth
Capital Float has used technology innovatively to ensure that seller in the ecommerce domain have access to collateral free working capital loans and enable business growth in a simple and efficient manner. Leveraging analytics, algorithms, big data and other disruptive technology trends to make lending decisions quickly based on verifiable data thereby ensuring efficient and fast turn-around time is the future. Technology has also enabled Capital Float to expand business faster and reach out and support the SME and seller community across India. The acceptance of new forms of technology would only fast forward the growth of facilities needed to continue the growth of ecommerce.

– See more at: http://bwcio.com/accelerating-the-growth-of-ecommerce-in-india/#sthash.zDdwY1Q3.dpuf

News piece sourced from BW CIO World. Read the full piece here

Oct 24, 2018

Card image cap
Impact of the Union Budget 2018 on MSMEs

MSME is an important sector for the Government, as it maintains a relentless focus on increasing GDP and employment. Formalization of MSME businesses is being undertaken on a massive scale after demonetization and the introduction of GST. The core focus of the Union Budget 2018 indicates the Government’s commitment to continue strengthening MSMEs from the base of the sector.

Lending a Hand to MSMEs

With the Union Budget 2018-19 in play, the refinancing policy and eligibility criteria under Micro Units Development and Refinance Agency (MUDRA) program will be reviewed to encourage easier financing of MSMEs by NBFCs.  The Government has set a target of ₹3,00,000 crores for loans to be provided under MUDRA in 2018-19. Specific measures to address NPAs of MSMEs were promised to ease the cash flow challenges that they face.  The tax burden on MSMEs has been reduced by axing tax rate to 25% for those with revenues of below ₹250 crores. Recapitalization of PSU banks will add an additional ₹5,00,000 crores to the available lending pool this year. A unique Aadhaar-like identity for each enterprise is planned for streamlining business identity. This measure can enable Fintech lenders to process eKYC of enterprises swiftly and offer working capital finance in a matter of minutes. Furthermore, the Finance Minister Arun Jaitley called out Fintech lenders in his speech and emphasised their importance in financing the development of MSMEs in India.

Operation Greens

A five-year tax holiday was granted to Farmer Producer Organisations (FPO) with a turnover below ₹100 crores to encourage post-harvest value addition. The Government has also promised a Minimum Support Price (MSP) crop of 1.5 times the production cost to farmers. In addition, several proposed measures related to the farm sector include – funds to develop agricultural markets, improve agricultural logistics, enhance rural connectivity, and distribute Kisan credit cards to farmers in fisheries and animal husbandry sectors. This sets the precedent for these sectors to create a digital footprint, facilitating them to receiving customized finance in the future from digital lenders like Capital Float.

The Finance Minister proposed to extend the tax relaxation period to 150 days to footwear and leather industry to boost the creation of employment at the grassroots level. An additional ₹10,000 crores have been allocated for fisheries, animal husbandry and aquaculture industries.  This is expected to aid more micro-segments in being included in the formal financial ecosystem

New Financing Avenues

In a bid to help start-ups and venture capital firms to attract foreign investments in niche areas, the Government will evolve a coherent and integrated policy for ODI (Outward Direct Investment) and hybrid instruments. The basket of eligible FDI instruments will be expanded to include these under certain conditions.

Taking a Position on Crypto Assets

The Government has reiterated that it is illegal to transact using cryptocurrencies, though it does not categorically state that it is illegal to hold these assets.  The Government will intensify its efforts to eliminate illicit transactions in cryptocurrencies. It also proposes to explore the use of Blockchain technology to enable more transparent payment mechanisms to boost the digital economy further. These efforts certainly forward the shift of business transactions from being paper-based to paperless, while adding clarity on which methods of digital payment are acceptable and which aren’t.

MSME – Key to India’s Industrial Growth

MSME sector plays a key role in India’s journey towards becoming the 5th largest economy in the world. Several measures to ease cash flow have been proposed which are likely to make lending more readily available to MSMEs. With Fintech lenders leading the charge on the financing front, MSMEs can be expectant to receive timely credit support to actualize their business ambitions and achieve remarkable growth this year. Several micro-segments are also expected to be absorbed into the formal financial system, as Fintech lenders like Capital Float continue to champion for the cause of financial inclusion in India.

Oct 24, 2018

Card image cap
Implications of GST on SMEs

One of the biggest tax revolutions of India is underway as businesses and tax payers are gearing up for the change. These enterprises and individuals are assessing how the GST rollout will make a difference to them. One such segment is the Small and Medium Enterprises (SME) segment, which contributes significantly to India’s GDP and exports. The positive effects from GST are expected to drive decentralization of opportunities and provide an impetus to India’s GDP. However there is some concern that some of its policy implications could slow down business, and that is what small and medium enterprises must prepare for. Gaining know-how on GST rules and implications is the first step towards becoming GST-compliant and becoming tax-savvy. This blog will help you understand which SMEs are eligible for GST and the impact on the sector as a whole.

How GST will impact business transactions

GST will typically impact any business at two ends of the spectrum where transactions are involved i.e. for input transactions and for output transactions.

  • Input transactions: An input transaction is a transaction carried out for the supply of input goods / services like raw material procurement, imports etc. Input transactions will be directly affected due to the changes in taxation levels of raw materials/industrial inputs, affecting the product or service pricing.
  • Output transactions: An output transaction is one that is done for outbound supplies or service delivery. For example, sales is an output transaction. GST will directly impact the sales by altering the taxation of the product or service being sold. Depending on the new tax slab of the goods or service, the profitability of the enterprise will be directly impacted.
    Another significant impact area is due to the concept of “place of supply” and “time of supply”, calling for more stringent supplier compliances.

Which SMEs are eligible for GST? 

SMEs are a major driver in the Indian economy, contributing to almost 7% of the manufacturing GDP and 31% of the services GDP. With a consistent growth rate of about 10%, they employ about 120 million people and contribute to around 46% of the overall exports from India.

Under the GST regime, this significant sector too is set to change. First and foremost, all businesses, including SMEs will need to register for GST under the rules as per the following threshold limits related to aggregate turnover:

Region Liability to Register Liability for Payment of Tax
North East India Rs. 9 lakh Rs. 10 lakh
Rest of India Rs. 19 lakh Rs. 20 lakh

Why should SMEs enrol for GST? 

An SME registered under GST will be recognized as a legal provider of goods and/or services. Tax accounting will be streamlined. Such an SME will be able to maintain proper accounting of taxes paid on input goods or services, and be able to utilise the inputs credit facility to enable better cash flows. GST will provide an opportunity for SMEs to digitize their transaction management, making it efficient for the future. If such an SME scales up, it will be prepared in advance to manage large-scale transactions through software. GST enrolment thus provides a window of opportunity to modernise the business and set up standards for doing business easily in the future.

Moreover, digital transactions tend to leave a digital footprint. These footprints can be used to assess the sector with greater accuracy, as Fintech lenders can create customized financial solutions for these SMEs, which are currently under-served from a credit perspective.

Impact of GST on SMEs

Overall, the SME sector seems to be skittish about the impact of GST. Here is a look at some of the pros that GST brings to SMEs.

  • Ease of starting a business: The old tax regime requires new entrepreneurs to obtain VAT registration for every state separately, with each state having its own rules. Though GST too requires businesses to register in each state, the rules for GST are more uniform and outlined clearly on the portal. This will make it easier to set up an SME.
  • Ability to compete with multinationals and multi-state enterprises: GST is a destination-based taxation system and not source-based. Locally manufactured goods by SMEs will pay the same amount of tax as imported goods from multinationals. Moreover, corporates generally ‘stock transfer’ transfer goods to escape the taxes on inter-state transfers. SMEs are not able to ‘stock transfer’ goods due to lack of infrastructure; they physically transfer goods and pay inter-state taxes, leading to higher expenses. Under GST, the stock transfers would be taxed. This will help put SMEs at par with large multinational corporations, allowing them to compete on an equal tax footage.
  • Transparent transactions: SMEs often do not have the resources (processes and people) to dedicate to tax transaction management. GST will enable an online and transparent view of tax obligations and on-goings, minimizing the need to liaison with tax authorities offline. Though it will take some initial investment now, SMEs that streamline their transactions now will be setting up future-ready systems and processes.
  • Reduced tax burdens due to rise in threshold: Under the old regime, business owners with an annual turnover of Rs 5 lakh (Rs 10 lakh in the North East), mandatorily need to register for VAT and make VAT payments. Under GST businesses above Rs 20 lakh turnover (Rs 10 lakh for North East) qualify for GST registration, which brings huge relief to SMEs. Thus, businesses that fall in the Rs 5 lakh – Rs 10 lakh revenue bucket need not register and will experience better cash flows because they are exempt from GST.
  • Better Cash flow due to input credit facility: Cash flows may increase because of facility of input tax credit, wherein businesses will be able to avail credit on input expenses such as supplies. For example, for a business that procures steel as the raw material to manufacture utensils, the businessman will need to pay tax on the raw materials procured i.e. iron ore. He can adjust the tax paid on inputs from the taxes collected on outputs. This means that only the actual “value addition will be taxed.
  • Better logistics: GST will help eliminate time-consuming border tax protocols, allowing for free flow of goods across borders. This will result in savings in logistical costs. CRISIL estimates that the logistical cost for companies manufacturing bulk goods will be reduced by around 20%.

Key Concerns around GST

  • Investment to go tech-savvy: SMEs are typically not used to managing complex tax compliances, but GST will need SMEs to go digital. SMEs may need to hire or consult with GST experts to bring about a technology makeover resulting in additional expenses.
  • Reduced tax exemptions: SMEs are eligible to avail a central excise threshold exemption of Rs 1.5 crore gross turnover; under the GST regime this exemption will reduce to Rs 20 lakh. As a result, SMEs with turnovers between Rs 20 lakh and Rs 1.5 crore will not be eligible for this tax exemption. This is an additional cost that will pinch SMEs that were previously used to being tax exempt.
  • Higher tax rates may impact profitability: Despite assurances by the Finance Minister that overall tax slabs will not increase, the GST slabs indicate otherwise. The services tax rate has distinctly increased from 15% to 18%. Higher tax outflows means lesser profitability.
  • Strict tax-compliance norms means more costs: GST will bring in an era of stringent compliance. For example, purchase invoices raised will have to be reconciled with the supplier of the goods. These invoices have to be uploaded by the entity by the 10th of every month and will need to be reconciled by the 15th of every month. SMEs are not used to carrying out such detailed and timely tax transactions and will need to hire personnel to help with tax management and compliance.
  • Supplier-side compliance will affect the GST compliance rating: The ability of an SME to claim refunds is a direct result of its GST compliance rating. Going ahead, SMEs will be accountable for their suppliers’ non-compliance and they may take a hit on their Compliance Rating due to non-compliance at any leg of the operating cycle, right from procurement to service. Maintaining compliance records, periodic audits will need to be instated to ensure compliance of all stakeholders. This responsibility of supplier-side compliance is an added cost to the company.
  • Time lag in input credit process: Input credit will only be available after a supplier declares the particulars of the supply and after these details are validated by the buyer electronically. Thus, a supplier is heavily dependent on the buyer’s response, leading to a probable time lag in availing input credit. Moreover, the timeline for claiming input tax credit is very limited— before the due date of filing returns for September of the next financial year, or, the due date of filing annual returns, whichever is later.

GST is all set to usher in an era of simplified taxation. SMEs must decide on the right investments to optimise the benefits of the change. This means investing time and resources in understanding the change, getting the right people and processes to change the way they do business to ensure GST-adherence. Such SMEs will emerge future-ready and poised to scale their business like never before.Get more information about GST on our GST blog.

[maxbutton id=”4″ url=”https://safe.capitalfloat.com/cf/default/register?utm_source=blog&utm_medium=button&utm_campaign=blog-content-button&utm_content=implications-gst-smes” text=”I want Business Loan” ]

Oct 24, 2018