FinalReport Exemplar 1
FinalReport Exemplar 1
Submitted for review on 23/10/2017. Student Name is a student in the Master of Information Technology
program in the University of Auckland. Private Bag 92019 Auckland 1142
New Zealand (e-mail: xxxxxx@[Link]).
2
acquires the ability to perform a given task by studying of these algorithms can be used in the setting of the civil
examples from a training set. Based on the knowledge extracted construction industry to conduct activity recognition and
from historical data the machine can then work with new data productivity estimation. This strategy of machine learning is
to perform the same task. More formally, machine learning is best suited with situation when there is some existing
a study concerned with the design and development of knowledge about the problem domain. In the case of heavy
algorithms that allow computers to develop behaviors based on machinery activity recognition, we already know that the
empirical data [1]. machine is always in one of several predefined states such as
Machine learning tasks tend to require a large amount of both moving, working, or idling, and that we are generally only
input data and computing power. In the age of big data, cloud interested in differentiating these states from each other. A
computing, internet of things and ubiquitous mobile devices the supervised machine learning strategy seems to be a good fit for
two constraints that limit the performance of machine learning the task at hand.
are rapidly being lifted. Machine learning is being applied to a
wide range of contexts for tasks that varies greatly in nature. b) Unsupervised learning
Closely pertaining to our study is the capability of machine
Unsupervised learning on the other hand, can deal with
learning to analyze images and video streams to identify objects
problem inputs that has no solutions to accompany them. The
and movements, to recognize patterns in sensor collected data
computer system is required to come up with solutions on its
to attain context awareness, and to perform multisensory fusion
own. The system is tasked with identifying underlying patterns
so that input from heterogeneous sensor types can be processed
instead of formulating rules that connect a set of problems to
together to complement each other.
their solutions. It is evident here that unsupervised learning has
Broadly speaking, there are two strategies in machine
the strength of operating in problem domains that we know little
learning. Namely, supervised learning and unsupervised
about, and can often help us to uncover previously obscured
learning [2].
insights.
Algorithms in the unsupervised learning family feature
a) Supervised learning
clustering algorithms and dimensionality reductions
In supervised learning, the system is given a set of problems algorithms. Clustering algorithms take a data set and group the
and their answers and the system is trained so that it can provide instances of the input into clusters. For clustering, there are
an answer for problems that it has not encountered before but many algorithms that operate with different principles. One of
similar to those it was trained with. A big family of algorithms the most popular algorithms is the k-means clustering
that are categorized as supervised learning algorithms are the algorithm. This algorithm works by breaking the data set into
classification algorithms. These algorithms need to be trained groups which are formally called clusters. For each of the
with data set which consists of input cases annotated with a groups, an instance with its values representing the mean of all
class. The system goes over all the cases contained in the the data points in the group is calculated. When a new instance
training data set and builds a classification model. Once the of data is fed to the algorithm, it will be compared to each of
model is built, the algorithm can be used to classify new data, the means of the groups and placed inside the cluster with the
or data that it has not seen before. For instance, the input might mean closest to it.
be the profile of car owners who wants to insure their cars, the Dimensionality reduction algorithms take input with many
characteristics of the cars to be insured, together with the risk attributes and project them onto spaces of fewer dimensions
categories associated with them. An insurance company can while preserving the fundamental characteristics of the input
utilize a supervised learning algorithm to predict the risk data. Examples of algorithms in this family include principal
category of future insurance purchasers and adjust the rate component analysis, tensor reduction and multi-dimensional
according to the prediction. statistics.
Supervised learning algorithms include classification trees, 2) Computer vision
support vector machines, artificial neural networks, random Hardware components of computer vision systems are
forests, and logic regressions. Classification trees, or decision getting increasingly more affordable. High resolution cameras
trees is an algorithm that builds a tree like model, with rules at and large volume data storage devices are much cheaper than
each node regarding one attribute of the data instance. The they were a few years ago. This, along with the introduction of
instance will travel through the tree, be assessed at each of the internet connection such as 4G or Wi-Fi at the job sites makes
branching nodes and arrive at a leaf node which represent the it possible to remotely analyze the activities using streamed
label or class that the instance will fall in. video. For the activity recognition to be automated, a machine
The support vector machine algorithm works by plotting learning algorithm needs to be applied on the captured data to
each data instance as a point in an n-dimensional space with train a classification model, which represents the computer’s
each attribute of the data transformed into the coordinate of the knowledge about the operation activities. Gong and Caldas[3]
point in the corresponding dimension. Hyperplanes that can be did some pioneer work which utilized unsupervised machine
used to differentiate the classes are then identified. These learning, which refers to building models without supplying
hyperplanes are then used to place new data instances into the predefined labels. But Golparvar-fard et al. argues that the
appropriate classes. complex nature of job sites makes it hard to obtain sufficient
As we will see in the following sections of this report, many accuracy from unsupervised learning, and that supervised
3
learning can produce significantly better results[4]. Another acceleration. A gyroscope is a device used to measure or
previous work was done to differentiate machine idle time and maintain orientation. When combined, these two types of
working time of a hydraulic excavators by processing images sensors can accurately report the motion undergone by the
taken of it [5], but the results from such method is too coarse object monitored. The movement pattern can then be analyzed
grained and can only provide limited value. to reveal insights about the object of interest. Research on
Golparvar-fard et al. [4] proposes the following system utilizing output of accelerometer and gyroscope has produced
architecture for the automated tracking of heavy equipment many applications.
activities. First, a network of cameras is installed around the In one study, the combination of the two sensor systems
whole job site, and the video stream captured by these cameras allowed the development of a system to analyze and categorize
are processed to obtain the equipment’s location and the behavior of drivers of industrial vehicles to improve safety
activities being carried out. To extract the information from the measures [11]. Other studies used wearable devices like smart
captured data, a large volume of training data is collected and watches or smart phones to conduct activity recognition on the
manually labeled. A complex process of feature selection and construction sites [12], [13]. However, it is recognized that the
data transformation follows to improve the classification application of context sensing technology in the construction
model. The system achieves accuracy rate of as high as 98.33% industry is extremely limited, as construction sites are highly
for the loading and dumping actions performed by trucks, unstructured, prone to be affected by weather condition,
which is promising as a strategy of performing load counting. mechanical breakdown of machines and human errors [14].
3) Geological information systems Despite these hindrances, a study explored the possibility of
using the built in sensors of smartphones to classify equipment
a) GPS activities in the construction industry [15]. Smartphones are
Global Positioning System (GPS) allows the determination powerful devices for this purpose as they provide the capability
of the three-dimensional position of an object by triangulating to collect data using the accelerometer and gyroscope meter, a
using multiple satellites. The recent development in the GPS platform to perform real time processing of data, and the
technology has made GPS devices more performant and less capability of relaying the data to a remote server.
expensive. GPS trackers equipped with GSM communication
capability can now report their accurate position in real time, b) Microphone
and with a high frequency. This makes them ideal for the usage Construction machineries produce distinct sound patterns
of asset tracking. when performing different tasks. For example, when trucks are
GPS technology has been used in various ways to assist in unloading, the hydraulic arms tend to make a noise that is absent
civil constructions projects. A GPS enhanced road construction when the truck is not performing that action. Motor scrapers
system was developed by Jaroslaw and Karl which can also generate a recognizable sound when scraping dirt or
automatically identify and reduce errors in the operation of unloading.
compactors [6]. Another system was developed by John et al to To take advantage of these characteristics, a study used
prevent collision between heavy equipment by tracking their commercially available sound collectors to gather audio data
location using GPS [7]. produced on a construction site [16]. The researchers used
support vector machine technique to generate a model in order
b) RFID to classify audio patterns. However, the processing was only
RFID refers to radio frequency identification. It is a able to classify acoustic patterns from a single machine. It is not
technology which allows data to be communicated by sending able to handle the sound produced by multiple machines, which
and receiving electromagnetic waves. RFID tags are light limits its application.
weight devices that carry built in transponders, capable of
B. Discussion on existing technology
sending out a predefined message when brought close to a
RFID reader. This message can be processed to obtain the While each of the different ways of automating the load
unique ID associated with the tag. When attached to another counting process seem viable, there are shortcomings to some
valuable object, RFID tags can be used for asset tracking [8], of the solutions that make them less appealing than others. We
[9]. need to evaluate these technology in terms of cost and
In the literature, many usages of RFID in the construction performance.
industry had been identified. These studies primarily focused For computer vision related solutions, cameras need to be set
on asset tracking and progress monitoring. For example, a RFID up around the job site. For earth moving projects, the job site
gate system was developed by Lee et al which can be used to can be very large, and the number of cameras required as well
manage the logistics on construction sites. By fixing RFID tags as the installation costs can be prohibitive. Furthermore,
on assets and readers at gates of the sites, accurate and real time cameras are easily blocked by dirt and rendered useless.
information of the asset whereabouts can be obtained.[10] Solutions that take advantage of the sensors in the smart
4) Other sensor systems phones carry significant risk, as there is little research to prove
the viability and performance of such systems when installed
a) Gyroscope and accelerometer on trucks. Furthermore, a variety of machines are used in the
An accelerometer is a sensor that detects and measures earth moving operations and there can be several models of
4
each type of machines. A universal classification model that can possibilities of changes well, and that an alternative approach
identify the activity of each of them is unlikely to be obtainable. to software development is sought after by practitioners and
If we choose to build models for each model of the machines, researchers alike.
the cost of data collection and administrating the models can 2) Agile model
quickly outweigh the potential benefits. To overcome the limitations of the waterfall model, the agile
While solutions utilizing other technology are excluded, a development methodology is developed. In contrast to the
geographical information system still carry great potential. waterfall model, instead of going through the stages of
RFID tags can be cheap, but the signal receivers represent a development lifecycle only once, agile methodology allows
significant investment. In addition, implementing the RFID revisiting of previous phases over and over. The idea behind
system will introduce dramatic change to the current operation, this approach is termed “incremental and iterative
which will surely be poorly received. development” [18]. For instance, unlike waterfall model in
In contrast, a system which utilize GPS trackers seems to be which requirement gathering is only conducted once, in the
a better fit for the job. This solution is made even more agile model the development lifecycle is divided into smaller
attractive by the fact that Dempsey Wood is installing GPS and shorter cycles called iterations and in each iteration the
trackers on the machines for fleet tracking and management, activity of requirement analysis and design is performed. This
which means that there will be no additional initial investment. allows new requirements and changes to old requirements to be
As a result of the analysis, it appears that implementing an captured and formulated into the development of the product.
application to conduct load counting by taking advantage of To make the processes efficient, agile methods place emphasis
GPS tracking technology is our best choice. on productivity and value to the customer. To realize the
C. Project management maximum benefits from this approach, some recommended
No matter which type of technology is used in the product best practices needs to be adopted to ensure high quality of the
delivered to the customer, a proper project management process software product despite frequent changes in requirements. For
needs to be selected and implemented to efficiently plan, example, test-driven development in which tests are written
execute, and evaluate the project. Since we are essentially before the business logic.
carrying out a software development project, it is fundamental The waterfall model has many advantages to be used for the
that a software development methodology that is best suited for internship project. It is straight forward and requires the least
the project is picked. effort and resources to implement. It will allow comprehensive
There are two general approaches to the lifecycle documentation to be produced. To some extent, it will also help
management of software development, namely the waterfall the project to be completed within the 10 weeks’ time limit.
model and the agile model [17]. In practice projects tend to lean However, upon further analysis of the project, we have decided
towards one of the two approaches, but will always embody that an agile method is better suited for the unique challenges
some of the principle and processes from both models. While presented. The project is of an exploratory nature and that it is
which one of them provides the most benefits to software next to impossible to arrive on a set of exhaustive requirements
development projects is a highly debated topic, it is important at the beginning of it. Therefore, it is essential that the project
to recognize that the general trends indicate that projects with can accommodate requirements discovered in later phases.
different characteristics will be best suited to use different Furthermore, delivering the finished product only at the end of
managerial styles and that it is fundamental to evaluate projects the internship presents a significant risk that the customers
before deciding on which approach to adopt. might find aspects of the product deviating from their
1) Waterfall model expectation. Using an agile approach, a working product is
Waterfall model is a sequential model in which a project goes presented to the customers at the end of each of the iterative
through a pipeline of predefined processes, such as requirement cycles to ensure customer satisfaction. In addition, the agile
analysis and design, system implementation and integration, model encourages communication between the developers and
testing, deployment, and maintenance. In such a model, later the customers so that there is less chance for misunderstanding
stages often depend on the output of earlier stages. This is the about the requirements.
most well-known approach and arguably the easiest to The agile methodology is not without its challenges though.
implement. However, this model makes some rigid assumption For instance, it is difficult to gauge the time and efforts required
about the nature of the project. For example, it is necessary that for the project to complete, and therefore it is also difficult to
all requirements are gathered at the beginning of the project evaluate the performance and progress of it. This can be
before the design phase can begin. The system requirement alleviated by frequent and effective communication between
specifications and functional designs are then frozen so that the the customer and the development team. The increased
system can be built exactly as planned. In many situations, the transparency allows the customer to be aware of the work done
business environment can be volatile and the technology by the team, and the team to deliver product and features that is
landscape can change, resulting in the need to change the of the most value to the customer, thereby maximizing
requirements half way through the execution of the project, and customer satisfaction.
despite the best effort of project managers only 9% to 16% of
all projects are completed on time and within budget [18]. This III. PROJECT EXECUTION:
indicates that the waterfall model does not accommodate these By the end of the project, two different ideas were
5
implemented. of existing geofences are also allowed to reflect the fact that the
A. Geographic information system TABLE I
The first solution implemented is a geographic information
USER STORIES FOR GIS
system packaged as a web application. The intended function
of the application is to allow the project managers and engineers Completed user stories
of the company to obtain load count information based on the
GPS tracks of the equipment. A list of requirements gathered as 1. As a manager, I can view the gps tracks of machines on a
map so that I can observe their movement pattern.
user stories can be found in table 1. 2. As a manager, I can define loading and unloading zones on
a map by drawing polygons so that load count can be
conducted.
After login, the system first shows a map of the project site 3. As a manager, I can update or delete geofences to keep the
information up to date with the project progress.
to the user. A screenshot of the interface is shown in figure 1. 4. As a manager, I can retrieve load count report so that I can
As Dempsey Wood is in the process of installing GPS trackers keep track of project progress.
on their heavy equipment, we are able to obtain GPS tracks of 5. Expose an API to allow mobile clients to post their status
the machines. The tracks are overlaid on the map as red lines. update to the webserver.
The user can then define geofences on the map by drawing
polygons on the map using the built-in utility. Each geofence Planned user stories
defined represents a loading or unloading zone in the project,
1. As a manager, I need to configure the vehicle details so that
associated with a material type. The system can then calculate
they are up to date.
the number of loads completed by counting the number of the 2. As a manager, I need to configure the tasks so that they can
trips made by a machine from a loading area to a corresponding be better matched to schedule items.
unloading area. 3. As a manager, I need to assign or remove vehicles from my
project so that I can start monitor them or stop monitoring
A set of core features were developed to allow the users to
them.
interact with the system with ease. An access control system is 4. As a manager, I need to view load count records by time
put into place to authenticate the users. After login, users will periods.
only be presented data related to their own project. Two date 5. As a manager, I need to view the live updates of machine
activities on a dashboard to gain an overview of the jobsite.
form control is added to the interface so that users can specify
6. Color the tracks of different vehicles on the map.
a date range for which the data is pulled. Editing and deleting
Figure 1 Screenshot of the interface of the geographic information system. The red lines represent the overlaid GPS tracks of equipment, and
the polygons represent the loading and dumping zones defined by project managers.
6
implemented to allow the program to recover to previous states server, cacheable communication protocol which is the HTTP
in the event of app crash, phone restart and network failure. protocol in most of the cases. It is an architecture style for
Furthermore, the app can query the backend server to retrieve designing networked applications.
a list of active vehicles available for the user to select. This is Under such an architecture, the client holds all the state
done through consuming a RESTful service exposed by the information while the communication is stateless. The web
backend server. service allows the client to access resources stored on the server
After a full day’s operation, the backend server will compile through http requests. This ensures that the client and the server
all the status update received from the apps, and generate a becomes decoupled, and that each component can be changed
report detailing the operation of each of the equipment. independently as long as the web service end point stays the
Additional information such as the cost of the machine and the same. This property is crucial to the project as it allows changes
revenue generated are also included. They are used to assist to be made to the client without having to make changes to the
project managers to review project progress and to adjust plans server at the same time.
and projections. Developing the web service with a RESTful design model
also means that the communication can utilize the full capacity
of the HTTP protocol, making development and maintenance
of the API much easier. Under the RESTful design architecture,
the API becomes clearer and easier to discover.
IV. REFLECTIONS
A. Knowledge applied in the internship
In this project, I found that the courses that I took on agile
development methodology, project management and machine
learning to be extremely useful.
1) Agile development methodology
Due to the exploratory nature of the project, we adopted the
agile development methodology as the overarching project
Figure 4 Screenshot of interface for operators to select the material of management framework.
the current load Agile development captures the essence of several different
iterative and incremental software development methodologies.
C. Design Decisions It is a set of values that guide project teams to achieve results. I
1) Adopting Spring framework attempted to enact each one of the following principles of agile
The web server component of the application is developed development:
using the Spring framework. For Java applications, there are
many frameworks that can be used to improve development a) Individuals and interactions over processes and tools
productivity as well as overall quality of the product. Compared In agile development, the importance of good
to other frameworks, Spring provides excellent support for communication and empowered individuals is fully recognized.
enterprise applications. This is achieved by provisioning the Instead of emphasizing on the use of tools or adherence to strict
infrastructure that is common to most Java enterprise processes and procedures, the focus is on allowing project team
applications such as database access, email service and so on so members to collaborate. In accordance to this principle, I had a
that the developers can focus on building the business logic. desk located close to the desk of my manager, and we had daily
Spring also provides a dependency injection container. This discussions on the progress of the project, possible ways to go
container makes it easier to write code that is loosely coupled, about an implementation, and the problems we were facing in
so that code maintainability is enhanced. It also makes testing the development. Whenever I have anything to clarify with my
easier, which is crucial to writing quality software. supervisor, I could go directly to him. The daily communication
To take full advantage of the Spring framework, this project allowed us to build a great working relationship, as well as the
also utilizes SpringBoot. SpringBoot is built on top of the capability to convey our ideas to each other effectively.
Spring framework to helps with the configuration of Spring Whenever possible, we tried to get the product owner to look
projects. It allows an application to be developed with at the progress we made so far and had him provide feedback
minimum initial setup. on it. The frequent feedback allowed us to rapidly test out ideas
The adoption of Spring framework and SpringBoot allowed and change directions when needed. It also allowed the product
the internship project to be developed as fast possible while owner to fully participate in the development process and to
retaining flexibility and extensibility. stay updated with the state of the project.
2) Restful API
The mobile client is designed to communicate with the web b) Working software over excessive documentation
server via a RESTful web service. REST stands for Agile methodology promotes the importance of having
Representational State Transfer. It relies on a stateless, client- working software that can be presented to clients, as opposed to
8
design. The new design was well received by the end users,
which confirmed the importance of responding to changing
requirements.
Application of the agile development methodology and
adoption of the iterative development approach allowed an
evolving product to be built, that can be demonstrated to the
stakeholders even when it’s not fully completed. This allowed
the product to adapt to changing requirements rapidly and be
evaluated frequently.
Figure 5 shows the Kanban system that we adopted from the
agile methodology. The basic idea is that we write down tasks
on cards and put them into different groups based on their
status. And we move the cards around when the status changes.
This practice allowed us to easily visualize the
We had short but frequent meetings with the product owner
to evaluate application built, identify problems and to generate
ideas for future development. We utilize the Kanban in these
meetings as a mean to document the discussion results. In this
way the Kanban also helped us to have more effective
communication.
2) Stakeholder engagement
Project management courses and agile development
methodology both stress the importance of stakeholder
involvement throughout the project. Actively involving
Figure 5 Photo of the Kanban system used in the project stakeholders in the decision-making process helps to cultivate a
sense of transparency and trust. Ultimately, it allows us to
having verbose documentations for the clients to review. We
receive the stakeholders’ support, which is fundamental to the
took this idea to heart, and when we made the decision to success of a project. I kept these principles in mind before
implement a design, the first thing to do was to make a
project started, and planned to actively involve the product
prototype of it. Whenever the project manager was with us, we
owner as well as the end users during the execution of the
showed him exactly how the software was working so he could internship project. I planned to have meetings with the product
make suggestions on ways to improve it.
owner at least weekly to demonstrate the project progress and
gather feedback. This worked well and allowed the product to
c) Customer collaboration over contract negotiation
be evaluated in a timely manner. Unintuitive designs and false
For many software development projects, a set of assumptions about the existing process were corrected early.
requirement documents is defined at the beginning. However, Testing the user interface in the field, the machine operators
in projects like the one we worked on, it is impossible to collect were able to make sense of the UI quickly. They also provided
all the requirements. It was impossible to even have a full feedback on additional features and functionalities that were
system architecture design. To overcome this challenging desired. This indicates that the interface was well designed and
situation, we continuously and actively engaged both the the end users supported the further development of the project.
product owner and the end users of the software. The 3) Machine learning
requirements were later discovered in an incremental manner, Knowledge about machine learning helped me a lot with the
by constantly seeking feedback and generating new ideas research on the latest technology. In the literature, using
together with the product owner. machine learning for automation is a very popular topic.
Without the foundation knowledge on machine learning, I
d) Responding to changes would not be able to understand the papers or evaluate the
Changes are inevitable in a software development project. It possible solutions that are based on artificial intelligence and
can come from many different sources, including fluctuations machine learning.
in the market or business environment. Agile development Equipped with the basics of machine learning techniques, I
methodology asks the project team to be mentally prepared for was able to quickly review the literature to identify possible
changes, and always be ready to make quick responses. In our solutions to the problem of automated load counting. I
project, we initially developed a drag and drop interface with evaluated a number of possible solutions based different
substantial time investment, but later discovered a more user- techniques. This allowed us to better assess the potential of our
friendly way for the heavy equipment operators to interact with project.
the application. Instead of clinging on to the old design, we
quickly developed another interface, implementing the new
9
B. Lessons learned from the project problem for a few days. The solution seemed very close to me
There are a few areas in which I could have performed better, yet I could not get it right. I tried to solve the problem on my
and the internship helped me uncover these potential ways for own instead of seeking help from my mentor. Eventually I went
future personal growth. to discuss the problem with my mentor, who gave me lots of
1) Violating “you aren’t gonna need it” principle of help and made the problem much clearer to me. The lesson
software engineering learned here is that I need to communicate with my manager
The principle basically means that developers should only and peers actively and routinely so that I can solve some
build things that are currently required. Building features not problems a lot faster. Insisting on finding a solution all by
explicitly required in anticipation of future need can be a waste myself is not the best course of action in many scenarios. To
of time and resources. systematically address this issue, I decided to adhere to the agile
For the first few weeks of the project, there was a recommendation of doing daily stand up meetings with my
misunderstanding about the purpose of the project. As the mentor, so that he could give me help when needed.
developer, I wanted to build a fully functioning system, C. Professional attributes developed
complete with access control, deployment management and a
high level of robustness. Because of this, lots of effort and time Professionalism is a quality that is required of employees. It
was spent on designing the application around these non- is about maintaining a reputation of success and influence. It is
essential requirements. Later on, through more communication what allows organizations to function efficiently. To improve
with the product owner I realised that the project was more my own level of professionalism, I tried to adhere to the
exploratory in nature. The goal was to test out different ideas as following principles to present a professional image during the
fast as possible instead of building production ready internship.
applications. As a result, some of the features I developed were 1) Aim for Excellence
Whatever task that I am given, I treat them with the utmost
not useful. This is a direct violation of the “You aren’t gonna
diligence. I do not produce work that merely passes inspection,
need it” principle.
but always find ways to make sure that my work impresses. I
Before jumping into implementing what the product owner
do not allow ordinary standards to hold me back, and am
describes, it is important to clarify the true purpose of the
constantly striving to deliver excellent solutions.
project. By being clear about the overarching objectives of the
2) Take responsibility
project the developer can deliver what is needed in the shortest
Taking responsibility is fundamental to producing good
time. By clarifying the requirement with the product owner as
work. It signifies that I am confident in my own work, and that
much as possible and not making any assumptions, I will be
I can stand by it. It also means that I will go the extra mile to
able to spend my time on tasks that truly creates value for the
make sure my work exceeds expectation. It also gives my
customer.
managers peace of mind, as they know that they can depend on
2) Violating Open/ Closed principle of Object Oriented
me to work through any problem as I treat them as my own.
programming
The second lesson that I learned is about the Open/ closed 3) Be respectful
When working in an organization, it is important to behave
principle of object oriented programming. It means that classes,
respectfully towards co-workers. I always make sure that I am
modules, and functions should be open for extension but closed
friendly and polite when interacting with colleagues. This
for modification. Or in other words, software design should be
allows colleagues to treat me well in turn. It allows us to have
done in such a way so that when new functionalities are added,
effective communications. This is extremely desirable when I
they should be added as new classes and the existing code
work with people from different projects and in different roles.
should be kept unchanged. During the development of the
4) Maintain integrity and ethics
product, I found that I spent large amount of time changing code
In a corporate environment, there are numerous opportunity
that I wrote before. This indicates the code that I wrote were not
for one to make unethical decisions. Compromised integrity
fully compliant to the Open/ Closed principle. By modifying the
will not only hurt the company, but also ruin one’s reputation
existing code, I needed to spend more time to test the system,
in the long run. I try to avoid these problems by always being
while running the risk of introducing bugs every time a new
honest in my work and observing the confidentiality
feature is added. If I can extend the system without modifying
requirements. I solve problems instead of trying to hide them.
the existing code, then the possibility of introducing bugs to the
5) Continuous improvement
stable and tested component of the program is eliminated, and
There is so much to learn in the workplace. Through
I could be confident that so long as the new feature work as
working, I can discover my own mistakes and flaws as well as
expected, the system will run smoothly. The lesson I learned is
gaps in knowledge. I try to improve my own skills, and refine
that I should spent more time on the design of the program, so
my working processes whenever possible. This allows me to
that the system can be more extensible and easier to maintain.
always be on top of my work, and be constantly gaining new
Spending the time and effort upfront in the design phase of the
experience and expertise. The new skills allow me to raise my
system can help to save more time in the long term, so that I can
productivity as well as develop excellent working relationships
have a higher chance of delivering the product on time.
with my co-workers.
3) Not enough communication
During the project, there was one time I was stuck on a
10