I joined Titansoft in October 2014 as an Accounts Specialist. After doing accounting tasks for more than a year and familiarising myself with the job scope here, it started to become routine with not much challenge. As is our Titansoft’s motto to “Never Stop Improving”, we are encouraged to keep learning and to improve ourselves, be it on professional or personal level. For my accounting function alone, there were very limited areas that I can learn and improve further. Continue reading
After years of education with many sleepless nights working on projects, test and exams, have you ever wondered whether the theories that you have learned in school would ever be useful in the real working environment? And when the chance of an internship comes along, why not find out if your learning is truly applicable? Continue reading
In this tutorial I will share with you, how to change Amazon Echo time zone to Singapore and set your traffic information.
“I got access to a computer at the age of 13 and that was the very first attempt in writing a logo program.” – Vignesh
1. Tell us more about how you came into the world of software development?
It all started when I was in school and I had to make the decision on the stream that I wanted to go to. Having a choice between Computer science, Biology, Biotechnology and Commerce, I obviously didn’t want to be in the Biology class as it is usually 80% filled with girls. All along I was interested in computer science and I believe that I can do well in it! It was a challenge for me when I had to apply to NUS especially when I am from India, there was a lower possibility for me to get accepted. Thankfully, I got into NUS Computer Science and had no regrets choosing it! To be able to see that something I have built runs the way that I want it to be, gives me a huge sense of satisfaction! There is nothing more than writing a piece of code that gives me a huge sense of satisfaction and achievement to keep me going.
Curious to know what is coaching all about? We had a chat with Liangzhu to find out more.
1) Can you tell us more about what coaching is about? How do you get to know about coaching?
To me, coaching is about discovery, awareness and choice. It is a way of empowering people to find their own answers, encouraging and supporting them to make conscious choices.
Coaching is more like being a facilitator – asking questions, guiding through the discussion, and using of inquiry to explore further.
What coaching does is to help people to be aware of and to gain a better understanding of their own strengths and weaknesses. In other words, it helps people to grow by knowing themselves better.
This is the second formal TDD training I have joined (The first one was conducted by Joey Chen(https://www.facebook.com/pg/91agile/about/?ref=page_internal). I could not find online line 😦 sad..). I would like to share some “Aha” moments along the way of this training.
Before that, allow me to share how i took the training(The first 2 series, which is free 🙂 ):
- For 1st series, I implement without TDD first. The reason why I do that is I am just very curious of what is the time difference and other difference if i am lucky to find out.
- For 2nd series, I just follow the video and stop where ever I need to think or research or take notes.
Ok. That’s enough. Let’s go to the my “Aha Wow” moments:
- Really step by step by step : Fail -> Add Logic -> Pass -> Commit -> Refactor
- It’s developers responsibility to cover more tests than the general requirements from clients. (I mention this because I have an assumption from my first TDD training that developers only need to add tests based on the requirements. )
- Avoid more complex integration test by adding unit test when small class or methods come out along the way of implementation.
- Triangulation concept somehow makes me feel better compare to one of TDD rules: You are not allowed to write any more production code than is sufficient to pass the one failing unit test. Because when ever I try to hardcode to make the test I feel so bad and keep wondering why not find the basic logic 1st.
- Multilevel of abstraction code smell apply not only to same functionality, but also all same level functionality with different purpose.
Assume inside one function, there is one logic related to getPrice, three logic related to display price. We should abstract both the getPrice logic and the displayPrice logic to achieve same level of abstraction for easy reading and maintaining.
- Duplicated Concepts/Ideas: Do not repeat your self is not only about code, but also the way of covering the logic.
e.g. if A else if B else if C …. is one example of duplicated ideas
- Intuitive and Mechanical approach of software designer (http://blog.jbrains.ca/permalink/becoming-an-accomplished-software-designer)
- Refactoring based on single responsibility. Re-assign responsibility makes the code much more flexible and clear. For this I am not able to express it clearly by tying here. I strongly suggest you take the 2nd series of the training. Then you may feel it more.
For my little test “For 1st series, I implement without TDD first.”, I did it within 15mins including the tests, while the training took more than one hour. But the test cases are much more less. Reason: I understand the logic of fraction adding. So my test only focus on the logic and with few special cases. I feel some tests inside the 1st series training are duplicated. So until now, I believe that TDD can help design the code but not necessarily helpful in every development scenario.
Tuan is one of the senior Product Developers (PD) in Titansoft and is a member of the PD recruitment committee, where they assist HR in the recruitment process by reviewing technical tests and conducting interviews as well. In Titansoft, we believe in growing both in depth as well as laterally.
Tuan, one of our Senior Product Developers
What does being a Product Developer (PD) mean to you?
In the past, we used to be developing software in the traditional way, which meant that I simply did the task that has been assigned to me. We weren’t concerned much about the quality of our codes and had to wait for Quality Assurance (QA) to complete their testing.
Over time, we adopted new processes such as Scrum. This changed everything, especially mindset. We do not just simply take up tasks. We now contribute ideas and take ownership of the product.
As a Product Developer, we do everything for the product, and will definitely care about the quality of the item – every aspect of it from end to end.