Developers Nepal Meetup #4 Report

13
Supported By:

Transcript of Developers Nepal Meetup #4 Report

Supported By:

Developers Nepal Meetup #4 was organized on February 4 at Fusemachines Nepal. The event was organized by the team of Developers Nepal and supported by Toptal.

Introduction to the theme of the meetup Avinash Kundaliya from the Developers Nepal team introduced the theme of the meetup. While meetup #3 was focussed on Code Reviews, we had decided to put testing into spotlight for this edition. Anish Joshi from Fusemachines Nepal introduced Fusemachines, the vision of the company and talked about their products that includes Sales Automation software using AI and Machine Learning to help businesses find leads. Fusemachines recently announced a $25,000 scholarship for 25 students to learn Artificial Intelligence with guidance from international professors, including their CEO Sameer Maskey.

Presentations

SOA With Consul Rajesh Sharma, co-founder of Vantage Tech Having started a career as a web developer with PHP around 7 years ago, now he designs, architects and builds web and mobile applications. Currently when he is coding he is mostly doing front-end development with coffee and react. When he is not coding though, he is monitoring/managing many cloud deployments of web applications and trying to make them as autonomous as possible to make his life easier, or may be just fooling around in the internet.

During his presentation, Rajesh talked about the challenges of managing 500 servers. He talked about other existing solutions like Zookeeper and their limitations. Consul is not just a distributed service discovery solution, it has other features like HealthCheck, configuration management and orchestration which make it a complete package. According to Rajesh, a cluster of 3 Consul servers can seamlessly manage 100s of Consul clients without the developer having to remember all the IPs of the 100 clients.

Rajesh introduced the server and client configurations for a typical Consul setup and the API endpoints that Consul provides to help you run and maintain SOA at scale.

Remote Work - Challenges and Opportunities Punit Jajodia, Software Developer at Toptal Punit is an entrepreneur and software developer from Kathmandu, Nepal. Versatility is his biggest strength, as he has worked on a variety of projects from real-time 3D simulations on the browser and big data analytics to

Windows application development. He has also recently ventured into training on the MEAN stack. In his presentation, Punit outlined the opportunities that come from working remotely. He talked about his experience of working with Toptal.com and about the numerous benefits like Flexible hours, better pay, ability to choose interesting projects, freedom to design your own workspace and work-life balance.

There are also lots of challenges that one has to face while working remotely. Fluency in English is a must. Cultural differences between you and your client can cause issues. Timezones can cause considerable confusion while planning meetings. The ability to manage time alone and time between projects, lack of routine and fitness are other challenges.

Punit ended his presentation on a note that remote work is not for everyone and you have to make an active effort to make sure that you are able to overcome the challenges and reap the benefits. His presentation is available on slideshare.

Things I wished I knew as a junior developer Geshan Manandhar, QM Lead/Sr. Software engineer at Namshi Geshan is a seasoned software engineer, he has more than 8 years of software engineering experience. Currently in Dubai, UAE serving Namshi as Quality and Maintenance Lead/Sr. Software Engineer. He has a keen interest on REST architecture, Service Oriented Architecture (SOA) and Microservices. He believes in agile methods for software engineering. He is also interested in Quality Assurance (QA), blogging is something he likes to do in his free time.

Geshan introduces himself as an agile follower and conditional microservices believer. Through a story of a dog chasing a bird while jumping off a cliff, Geshan talked about the difference between junior and senior software engineers, citing that senior software engineers are able to take calculated risks to achieve business goals without panicking.

He talked about the qualities that separate great devs from the worst, backed by research data.

In the next few slides, he outlined the things he wished he had focussed on as a junior developer. He believes that if junior developers learn these lessons, they can avoid mistakes and become better at their job:

● Solutions and value to business is much more important than the latest language/framework.

● Be strong in the basics. ● First, solve the problem. Then, write the code. - John Johnson ● Writing simple and clear code is more difficult than writing magic code. ● Code reviews help both the reviewer and reviewee. ● (Automated) Testing is easier than debugging. ● Automation is King. ● Application logs + monitoring save your sleep. ● Non tech things are very important like proactive communication, being on time etc.

● You might not need that abstraction - like an ORM.

You can find his presentation slides on slideshare.

Networking Session 3 consecutive presentations can be tiring, so the participants took a short break to stretch their muscles and have some coffee with conversations.

Panel Discussion The topic for the panel discussion was "Automated Tests, do we really need them". We had assembled a team of elite senior software engineers from the top software companies in Nepal to discuss test automation and their value to business.

Panelists

Amrit G.C Senior Software Engineer at IntroCept Nepal Amrit G.C. is a web developer currently working as Senior Software Engineer at IntroCept Nepal. He is passionate about writing clean, elegant, simple code. He enjoy being challenged, work outside of comfort and knowledge set, as continuing to learn new languages and development techniques.

Laxman Manandhar Senior Software Engineer at Versend Laxman is a programming enthusiastic who loves Problem Solving, Technology & Product Innovation. Currently working at Verscend Technologies(Verisk rebranded ). Doing Java web-based applications design and development. Experienced in Distributed Systems, Web 2.0, SOA and Scalability.

Narendra Chitrakar Senior Software engineer at Pagevamp Narendra is a senior software engineer at Pagevamp. He is more into design and architecture of distributed systems than just coding them. When he codes, he does so in PHP and Javascript. He always loves learning new things. He cherishes exploring new places

Rakeeb Rajbhandari Lead Mobile Application Developer at YIPL Passionate about the green bot that is Android, Rakeeb has been involved in 10+ projects, notable projects being "Ncell App Camp 2015", "SelfHelp" and "Trekking in Nepal". He is a lead mobile application developer @ YIPL and has a genuine love for learning.

Sagun Shrestha Senior Software Engineer at Jyaasa Technologies Software Engineer with never ending thirst to learn more. Core expertise is Ruby and its frameworks, Believer of TDD. And recently started exploring functional programming concepts. Enjoys listening to classic rock n roll songs.

Q&A

1. Do you write automated tests? Should we even do it? Panelists: Yes we write automated tests and it is very important regardless of the language and framework we use. It gives us confidence to go to production. Unit tests are like the second compiler of the code. Unit tests saves our time and cost on the long run. It also helps to design better code.

2. Do we need a QA person, if we have automated tests? Panelists: Yes QA and manual testing is needed regardless of automated tests. User acceptance is necessary. Think about test pyramid by Martin Fowler and have tests accordingly where you have lots of units tests, lesser integration tests and UI tests for generally happy path.

Have a good balance between manual and automated tests. UI tests are must for mobile applications.

3. What is your plan for tests? Panelists: We inform our management of tests and we add test time to our estimation. Tests are initiated from developers then management asking you to write tests. We include test planning in the sprint planning if we are using scrum.

4. How do you deal with not handling edge cases even with tests? Panelists: It more about developers mentality and experience with writing tests. If you have tests coverage it helps. If you do TDD you have a higher test code coverage by default. Code coverage cannot be the only measure. Basically “write tests for things you are afraid of for example if you work with money”. There is a question of how smartly the developer deals with tests.

5. How important is it to write testable code? Panelists: If you want to add test code to a legacy project, start with UI tests which doesn't need to know about the testable code. Go from outside to inside. Testing also helps you write better designed code. To test your legacy code, refactor it bit by bit at a time. Make your code testable then test it. Having tests make your code reusable, modular and more maintainable. Write higher level tests, then ensure your features have some confidence then go to lower level tests like unit tests. There is no secrets of writing tests but there are secrets from writing testable code.

6. What is the most effective way to introduce automated test in a maual testing environment?

Panelists: We had fully manual tests, we just introduced CodeceptJs to do some automated manual tests. Start from basics like just have smoke tests, when you see benefit then add more tests that suits your needs. Take an outside in approach. Start small then go deeper.

7. What percent of code coverage do you need? What is the standard for minimum code coverage?

Panelists: We use sonar to put in place quality gates that doesn't let us push code if the code does not meet x (80%) code coverage, the build basically fails. Test coverage is a measure but not the primary measure for testing and reliability. Test your core business value functionality well. For a start up, you might need to set your priorities correct aligned with the business needs.

8. How are QA involved in the acceptance tests? Panelists: Our QA has stepped up and started to automate tests. Manual testing will be needed for critical things like checkout. Non critical things can surely be automated tests. There is some focus on UI automated tests that go hand in hand with manual tests.

9. How can we measure the impact of unit/automated tests? Any metrics? Panelists: The main metic you can follow is the number of errors on production before and after writing tests. Error notification does help on this. Another measure can be the confidence in developers which can’t be really measured but it can be felt well with positive energy in the team. Velocity of the team increases on the long run even though it can go a bit down in the beginning. I as a developer can sleep soundly at night, this is a great benefit. After writing tests the code is more managed and structured than before. It increases code quality.

Wrapping up The event was wrapped up with coffee mugs for the speakers, panelists and venue sponsors.

Meetup feedback The feedback form was well received by participants who said that they would not only attend the next meetup, but also recommend their friends to attend.