Author Archives: Sudarshan

The Software Craftsman (Chapter 1 & 2)

I am really excited that I am starting with a new book this week. The first chapter of this book is about what it means to be a software developer in the 21st century. I found it really funny when Sandro (the author) says that back in the 1990s if you wrote code that nobody understood, you were considered a senior developer. Wow! I wish that was still true today. I can easily write code that nobody understands; I even wrote a program that even I don’t understand when I look back at it today!

According to the author, seniority is relative. Having ten years of experience is not the same thing as having one year of experience repeated ten times.

To be a developer in the 21st century means that you must be proficient in many different technologies, wear many hats and be active in all phases of software development.

The second chapter of this book is about Agile. What is Agile? Agile is a combination of methodologies and techniques that can help teams and companies adapt to the changing nature of software projects and also reduce the risk associated with them. There are four goals of Agile which are summarized in the Agile manifesto and twelve principles behind the agile manifesto.

Of the twelve, I think the second principle is the most important: welcome changing requirements, even late in development. This principle I think is why we use Agile and is the most useful. In the traditional waterfall approach to software development, all of the requirements are gathered and the system is designed based on the requirements before any implementation or testing is done. And so if there are any new requirements, it is very hard to incorporate them into the existing design and would usually cost more time and money. All of these are avoided in the Agile approach to development; since the build software iteratively over small periods, we are able to catch any mistakes early on or incorporate new requirements easily.

The rest of the chapter goes on to explain why Agile has not worked at certain companies.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Learning Reflection – Sprint 3

I was studying the ngpoc-184 issue and I figured there are basically two modules that we need to work with: clinic-dashboard and main-dashboard. I also found a few questions in stack overflow useful in helping us develop the feature requested. We did not do anything else during this sprint.

I wish we could move faster as a team and take on more issues, but everyone else is still learning Angular 2 so we can’t move any faster.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

The Clean Coder (Chapters 13 & 14)

Chapter 13 is short and the chapter can be summarized as follows: teams are hard to build, it better to use the same team  for different projects rather than form teams around a single project.

Chapter 14 is about mentoring, apprenticeship and craftsmanship.  I found the Degrees Of Failure section funny. How does somebody go through a master’s degree in CS without knowing how to code? I was surprised to hear that there are CS master’s candidates who do not know how to code! Damn! !

The rest of the chapter was about mentoring, the importance of learning and what it means to be craftsman. I completely agree with the author that the process of becoming a software engineer must be more like the process of becoming licensed doctor. I also agree with the author on the idea of craftsmanship. I takes years of learning, practice and tutelage to gain true mastery of software development.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

The Clean Coder (Chapter 11 & 12)

Chapter 11 of the clean coder book is about pressure and how to deal with it as a professional. According to the author of the book the best way to stay calm under pressure is avoid situations that cause pressure.

Other ways to avoid pressure:

  1. Commitments (avoid committing to deadlines you are not sure you can meet)
  2. Staying Clean (The best way to go fast  and keep deadlines is to write clean code)

If you find yourself in a pressure situation, you can do the following:

  1. Don’t panic (Think the problem through and plot a course to recovery)
  2. Communicate ( Tell your team of your troubles; avoid creating surprises. Surprises multiply pressure by ten.)
  3. Get Help ( When the heat is on, find an associate who will pair program with you. You can get things done much faster this way)

 

Chapter 12 is about collaboration. It is highly important to collaborate with people. Software development is more dealing with people than programming.

Both of these chapters  pass on  some useful and common sense ideas.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Learning Reflection, February 22

This week I spent a lot of time reading and learning stuff on Angular 2. I bought the ng-book 2 along with the beginner’s screen cast; I spent a lot of time reading the book and listening to the screen cast.

I found the first few chapters in the book good and the first half of the screen cast was good. I could not understand the other half of the screen cast and some chapters in the book were not written well. I plan read more chapters in book and if I don’t like it I plan to return the book. I expect a lot more from a book worth $79.

The deeper I delve into Angular 2 I find that there are a lot of things I don’t know, things like reactive programming and asynchronous programming.

The problem that I find frustrating is that there aren’t many good books on Angular 2.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Clean Coder 9 & 10, (Week 5)

The ninth chapter of the Clean Coder book is about time management. The is only 28,800 seconds in a working day and it is the duty of a professional to use those precious few seconds effectively. According to the author meetings take a lot of time and money; as professional you need to know when to go to a meeting you are invited and when to decline.

The advice that I found most interesting was the following: any argument that can’t be settled in five minutes can’t be settled by arguing; and so there is no point wasting meeting time to try and resolve the issue. The other interesting thing is the Pomodoro technique to manage time and focus.

The tenth chapter of the book was about estimation and how to make valid estimations. The author explains and differentiates between the concept of an estimation vs. a commitment. He also talks about the different ways to make estimations.

There is not much that is new to me in chapter 9, but I found some of the estimation techniques useful. I plan to try out those techniques in our ng2-amrs project.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

The Clean Coder, Chapter 7 & 8 (Week 4)

Chapter 7 of the book is about the importance of communication and how to avoid communication errors between stakeholders and developers. According to the author the only way to effectively eliminate communication errors is to write automated acceptance tests.

Chapter 8 of the clean coder book is about testing strategies. According to the author, the goal of the development team is that the QA team finds no bugs. The development team should react with horror(it should not be something they expect) every time QA finds a bug and must take steps to prevent them in the future.

I think the whole point of this strategy is to force the development team to write clean code rather than write bad code and push them to QA, which will ultimately cost time and money since the development team will have to fix the bugs once QA finds them.

The rest of the chapter is unit tests, component tests, integration tests, system tests, manual tests and exploratory tests. Things we learnt in CS443.

Both of these chapters discuss scenarios which I have not yet faced; so I can’t give any opinions or past experiences.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Reflection, Week 3

I spent this week completing the Angular2 Tour of Heroes tutorial. I also spent some time learning HTML on Lynda.com. The new thing that I did this week was that I got started with katas mentioned in the Clean Coder book. I am currently working on the prime factors kata on my spare time. I plan to learn a few katas and repeat them for the rest of this year.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

The Clean Coder, Chapter 5 & 6 (Week 3)

Chapter 5 of the Clean Coder book is about Test Driven Development. There are three laws of TDD:

1) You are not allowed to write any production code until you have written a failing test.
2) You are not allowed to write more of a unit test than is sufficient to fail.
3) You are not allowed to write more production code than is sufficient to pass the test.

There following are the benefits of TDD:
1) Certainty – Since there are a suit of tests for the code, any time you make a change you can run the suit of test to check if your change broke anything. If all the tests pass you can be sure that no new bugs were introduced by your change.

2) Defect Injection Rate – There are documented cases of defect reduction from teams that use TDD.

3) Documentation – The tests serve as a living documentation of the code and what the software is supposed to do.

4) Design – TDD forces you to write code that is decoupled.

Chapter 6 is about practice and its importance. The author recommends professional programmers practice with katas, which a simple program that you do over and over again until perfect mastery. I plan to choose a Kata and master it in my free time.

I liked the last two sentences in the chapter: Practicing is what you do when you aren’t getting paid. You do it so that you will be paid, and paid well.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Reflections, Week 2

I spent this week learning Typescript and Angular2 (continuing from last week). I continued with what I did last week. The only thing which I did different this week was that I listened to videos on Angular2 and TypeScript on Lynda.com.

Some of the videos were good and some put me to sleep. I am also working on the Angular2 tutorial (building the tour of heroes app); I’ll complete it by the end of this sprint.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.