A rational approach to coding is what is expected of modern coding practices. But then it isn’t as rational as one would guess. A lot of myths still run to delimit the right coding practice. Hence we should rather develop an understanding of the modern coding practices than placing our bets on previous tested and proven methods. The myths involved in coding practices will only act to hinder the end result. Let’s debunk the myths one by one and try to understand what we can rightly call a modern coding practice.
Offshoring has been the proven method to cut down on costs and has been a part of almost all software project humble beginnings. Venture capitalists trying to find the right company to invest their fortune on would also look forward to working with a flexible enterprise that facilitates the offshore scope. Yes it does sound a cost effective methodology as off-loading suggests more work at a lower budget.
As Frederick Brooks suggests(in the year 1975) that adding developers doesn’t pace up the software project, on similar grounds does also offshoring fail though it provides with more workforce at a dirt cheap price.
Offshoring does empower a development team with a bigger workforce but then it would be going overboard to state that offshoring always produces software faster and cheaper.
The fact that offshoring necessitates a cumulative increase in the effort to execute a software project. Three instant problems rise owing to the same.
1. Disrupts the work because of the repartitioning required | 2. Training becomes necessary: This puts the initial brakes to the software project and a prior period of training needs to be accounted for. | 3. The enterprise should already be equipped to tackle and deal with added intercommunication. Many a times added intercommunication can turn into miscommunication or lack of communication which would bring down the overall output expected by manifold. |
Hence what seems to be logic becomes a myth when we take these factors into consideration. Apart from these factors even if we assume that the training time required would be the same as that of the onshore workforce, then also common denominators of culture, language shall be missing which will add to a gap in communication and will take its own course of time. This myth gets busted once the enterprise is faces deadline crunches repetitively and the in-house software team needs to then execute the project. So it is safe to say that offshoring might not always produce software faster and cheaper.
To stereotype a good coder would be to assume that he works long hours. You would never see them in the bean bags but only in front of their desks coding away all day. They would be the last to leave and the first to arrive. These facts and figures cannot be denied.
Even a recent analysis by National Health Interview Survey data points out that programming is the 7th most sleep deprived profession. So it indeed true that coders slog. But then holding on to the myth that good coders work long hours will only lead to more negligence on the part of the enterprise and it shall never intervene or look at its own issues and problems. Here are three things that we see.
1. Rather than stereotyping it is more important to ask as to why coders have to work so long. | 2. Usually it is not tough programming that needs to be cracked. | 3. On the other hand, it is business decisions that make the coder extra busy. Sometimes unrealistic estimates are made, at other times the client introduces a new requirement. |
Also glitches in the management and lack of a clear goal in a software project can completely create a crisis situation for the programmers. Take web development for instance – the fluid dynamics of the job involved increase the possibility of time crunches.
Now since the myth remains, good coders will have to anyhow execute the project with the new time crunch. Good coders put an extra effort but that doesn’t necessarily mean they have to work long hours. If the enterprise streamlines its goals in a more realistic and clear manner, then this myth can be easily debunked and coders can be then given their leisure time on the bean bags. Hence coding practices 2015 need to adapt themselves to this change.
This myth springs up from Fred Brooks himself. What is rather misquoted is the fact that Brooks actually maintained that great developers are 10 times more productive than the worst developers. Only an inefficient hiring strategy will recruit according to this mantra because apart from the good developers, they will also have an equal number of poor developers.
Having 10 average developers is much more productive and cost effective than having 5 great developers and 5 poor developers. As a matter of fact it is itself a myth to coin the term great developers. They simply do not exist. What exists in reality in successful enterprises is a cohesive group of efficient team members who develop software..
Obscurity too is a business idea. Twitter started its shelf life as a Ruby on Rails app as did Yammer, Reddit and Yahoo Store on other such offbeat languages. This initial fact might lead us into the trap of the next myth – cutting edge tools produce better results. Do they? As far as facts and figures run, Twitter, Yammer finally had to settle in Java as Reddit in Python and Yahoo Store in C++ and Perl.
This isn’t to nullify the importance of platforms when scalability becomes important but then it is also important to note that enterprises are switching to traditional mainstream platforms. The failure of the programming languge “Ada” developed by the U.S. defence is noteworthy. Selecting cutting edge tools never hampers. But do not buy the myth that it produces better results.
There was a time when the XOR swap algorithm used to give faster output but then today’s machine – the modern CPU favors other algorithms. Hence even a great coder hand-optimizing the code with a XOR swap algorithm would immediately fail to produce a fast code. Brooks had previously observed that some compilers produce output much faster than the handwritten code. The lesson to be rather learnt in terms of coding practices is to let the code be and rather work on the efficiency of the developer.
S.I. No. | Myth | Fact |
1 | Offshoring always produces cheaper and faster software | Offshoring when coupled with an effective training and proper interconnectedness produces better results |
2 | Good coders work long hours | Lack of foresight by the enterprise makes good coders work long hours |
3 | Great developers are 10 times more productive | Great developers are 10 times more productive than the worst developers |
4 | Cutting Edge tools produce better results | Cutting Edge tools doesn’t hinder better results |
5 | Great programmers write the fastest code | The machine dynamics rather affect the fastest code. |