Is a well-written code useful to the company?

This is a common dilemma among IT staff: “Should I spend more time writing code, or should I simply get it done quickly?” Although everyone wants to take time to write code for every function, it is difficult to do so. The never-ending shortage of development time and pressure from the boss often forces IT staff to give up the pursuit in the quality of coding to produce new features/new products, finishing at a barely pass standard and pick-up the mess later. However, programmers are just human, and it’s hard to defy the law of “later means never”. You can not get both, and we generally opt for saving development time and cost.

Even though we know we should spend time in writing code better at the beginning, how can we convince ourselves, our bosses, and even our bosses to write better right from the start? What is the importance of quality coding? Martin Fowler recently wrote an article titled “Is High Quality Software Worth the Cost?” which provides us with a clear answer to the question on what software quality is really about in various aspects.

External quality and internal quality are the most important aspects of software quality.

Martin Fowler first distinguished between external and internal software quality. External quality refers to what is visible to the user, such as the UI and program flaws, while internal quality refers to what is difficult to distinguish between good and bad, such as the software architecture.

Nowadays, many companies focus on the UI and UX design, because it is easy for users to get frustrated, complain or even give up because it is not smooth to use! use. Of course, programmatic flaws should be avoided as much as possible, because they directly affect the user’s experience. Relatively speaking, the quality of the coding structure is hidden behind the fancy UI, and it is difficult for the user to know how well the software is coded. For example, Martin Fowler said that the UI of both software is equally good, and there are not too many programming flaws. The internal code is neat and orderly and sells for $10, while the other internal code is a mess and sells for $6. Since you can’t even see the internal code, and the code seems to work fine, who would pay $4 more for it? The former? Why do software companies have to spend resources on the internal quality of their software?

Internal quality and continuous software development

As a programmer, the most time-consuming task should be to process and modify code, even for new software development. You still need to write the source code based on the completed program. To add a new feature, you need to know how to fit the new feature into the flow of the original program, then change the existing flow and place the new feature into the source code. function. The programmer has to understand how the program is written because he/she usually comes across/uses the original code.

The problem arises when the internal quality of the original program is extremely poor, the logic is confusing, and the data is hard to follow. Understanding and using the original program. The difference between the program’s current state and its supposed state is what Martin Fowler calls the cruft, a kind of programmatic redundancy. He refers to another famous programmer, Ward Cunningham’s suggestion of cruft as a kind of Metaphorically, Technical Debt is a technical debt because when a programmer ignores internal for whatever reason. The resulting technical debt will cause all future programmers involved in the source code to spend more time on the process. These additional hours may be considered as interest on the technical debt.

Although users do not have direct access to the internal quality of the software, they do care about the time it takes to develop new features, which is directly related to the time it takes to develop the software. The impact on internal quality. As there is a large amount of technical debt, every new feature added will carry a corresponding interest rate, which means that the development time will increase and users will have to pay more for the new features. Waiting the same amount of time for new features to be available. In this case, software with less technical debt will release new features faster than software with more debt, and users are relatively likely to Switch to a similar software that is more expensive but has more features. A software with a lot of technical debt may be able to run quickly, but it often loses out on staying power.

Martin Fowler points out that even the best development teams inevitably incur technical debt, because the development process is often in a state of uncertainty, and developers only have a rough idea of what the software needs, and can only see steps, the later the fog will clear.

We made good decisions, but only now do we understand how we should have built it.

A successful development team will be able to build the platform by writing automated tests, reconfiguring the building, and building materials. refactoring), continuous integration. This means that the development time for new features can be reduced by actively eliminating sufficient redundancy. In this sense, software with high internal quality may have a higher initial development cost. In the long run, however, software with high internal quality will be cheaper to develop.

Therefore, you programmers should know how to explain the importance of software quality to your bosses, and your bosses should also know how to allocate their time and resources for software development, right?

We are ONEs Software Limited, a Hong Kong based software development company dedicated to the provision of the best software solutions tailor-made for your business with our expertise and professional technology. If you are interested in bringing new impetus into your business, or looking for software to support your business growth, or for inquiries, please feel free to contact us.

Tel: (+852) 5538 3410


Why you should develop your own software for your business now?

In today’s business world, software is an indispensable part of business operations. Deciding whether your business should buy off-the-shelf software or develop your own can be a difficult decision.

Do it yourself! Developing a software is relatively expensive, but off-the-shelf software is inflexible. But why do companies still develop their own software? This article will give you some insight by comparing off-the-shelf software and home-grown software in seven aspects.

1. Suitability:

The most important benefit of developing a set of software for enterprises, is that it is tailored by the developers according to your needs and requirements. It is the best way to meet your business needs. It is common for companies to purchase off-the-shelf software from a software vendor and soon discover that the software is simply not fit for their business, and businesses are often forced to use the unfit software just not to waste resources. With home-grown software, you can be sure that the software is tailored to your business needs during the time of software development. 

2. Scalability:

Home-grown software is more scalable than off-the-shelf packages. For home-grown software, the developer designs the software according to the basic operational and business logic of the business. The developer will be able to maintain and extend the functionality of the software as the business expands. However, for using off-the-shelf software, companies often encounter maintenance problems when part of their business needs change due to their changes in business scope. As the changes are not covered by the off-the-shelf  software, the business may end up needing to purchase another off-the-shelf software to remedy the situation. Home-grown business software can meet your business needs while allowing your business to continue growing without being bound by software limitations.

3. Security:

Home-grown software can help protect your business from external threats. Hackers to enterprise software mostly exploit known vulnerabilities in commonly used software. For hackers, home-grown enterprise software is not a vulnerable target because it takes relatively more time and effort in hacking. The software developer can tailor hacker protection for the business, making it much more secure than off-the-shelf software.

4. Enterprise productivity:

Using the right software can have a huge positive impact on productivity. Self-developed enterprise software can simplify the operations according to the enterprise’s operation mode to increase enterprise productivity. Developers can also tailor the job analysis reports to display the work performance graphically based on the data. The management team will have a clear understanding of the company’s operations. In this sense, you can set the direction for your business more efficiently.

There are only a few off-the-shelf software that can share data easily, and since off-the-shelf software isn’t tailored to your business operations, you will not be able to share your data more efficiently. This may result in a decrease in the overall productivity as employees have to adapt using the software. For off-the-shelf software to analyse the work data, they often need to integrate data from different softwares, which may be more prone to errors and not able to get the job done effectively. While self-developed enterprise software can avoid this kind of integration problems because it is designed to fit in your business operations.

5. Maintenance efficiency:

Self-developed enterprise software can be properly maintained as required. When using off-the-shelf software, a business customer is only one of those thousand customers using the software, the software developer can only provide limited support for each case. As the initiative of supporting software fixes is taken by the software developer, as a business customer, you have no control on the problems you encountered and finding a way to fix them. Software developers take the control and you could only depend on them providing the fixes. If the software developer decided not to maintain the software, there is a chance your business may need to source and replace the software immediately, and costs your business additional time, effort and money. There is also a chance that there will be a window of time when the software does not work properly. 

There is no doubt that self-developed enterprise software has the leading edge in maintenance, software development companies provide one-to-one maintenance services for their customers. You can be sure that your business and fixes you need is properly taken care of with prompt and tailored maintenance services.

6. Additional costs:

Home-grown enterprise software can help you save money on hardware purchases. Off-the-shelf software often has specific hardware requirements, which means that your business may need to purchase additional hardware to run the software effectively. Home-grown enterprise software works the opposite way, the software can be programmed to work with the existing hardware and functionality in your business, saving your money from procuring additional hardware just to meet the compatibility requirement in running the off-the-shelf software.

7. Intellectual Property:

The intellectual property of self-developed enterprise software can be fully owned by the enterprise. With home-grown software, there is no need to work with any particular vendor, as you are the legal owner of the product. For off-the-shelf software, you will be required to pay a recurring fee for each user license to obtain access to the software.


Self-developed enterprise software may seem to be more expensive than off-the-shelf software on the surface, however when considering the additional cost in hardware procurement, or the risk of software developers stop providing maintenance for the software, self-developed enterprise software is definitely a more secured and wise choice for enterprise customers. 

It is also worth noting that, for self-developed software, software development and maintenance can be carried out in phase according to the development of the enterprise in terms of scalability. In general, self-developed enterprise software can provide a solid software foundation for your business and support the continued software needs during your growth.

Tel: (+852) 5538 3410



Photo by Austin Distel on Unsplash

Code 寫得好對公司有用嗎?」這一篇我們談到Martin Fowler如何分析軟件質素和開發時間的兩難,這次就讓我們看看Robert C. Martin 在其近作《Clean Architecture: A Craftsman’s Guide to Software Structure and Design》對於軟件開發時,軟件工程師所面對的難題。

還原基本步,軟件本身究竟對於軟件的持份者有何價值?Robert C. Martin認為主要有兩種:行為價值(Behavior)和結構價值(Structure)。

行為價值,意思即是軟件本身的用途。首先軟件會被設計成使得某個機器以指定的方式運作,並因而可以幫助開發方創造或提高利潤。而軟件工程師則是負責幫助系統的使用者建立一套對於這個軟件系統的功能定義(functional specification),或者是其需求文檔(requirements document),然後編寫相應的程式使得機器能夠符合這些要求、定義。而當程式的運作不符要求,軟件工程師就要負責除錯,並解決問題。




對於軟件的持份者來說,他們所提出的一系列改變的範圍都是大概類似的。但在軟件工程師來說,處理持份者的改變就如要持續將一堆拼圖塊,拼到同一個愈變複雜的拼圖裏。Robert C. Martin比喻為將方形的螺絲擰進圓形的螺絲孔裏,因為現有的系統的「形狀」(shape)不會和要求的「形狀」相同。





如果問一個業務部經理,答案自不然是前者,並認為現時的功能比起往後的靈活度重要,而不少開發者亦會跟隨這種說法。不過,Robert C. Martin認為後者比前者來得重要,他舉例說:

  1. 如果一個程式能夠正常運作,但完全無法改變的話,那麼當需求改變,程式就不能夠運作,而開發者亦無從將之改變。程式就等同垃圾。
  2. 如果一個程式目前未能正常運作,但容易改變的話,開發者就能使其運作正常,便可以隨著需求改變加以修改。程式就能夠持續有用。



The Eisenhower Matrix

Robert C. Martin 提到一個分析難題的方法: The Eisenhower Matrix。

難題通常有兩種,緊急的和重要的。通常緊急的都不特別重要,而重要的都不特別緊急。而系統的功能就是前者,而系統的架構就落入後者。而在The Eisenhower Matrix裡頭,就分為四種:

  1. 緊急而重要的;
  2. 不緊急但重要的;
  3. 緊急但不重要的;
  4. 不緊急又不重要的;


Robert C. Martin指出,分析事情重不重要,責任不在業務部門,因為他們沒有能力去分別。所以開發者為了公司長遠利益,應該有責任去指出事情的優次為何,而和各部門的作出持續掙扎,其他的部門亦應如此。


Tel: (+852) 5538 3410

更多資訊可以留意 ONES Publication 定期發佈的文章,亦可以聯絡我們,我們的網址是:



Photo by manny PANTOJA on Unsplash



1. 缺乏互相接觸,難以獨自處理工作


2. 無法掌握工作時間,導致壓力過大


3. 疏離感大增


4. 工作環境周圍的騷擾


Photo by kyryll ushakov on Unsplash


1. 訂定針對遠端工作的模式



2. 提供有效的線上通信軟件

僅僅只是利用電子郵件溝通是遠遠不夠的,近來各種針對視像會議的通信軟件一炮而紅,例如 Slack, Zoom, Microsoft Teams等等。這些軟件可以提供許多很多面對面對話的機會,尤其是針於較小的工作團體。視像會議能夠增加各自在家的同事互相了解之餘,也有助於減少員工因為遠端工作而產生的孤獨感。


3. 增加員工社交機會,加強精神支援與鼓勵





如何能夠將辦公室數碼化,迎接數碼時代的來臨?可以了解一下 Bookings ONE如何能夠提供嶄新的智能辦公室體驗。不論是管理層還是員工的需求,都能一一滿足。


電話號碼: (+852) 5538 3410
Contact us:
Email address:
Phone number: (+852) 5538 3410

更多資訊可以留意 ONES Publication 定期發佈的文章,亦可以聯絡我們,我們的網址是:



Photo by Brooke Cagle on Unsplash





設施使用的數據不僅在工作空間使用初期有所幫助,亦能理解員工的日常行為和工作流程。 收集會議室使用率的數據,可以幫助企業以確保員工能夠充分利用所提供的空間,並在設施上進行相應的修改。 這不僅可以提高員工的工作體驗,還可以確保企業盡量將設施用得其所。

哪些日子最多人使用某些設施? 哪些工作空間過於繁忙? 而哪些工作空間沒員工肯利用?這些問題都能輕易用數據回答,省卻以往要處理大量的文書工作。


Photo by Scott Webb on Unsplash




配合圖像化的數據分析,亦能為企業管理者理解各個時段的會議室使用率、各人的使用時間、 因失約導致房間空置的次數等等,從而讓企業更了解公司會議室有否被充分利用,並更有效運用、分配公司的空間資源,為員工提供更合適的工作環境。



電話號碼: (+852) 5538 3410
Contact us:
Email address:
Phone number: (+852) 5538 3410



Photo by bantersnaps on Unsplash

金融時報最近一篇關於共享工作空間的文章:《The dark side of hip office design》,提到現存的共享辦公室的確提供各類型的設施,例如開放的工作空間、遊戲機、小食區,提供遊戲、小食、啤酒、咖啡等等,給予員工一個寓工作於娛樂的環境。但不少在這些地方工作的人反映,這些設施反而令他們無法好好工作:



「本來應該是未來的工作模式,但對我來說卻是反工作。 。 。我不得不將自己關進電話室裡頭,才能完成工作。」

比起純粹提供遊樂設施,使得工作空間更為方便,反而較有效提升工作效率,又能使得員工能夠有一個更舒適的工作空間,而智能辦公室 (Smart Office)自然是其中一個選擇。而要將一個普通的辦公室智能化並不難,通常企業會配備以下的常用設施:

  1. IoT裝置
  2. 智能會議室(Smart Conference Room)
  3. 智能辦公桌(Smart Desk)
  4. 室內地圖(Indoor Map)


Photo by BENCE BOROS on Unsplash

IoT,即是物聯網 (Internet of Things),主要是指將所有物品通過RFID、紅外線等信息感測設備,與互聯網連結起來,實現智能化的識別和管理。套用在辦公室的話,就是把所有辦公室常用裝置,如燈光、音響、門鎖等等連結起來。IoT可以將各種辦公室裝置所提供的數據,集中在同一個平台上,員工就能夠透過整合好的數據進行分析,亦可以在平台上直接控制各個裝置,提升能源效益之餘,亦能減省管理成本。



只要安裝好電子標牌在會議室的門前,或者是辦公桌上面,利用相對應的預約系統,就能夠輕易即時預約之餘,又能在不同平台、界面上處理會議排程,毋須每一次都要透過電話或人手去處理預約。管理者亦能同時透過系統得知過往工作空間的使用量,從而作出資源分配, 節約能源

這些系統通常亦能結合IoT裝置的使用, 如調整會議室的照明和溫度,將管理系統一體化, 簡化一些行政流程,從而達致工作效率的大幅提升。


地圖是我們日常生活的重要組成部分。 實際上,我們大多數人甚至都沒有意識到我們正在使用它。例如在機場或購物商場中,地圖在我們的用戶體驗中都發揮著重要作用,幫助我們導航到應到之處。





如何能夠令到辦公室煥然一新,迎接數碼時代的來臨?可以了解一下 Bookings ONE如何能夠提供嶄新的智能辦公室體驗。不論是管理層還是員工的需求,都能一一滿足,提升公司形象之餘,員工整體工作效率亦會大幅提高。

電話號碼: (+852) 5538 3410
Contact us:
Email address:
Phone number: (+852) 5538 3410

更多資訊可以留意 ONES Publication 定期發佈的文章,亦可以聯絡我們,我們的網址是:



tl;dr, 沒有測試談不上好軟件!

Photo by Adam Wilson on Unsplash

軟件編碼的質素和一間公司發展的關係,在之前的文章《Code 寫得好對公司有用嗎?》已有討論,那麼有什麼因素會左右編碼的質素?其中一樣就是軟件測試。

軟件測試(Software testing),指的是透過測試以作鑑定軟件的品質,及早找出軟件中的程式錯漏,並驗證軟件是否適合使用。軟件測試主要以運行軟件的某部分元件,評估該部分是否正常運作或合乎一些基本標準,如:

- 符合軟件設計及開發要求;
- 正確地回應各類型的輸入;
- 在可接受的時間內執行所需功能;
- 軟件功能可使用度高;
- 可以在預期的環境中安裝和運行;
- 可以達到持份者期望的總體結果;


不少軟件公司都會聘請專責品質保證 (Quality Assurance,縮寫為 QA) 的員工,在軟件推出之前進行一系列的人手測試。不過,這種比較傳統的測試方法往往有不少問題。



近年DevOps的出現,就嘗試解決QA的工序冗長問題。在DevOps的環境下,開發人員 (Dev)、技術運營(Ops)和品質保證並非各自運行,而是傾向在每一次程式發布都有緊密合作。DevOps 希望藉著採用敏捷(Agile)般的開發方式,減少每一次編碼的變更範圍,使得每次部署不會對軟件生產系統造成巨大影響,軟件得以平滑的速率逐漸生長。開發人員亦使用各種自動化的測試,配合持續交付( Continuous delivery,縮寫為 CD)和持續整合( Continuous integration,縮寫為 CI),確保軟件本身不受編碼改動影響之餘,亦能將QA繁瑣重複的工作分攤, 減少每次部署出錯。



  1. 單元測試 Unit test,是針對軟件組成的元件進行測試,其目的在於檢驗軟件基本組成單位是否正常運作。
  2. 整合測試 Integration test,是將程式模組採用適當的整合組裝,並對系統的介面及整合後的功能進行測試,其目的在於檢查軟件單位之間的介面是否運作正常。
  3. 功能測試 Functional test,是針對軟件功能進行測試,其目的在於檢驗軟件是否正常運作,並是否實現業務上的要求。




  1. 當軟件進行開發時,測試主要為了配合開發人員工作,盡快從系統得到回饋,所以多以單元測試為主;
  2. 在預備環境,這階段主要偵測問題,如問題發生,則停止軟件部署。通常所有測試皆符合此階段;
  3. 在生產環境,主要會運行如冒煙測試(smoke test)等比較快速的功能測試,在有限的時間內廣泛涵蓋測試軟件的主要功能。


我們 ONEs Software 是一家香港的軟件開發公司,致力於通過我們專業的技術,為企業設計出最合適的軟件。如果您有興趣,歡迎與我們聯繫一起探討,為您的企業成長注入新的源動力。 更多資訊可以留意 ONES Publication 定期發佈的文章,亦可以聯絡我們,我們的網址是:

ONES Publication
We share what we have learned about app and web development. Find us in Email:


How DevOps is Killing QA