What are some popular myths in software development? Why are they myths, and how did they become popular? Some of these are myths because they were once true, other because they are convenient distortions in order to promote an agenda, and some because they are naive over-simplifications. Do you agree with these opinions?
#1. I don't need to write comments, my code is self-documenting
Glyn Williams, Game Developer, CTO at Binary Planets Ltd (Crewe, Cheshire, England):
I find myself writing comments in order add more detail and improve things. I imagine my future-self looking at the code, and being puzzled. So I mainly write comments to assist my future self.
- Worst. Complex, opaque code without comments.
- Better. Complex, opaque code with comments (most real world programmers live here).
- Better. Simple, transparent code with comments.
Best. Code so hygenic that comments are utterly un-necessary.
‘You should use comments. Because most of us live in the first three categories. The fourth is aspirational.’
- Use comments when the intention of the code is not obvious.
- Use comments when how the execution proceeds is not obvious.
- Use comments when the context of when to call a method is not obvious.
- And not just short little crappy one-line comments either. Some of this stuff needs a paragraph of well-written English prose to describe.
#2. This code I'm inheriting is crap. I'll have to write it from scratch
Vladimir Ilievski, Artificial Intelligence Intern at Philip Morris International (Lausanne Area, Switzerland):
"This is the best comment in source code that I have ever encountered".
#3. This is just a temporary hack - I'll come back and fix it later
John Miller, Engineering manager at Microsoft (Greater Seattle Area, Washington):
"You’ll never ‘fix it later’ so do it right. The mistake I’ve made many times is throwing something together with the intention of fixing it before I ship. Then one fire after another springs up, and the code ships in hideous shape. Write it the right way the first time".
#4. Slow is bad (premature optimization is right)
Robert Zubek, Game Developer, Founder at SomaSim (Greater Chicago Area, Illinois):
"1. Optimization reduces flexibility. It's one of the classic tradeoffs of computer science: you can usually buy more speed by sacrificing space (memory, cache, etc) or generality (more task-specific system, etc). So it's a bad idea to do it too early, when you don't yet know which parts of the codebase need to remain general and extensible, and which can be hard-wired for specific use cases.
2. Optimization should be based on evidence, not speculation. In many non-trivial systems, you won't know which parts need the most speed-up, until you have a system running live in a production environment, under a real-world load. Especially when this is a novel system that you haven't built before, it's easy to make incorrect assumptions about what needs optimizing.
‘And this ties to the previous point - if you optimize for the wrong thing, you not only spent valuable time, but you also needlessly reduced future flexibility and extensibility.’
#5. I will be great programmer if I create great code
Mike Coutermarsh, Software Engineer at Product Hunt (San Francisco, California):
"Whether you solve a problem with a thousand lines of C or five lines of Ruby doesn’t really matter. As developers, we place a lot of value in how good we are at writing code. But that’s only a small piece of the puzzle. Your programming skills are very important. But all that time you spend on becoming a good developer can be magnified if you also learn how to create business value with your skills.
A lot of developers keep to themselves or stay secluded in the “engineering cave”. This limits your perspective.
For the first couple years of my career, I spent all my time at my desk coding. If I had to talk to someone in the business, I primarily used email. I seldomly talked to them in person or even picked up the phone. I ate lunch at my desk, just so I could write more code.
I thought I was doing great work. But in reality I wasn’t. My performance reviews were average and other developers were getting put on the best projects. Even though I was writing a lot of “great” code, my work wasn’t creating much value for the business. I spent too much time on small technical details instead of the big picture.
‘I was lucky to learn this from a mentor super early in my career: “Learn how to solve problems that make companies a lot of money”. Once I started spending time with Product, Marketing & Finance, my career began to take off as a developer.’
So, what’s the best way to be a great programmer?
- Get outside of the “engineering cave” and learn how business works.
- 80–20 rule is everything! Remember, you’re aiming for the biggest impact, with the least effort
- Leverage your technical skills to solve problems that provide huge value".
#6. Agile is a bullshit that does not work
Brian Knapp, Senior Software Engineer at Procore Technologies (Carpinteria, CA):
"Agile is about responding quickly to change. Actually I can write that better: "Agile is about contextual change". That is to say, the purpose of agile is to change quickly to meet the current context you are working in. That can be the market you are in and the demands of your customers. It also means you must change to effectively use the resources at your disposal.
In a truly agile world, nothing is sacred. You do what makes the most sense in your context to achieve whatever the goal is. You can never get to a perfect system. You can only change and get better within your context".
James Grenning, Software Consultant, one of the original authors of the Agile Manifesto:
"Engineers! With Agile the delivery cycle is fundamentally changed. Have you changed how you develop software? Are you a senior developer, programming the same way you did that first year out of school? Do you have 10 years experience, repeating the same Debug Later Cycle? Have you read any books on iterative development, Test-Driven Development, and Extreme Programming, Design? Have you read any books on development at all? Alas, few hands are raised. The cadence of delivery is changed, so must your practices change.
Why is there so much pressure in your two week iterations? “The stories we are told to do are so huge there is no way to get the work done with any quality. The PO says they are priority one. We have to do what the PO says, right? No documentation; no thought; just do it! That’s Agile! Right?” No, that’s not Agile, but that is a demoralizing way to work.
The way to get startup ideas is not to try to think of startup ideas. It's to look for problems, preferably problems you have yourself. Solving the problem that frustrates you - may be one of the best ways of finding an idea for your startup. Look at these software developers who acted accordingly before they found success.
Rate this article
Our Clients' Feedback
They use their knowledge and skills to program the product, and then completed a series of quality assurance tests. We were working in an agile way with them. Belitsoft performed very well throughout our project. We are definitely looking at Belitsoft as a long-term partner.
Service Delivery Director at Crimson (United Kingdom)
I highly recommend Belitsoft for website design and development. We were up against a tight deadline to launch the project. The work was delivered on time and within budget! I will continue working with Belitsoft as a valued partner for our web development!
Program Administrator at UC Berkeley (United States)
We have worked with Belitsoft team over the past few years on projects involving much customized programming work. They are knowledgeable and are able to complete tasks on schedule, meeting our technical requirements. We would recommend them to anyone who is in need of custom programming work.
Main Partner at Hathway Tech (United States)
Belitsoft company is able to make changes instantly. One of our internal engineers has commented about how clean their code is. Belitsoft seems to know what they're doing, which I appreciate.
Co-Founder at HOWCAST MEDIA (United States)
It was a great pleasure working with Belitsoft software development company. New requirements and adjustments were implemented fast and precisely. We can recommend Belitsoft and are looking forward to start a follow-up project.
Deputy Head of Division at Fraunhofer FIT (Germany)
Belitsoft company has been able to provide senior developers with the skills to support back end, native mobile and web applications. We continue today to augment our existing staff with great developers from Belitsoft.
CEO at Apollo Matrix (United States)
Belitsoft company delivered dedicated development team for our products, and technical specialists for our clients' custom development needs. We highly recommend to use this company if you want the same benefits.
Managing Director at Key2Know A/S in 2012 (Denmark)
We approached BelITsoft with a concept, and they were able to convert it into a multi-platform software solution. Their team members are skilled, agile and attached to their work, all of which paid dividends as our software grew in complexity.
COO at Regenerative Medicine LLC (United States)
Having worked with Belitsoft as a service provider, I must say that I'm very pleased with the company's policy. Belitsoft guarantees first-class service through efficient management, great expertise, and a systematic approach to business. I would strongly recommend Belitsoft's services to anyone wanting to get the right IT products in the right place at the right time.
CEO at Moblers (Israel)
If you are looking for a true partnership Belitsoft company might be the best choice for you. They have proven to be most reliable, polite and professional. The team managed to adapt to changing requirements and to provide me with best solutions. I strongly recommend Belisoft.
Director at ShowCast Limited (Germany)
I expected and demanded a lot of you at Belitsoft company, but you exceeded my expectations. You acted pro-actively, challenged me at the right moments. Thanks!"
CEO at Ticken B.V. (Netherlands)
We have been working for over 10 years and they have become our long-term technology partner. Any software development, programming, or design needs we have had, Belitsoft company has always been able to handle this for us.
СEO at ElearningForce International (United States/Denmark)
Belitsoft has been the driving force behind several of our software development projects within the last few years. This company demonstrates high professionalism in their work approach. They have continuously proved to be ready to go the extra mile. We are very happy with Belitsoft, and in a position to strongly recommend them for software development and support as a most reliable and fully transparent partner focused on long term business relationships.
Global Head of Commercial Development L&D at Technicolor