Pursues or desires to obtain pain of itself our because it is pain, but because occasionally can procure great pleasure.
More Related Posts
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.
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.
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.
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.
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.
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
Oct 24, 2018
The Goods and Services Tax or GST is ready for a rollout on July 1, 2017. Various rules, procedures and action items have already been outlined for the transition to the new, unified system of indirect taxation. Businesses and taxpayers alike are expected to embrace these changes and get ready for the new normal—the era of standardized taxation. GST is expected to impact businesses significantly, especially those with cross-location presence, with operations across states. Both large and established goods and service providers, as well as SMEs, will be significantly impacted, both in terms of financial and operational sustainability.
What is GST?
GST will enable standardization of the indirect taxation under four slabs—5%, 12%, 18% and 28%. The change in tax rules will have a direct impact on cash flows and working capital loans for businesses. From the line of credit to taxation levels and timelines, businesses will have to reassess and realign themselves. On the one hand, local and Central taxes such as VAT, Service Tax, Excise Tax and others will be subsumed; on the other hand, tax slabs may increase; for example, from 15% under Service Charge to 18% under the third GST slab. As a result, immediate available working capital finance levels will change.
GST and working capital
Working capital is a key factor in the health of a business. Businesses should focus on periodically assessing their working capital needs. The impending GST rollout makes this even more imperative. This is because the tax bucket your business falls under will change depending on various factors such as the nature of business, locational spread and more. Not just this, the rules and timelines for availing a line of credit will also be revamped under the new GST regime. This means that cash flow will be impacted, and you may need to look for new sources of working capital finance. After all, sustaining day-to-day business operations is essential to growing your business, especially if you are an SME with low financial reserves. Working capital is, in a way, a reflection of the financial health of your company.
Here are some of the key changes GST is expected to usher in:
- Input tax credits will open up: According to the current tax system, input tax credit is available only on inputs that are related to taxable output. For expenses that are not related to taxable sales, input credit cannot be availed. However, under GST, a feature called the “Furtherance of Business” has been introduced. Under this, credit is allowed for any kind of business input, irrespective of whether it is directly used for “taxable sales”. This is a positive development and increases the scope for business to avail an additional line of credit. As a result, the immediate cash requirements will reduce, and working capital flow will get better. Businesses must closely study the GST clauses to understand how to benefit from input credit across newly added areas.
- Timeline of tax payment: Under the new GST rules, the tax is levied when the stock is transferred. As a result, businesses will not be able to claim tax credits till the time of sale, which may result in a huge time lag. Working capital levels might experience a drop during this time. Evaluating working capital finance specialists such as Capital Float is recommended, to ensure that business operations remain unaffected.
- Moving goods will be easier: Under the current tax regime, a lot of time and effort is spent by companies who have multiple presence across states (warehouses, offices, factories etc.)—they need to adhere to multiple laws such as octroi, CST and so on while moving goods across state borders. This complexity adds to the cost of doing business across states. With GST, this movement of goods across the country will be simplified and more cost-friendly.
- Imports will be costlier: If your company is in the business of procuring raw materials from outside, you may experience escalated costs soon. The current import duty rate of 14% will be replaced by a standard GST rate of 18%, making imports expensive.
- Reprimands for suppliers’ non-compliance: The input tax credit levels will depend on whether your suppliers comply with taxation and financial norms. This will make it imperative for your suppliers to declare their outward supplies along with their tax payment. You will also be held accountable if your supplier fails to furnish valid returns. This is an unfavourable practice for your business since in the event of their non-compliance, your input credit tax claims can be reversed and you may have to pay interest. It is, therefore, important that you assess your vendor base from a compliance perspective to avoid impacting your working capital
These are some of the direct ways GST will impact the working capital of your business. Should you need to augment your working capital to ensure a healthy cash flow under GST, you can turn to new age fintech lenders like Capital Float who are creating innovative and customised financial products. Our term finance offering, for example, is tailored to ease your working capital crunch with features such as zero collateral requirements, 3-day loan disbursal and customized credit criteria. Click here for more GST Blogs.
Oct 24, 2018
India is all set to implement the Goods and Services Tax, or the GST, from July 1, 2017. The intent is to standardise the indirect taxation system in the country, related to the supplies and consumption of goods and services. The new regime is one of the biggest indirect tax reforms pan-India, and one that will directly affect both business owners and consumers to a marked degree. It is thus important to know the whats and hows of the GST rollout.
What is GST?
GST is a new system for indirect taxation. Under this, a new four-tier tax structure has been finalised. Goods and services will be taxed under the slabs of 5%, 12%, 18% or 28%. The highest slab is for luxury items and items such as tobacco. The Union Cabinet has passed four bills for four different categories of tax regimes under the GST, as follows:
Central GST Bill: Applies to the supply of goods and services by the Central government within the boundaries of a state.
Integrated GST Bill: Applies to the supply of goods and services between different states, carried out by the Central Government.
Union Territory GST Bill: Applies to the supply of goods and services in the Union Territories.
The Compensation Bill: An allied bill that will govern the provision of compensation for revenue losses brought on by GST implementation, over a period of five years from implementation.
These four bills together are set to change the tax norms in the country.
Advantages of GST
The GST will prove advantageous at both seller and consumer levels. According to our Finance Minister Arun Jaitley, GST has the potential to boost economic growth by as much as two percentage points. From a business perspective, a number of pros are evident.
Greater compliance: The GST implementation will be reinforced by a backbone of robust IT systems and processes. All taxpayer services will be available online, making tax compliance and operations simple and transparent.
Uniform tax rates: This will ensure that tax structures and rates are common across the country, and will consequently make cross-locational business easier and quicker.
Reduce overlap: Often, a single product, for example, a shirt, being sold is taxed at various stages. With VAT, excise duty and other taxes payable at different stages, payments often roll up to large numbers, posing a cost to the company. The GST will facilitate the removal of different layers of tax levies and will replace them with a single, clear interface.
Cost advantage: Under the GST practice, many local Central and State taxes will be subsumed. At the Central level, the Central Excise Duty, Additional Excise Duty, Service Tax, Countervailing Duty and Special Additional Customs Duty will be subsumed. At the State level, we will see the following getting subsumed: State Value Added Tax or Sales Tax, Entertainment Tax, Octroi, Purchase Tax, and Luxury Tax, to name a few. These measures will reduce the cost of manufactured goods or services, thereby increasing the competitiveness of Indian goods in an increasingly global market.
The end consumer also stands to benefit from the following:
Better tax clarity and planning: Often, consumers are not aware of the taxes that they pay on the purchased goods or services, either due to the confusion caused by multiple indirect taxes or because the tax component is not revealed in the selling price. Such taxes may mask the real cost. GST will help streamline this by having only one tax applied from manufacturer to consumer, enabling tax transparency.
Lesser tax burdens: A single rollout across the nation is bound to bring in efficiency gains. At the same time, a transparent tax process with fewer hidden taxes will help reduce taxes for most commodities, leading to better affordability for the consumer.
The next steps for businesses: Applying for GST
Every business that is currently registered under any existing tax regime has to compulsorily migrate to GST. If your business is not registered under any tax regime, then you have to register for GST only if your aggregate turnover in a financial year exceeds a threshold limit of 20 lakhs liability for payment of tax (10 lakhs for North Eastern states).
If your business is happening inter-state or through e-commerce as an intermediary supplier, then registration is mandatory, even if this threshold limit is not reached. However, note that any casual taxable person or non-resident person is liable to register for GST even if they are not crossing the threshold limit.
Registration/ enrollment for GST is to be completed online under the GST Common Portal https://www.gst.gov.in/ for both taxpayers and businesses. This will be the platform for future filing of returns and tax payments. The government has also appointed GST Suvidha Providers to help with the process. There is no offline process for GST enrolment.
The enrolment is free. In order to log in for the first time into the portal, you must have your username and password that you would have received from the State VAT or Centre Tax Department (these are linked to your PAN). For further logins, create your username and password and begin the enrollment process.
These are the steps to follow for registration:
- Fill in Form GST REG-01-Part A, and key in the PAN number, mobile number and email address. The PAN will be verified online while the mobile number and email ID will be verified through the one-time password (OTP).
- The applicant will then receive an application reference number along with an acknowledgement of application through FORM GST REG-02.
- The applicant must fill the Form GST REG-01-Part B with the applicant’s reference number. The applicant must attach required documents: PAN card, documentation of company such as partnership deed, memorandum of association or incorporation certificate, proof of business such as rent agreement or electricity bill, cancelled cheque of company bank account in the account holder’s name, and proof of key authorised signatories such as list of directors or list of partners with their ID and address proof.
- If any additional information is required, the applicant will receive Form GST REG-03 as notification and must fill in and submit Form GST REG-04 within seven days.
- On submitting all details correctly, the application will be approved and the applicant will receive their registration certificate, called Form GST REG-06. However, if the application is rejected, Form GST REG-05 is sent to the applicant and they will be required to resubmit an application through Form GST REG-07, only if they need to deduct TDS or collect TCS.
This completes the registration process. It is followed by the issuance of a Provisional Registration Certificate (if approved), and thereafter, a final Registration Certificate that is expected to be issued within six months of the documents being verified by the GST authorities. Remember that different business verticals/locations need to be registered separately, as the registration certificate is generated separately for each.
Currently, the portal states that more than 60 lakh taxpayers have enrolled on the GST Portal between November 08, 2016 and April 30, 2017. Please note that the enrolment process has closed from May 1, 2017, and will reopen at a later date. Visit our GST blog to know more about GST and keep track of latest
Oct 24, 2018