Software Engineering Academy Camp 1: Ways to Develop a Software

Agnes Audya
COMPFEST
Published in
7 min readAug 20, 2021

COMPFEST 13, Jakarta — The Software Engineering Academy (SEA) was officially launched starting from Saturday, August 7 to Sunday, August 8 2021 through Zoom Meeting. 20 participants were successfully selected from approximately 780 participants who would later be divided into five groups. The event was attended by various speakers who have heaps of experience in the Software Engineering field! Want to know how the event went? Let’s see through the article below!

DAY 1 — All about Software Engineering

Abduracchman Mappuji, a Tech Lead from Mekari, delivered the first session. He brought a very fascinating topic focused on the Introduction of Software Engineering. The topic was opened with him asking the participants to fill in the word cloud given the question itself is how the participants generally perceive Software Engineering. A few minutes had passed and finally, the speaker introduced himself and followed by defining Software Engineering based on his source, “Software Engineering is the application of engineering concepts to software development. Its main goal is the creation, improvement, and maintenance of software. Software engineering takes into account engineering aspects like the hardware and software environment when working on a program.”

The topic didn’t pause there, it went further when he delivered Step to Build Software. There are various ways of developing software which consisted of the Waterfall Method, Agile Development, Scrum, and Lean development. He asked the participants what they know about activities linked to Software Engineering and opened the Mentimeter once more to fill the word cloud. While sight-seeing the word cloud conveyed by the participants, he explained at least 3 main activities in Software Engineering are Delivery, Engineering, and Management. Shortly after that, he ended his topic and started doing Q&A.

The next session was continued by Panji Gautama Asmawarman, SVP Engineering from Mekari. He talked about the topic mentioned in Abduracchman Mappuji’s lecture — Agile Software Development. He started the topic by saying that a product’s development doesn’t always emphasize the consumer’s mindset and often goes on without enough data from the consumer. Nonetheless, not all SDLC could adapt to customer’s demands. However, the speaker would explain how to choose SDLC according to the needs.

However, before jumping to that, he explained the definition of SDLC first, which is a structure to develop software with a continuous mindset. Further explaining that there is a Traditional SDLC consisting of Waterfall, Spiral, V-Shaped, and there is also Agile SDLC explained by him. Then, he also explained some popular agile frameworks such as Scrum, Extreme Programming, and Kanban. However, the speaker would only talk about Scrum and Kanban in this lecture.

The third session was presented by Risal Hidayat, a Senior Software Engineer from Mekari, who delivered a topic revolving around Testing. The speaker started the topic with a self-assessment. Participants were asked to make a test case that specified the user and analyze the requirements. After the self-assessment is completed, the speaker explained the definition of Software Testing which is a test of software that involves considerations from the economic and human psychology aspects. This is also followed by the example of significant losses incurred due to bugs such as the Y2K bugs and the Boeing incident to show how vital Software Testing is. Moving on to the benefits of software testing, he mentioned Cost-Effective, Security, Product Quality, and Customer Satisfaction.

Furthermore, he explained several types of software testing such as Functional Testing, Non-Functional Testing, and Maintenance Testing. He also described one of the testing frameworks — Pyramid Testing, which consists of 3 layers: Unit Tests, Service Tests/Integration Testing, and UI Tests.

Next, he explained the Software Testing strategy starting from creating test cases divided into two methodologies: Black Box and White Box. Subsequently, he proceeded by explaining the testing strategy based on the SDLC starting from the Waterfall, Agile-Scrum, and continued by discussing the Shift Left Testing paradigm. Lastly, entering the Q&A session again.

One more session before hands-on testing was held by Muhammad Hezby, a Lead Software Engineer from Mekari. The speaker opened the topic of Clean Code by explaining the meaning of Clean Code itself. “Clean code is not an exact science, clean code is not like chemistry or physics which is really objective, clean code is more like art, the art of how we write code, so what we pay attention to when we write code, what feelings we get,” said the speaker.

Then he talked about the reasons we need Clean Code. Apart from Clean Code, the speaker also discussed Code Smell such as Bloaters, Abusers, Change Preventers, Dispensables, and Couplers. Luckily, the speaker also mentioned that static code analyzers or linters can detect code smells. Like the previous sessions, Q&A was also available for participants who wanted to ask the speaker.

The first day of SEA Camp was closed by the last speaker, Risal Hidayat, who also guided the participants to conduct hands-on testing. The participants were given an application link to do a unit test exercise. At the end of the session, there was a SEA group project given to each team as the final project of the SEA camp. Although the lecturing session has ended, participants still took part in a mentoring session accompanied by mentors.

DAY 2 — Final Day of Camp 1

Camp 1 continued until the second day. In the first session, the participants were guided by Hezby Muhammad, the speaker on the first day. The participants were asked to code using Golang. Initially, he asked about the familiarity between the participants to Golang. The speaker asked the participants to copy the speaker repository containing the Golang exercise to their respective repositories. In the exercise, participants were asked to analyze the code smell on existing models, improve the existing branch code, and perform tests until all the results passed and the application ran successfully. While waiting for the participants, the speaker said that unit tests will facilitate code refactoring and clumped into white box testing. In contrast, if testing carried out without using unit tests, it clumped into black box testing cases that rely on input and output.

The first exercise is finished and followed by a second exercise that focused on the long method. The speaker asked the participants to copy the code regarding the long method and copy the testing code as well. In addition, the speaker also practiced Test Driven Development. Then, participants refactored the existing code by creating a new method that separates each calculation. The objective is the same as in the first exercise, testing until all the results pass and the application is successfully executed. While waiting for the participants to complete their objectives. As a sponsor message, the speaker also mentioned that Mekari is currently hiring people.

After that, we entered the second session with Imre Nagi, a Cloud Platform Engineer from Gopay. The speaker discussed more Design Patterns. But before going to Design Patterns, the speaker discussed Architectural Styles and Architectural Patterns first. Initially, the speaker explained the definition of Architectural Styles as such, “how is a common way for us to organize the subsystems of the software we create.” Then proceed with the explanation of Software Architecture. “How do we look from above or when we want to do something, what needs special attention or what doesn’t really need special attention.” The speaker’s words about what is mentioned in Software Architecture.

Then, the speaker explained that there are 3 concepts in Software Organization and discussed the relationship between applications with Coupling and Cohesion. The speaker also explained the Architectural Pattern, then proceeded to the Design Pattern topic. What was explained included the Builder Pattern, Adapter Pattern, Decorator Pattern, Chain of Responsibility, and State Pattern. Then, entering the hands-on testing session using Java until the event finished.

After the CAMP 1 SEA ended, we had the opportunity to interview one of the CAMP SEA participants from the Ninja team. During the SEA camp, he was happy because he could participate in the COMPFEST Software Engineering Academy event. He was also glad to receive useful knowledges from this event. He learned how to become a professional in the field of Software Engineering from the materials presented by the speakers. Other than that, he also learned the application from the hands-on testing session. According to him, this event made him more interested in the field of Software Engineering.

There is a still a lot of fun in the next series of events at COMPFEST! So stay tuned for information about COMPFEST through our Twitter social media account @COMPFEST, our Instagram @COMPFEST, and our site compfest.id (Editorial Marketing/Agnes)

--

--