Category Archives: CS448

The Software Craftsman (Chapters 9 & 10)

Chapter 9 was all about how to recruit good developers; it was a very interesting read. The author explains what is wrong with the recruitment process in most companies and how to fix it.

One of the major issues with recruitment today is that companies recruit developers just by their resumes and keywords in them. They value keywords ( whether a developer has worked is some technology for x years) rather than whether the developer is passionate about development.

It is very hard to judge whether a developer is passionate about developmen or not. One of the ways that the author judged passion was whether the developer had a gitHub accout, had contributed to open source projects, have a twitter account, have a blog, or have spoken at conferences.

I totally aggree with the ideas in this chapter. Most companies that I interviewed with were more interested in the keywords in my resume than actually accessing whether I had the knowledge, aptitude and passion for software development. Some others asked me stupid obscure questions related to data structures and algorithms that I don’t have at the top of my head at all times, but could solve them if I was given some time to think.

Chapter 10 was about the software developer interview process. The main thing that I learnt from this chapter was that interviewing is like a business negeotiation. The company has needs and problems to solve and the software professional can help the company solve them. The software professional needs to understand the risks and rewards of that negeotiation before signing any contract. The software professional has a reputation and anything that can damage that reputation must be considered a risk.

The rest of the chapter was about how to properly interview a candidate.

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 Software Craftsman: Chapters 9 & 10

Chapter 9 is the first chapter of Part II of The Software Craftsman.  This chapter discusses what companies can do to attract great developers during the recruitment process.  Many companies will post a traditional job description along with the criteria that you should have ____ years of experience.  The chapter states that companies may be pushing away great developers that would be extremely beneficial to the company by their recruitment process.  One point that really stuck out to me is that many jobs require so many years of developer experience.  I have always thought this truly made no sense.  A second year software developer could be much better and have more skills then a software developer with 12 years of experience.  Seniority is not a good way to judge the quality of a worker.  Another good point the author talked about is looking for a developer with the passion.  Having a passion for something will mean that you are giving it your all.  A developer who loves what they do and wants to succeed will always be better then someone who just does enough to get the paycheck.  Overall, I enjoyed reading this chapter.  It was interesting to get some tips on how companies should view you as a developer, rather then how you should view yourself like in the previous chapters.

Chapter 10 gave advice on the interview process for both the companies and the candidates.  The author stresses that an interview shouldn’t be an integration of the candidate, but instead a business negotiation where both parties reach mutually beneficial agreements.  I really enjoyed and agreed with the whole idea of this chapter.  I am always extremely nervous for interviews and feel like they are testing my every word to make sure I say the right thing.  However, it really shouldn’t be like that.  An interview,  on the side of the interviewer, should be a way to get to know your possible soon to be employee and see if they are a right fit for the job.  If you give a formal “by the book” interview, someone coming in is going to answer like a robot and say what you want to hear.  I really hate how so many companies expect you to have the perfect answers to every question.  If I ever personally give an interview, I will make sure to make the candidate feel comfortable and like they don’t have to speak like they are reading from a textbook.  Another good point the chapter made is that when giving an interview you should be more focused on the candidate’s passion, willing to work, and previous accomplishments then what skills they currently have.  Someone who is enthusiastic about learning new things will be able to pick up quick on any skill they may not have going into the job. When I first got accepted to my internship as a software engineer, I was only a freshman and honestly had minimum technical skills.  I was honest with the interviewer, but I also was clear that I was willing to put the time and effort into learning anything that I needed to.  I ended up getting the job, even though I wasn’t the best at everything.  Now I can say, as a senior that I know so much more then I did during my interview as a freshman.  I am willing to keep this mindset throughout future jobs.

 

 

 

 

 

 

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.

Sprint 5 Reflection

Another sprint in the books, and this time, as a team, we all worked on one issue together. During this sprint, the main difficulty was finding the file that the issue was in. It took us a couple of days using many tactics to find the file. A teammate decided to go on Github to track down the problem by scouring through similar problems. We finally found the problem, but it was very outdated, and the file structure to find that file was no longer the same, but we had an idea of where to look in the current file directory. After hurdling this obstacle, we were faced with even more obstacles. The next obstacle consisted of finding out that the file our issue was in was not in the original OpenMRS source code. It was in the NPM install files that they tell us to run through the terminal. I believe that in order to hurdle this obstacle, we must contact the developers to see what they think.

 

From the blog CS@Worcester – My Blog by justcodeit94 and used with permission of the author. All other rights reserved by the author.

Learning Reflection – Sprint 5

We successfully made the pull request and merged the NGPOC-184 branch to the AMPATH master branch. The most important thing that I learnt was how to squash commits. Overall, this was the most productive sprint we had so far.

The thing that I think could be done differently the next sprint is how we divide the tasks. We did not know how to divide the NGPOC-184 issue into tasks so that everybody could work on it. What I learnt is that each issue could be divided into the following tasks:

1) Research ( How to solve the issue ?)

2) Solve the issue ( Somebody writes the code and pushes the changes to group                                                     repo. Can be done collaboratively.)

3) Fix npm lint errors ( Somebody fixes the lint errors)

4) Squash commit and make pull request.

5) Inform AMPATH team to do QA tests.

I plan to divide our next issue into the tasks above. This way our issues are solved much 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 Software Craftsman: Chapters 7 & 8

Chapter 7 of The Software Craftsman discusses some important technical practices.  It also discusses the topics of pragmatism and accountability, as well as tries to help developers understand these practices.  Some of the practices that this chapter talks about is, automated testing, test driven development (TDD), continuous integration, pair programming, and refactoring.  Something that was interesting about this chapter was that it discussed how as a developer you need to figure out what practice you personally are going to adopt.  You don’t need to adopt every single practice, and that’s very important to remember. You need to figure out what works for you individually.  Of course following these practices will be beneficial to overall cleaner code.  However, that doesn’t mean that following all of them is the best way to do things.  I learned that keeping yourself focused on the business value will help to make sure things go smoothly for you.  Overall, this chapter wasn’t one of my favorite but it had some useful information.

Chapter 8 of The Software Craftsman is about the long road of your own career and your own happiness/success.  The author discusses how you need to focus on your own goals and your own path as a developer.  If you aren’t happy with your current status then it’s your own responsibility to change that.  You need to be willing to try new things and create new opportunities for yourself.  Keeping up with the latest technologies is very important and making sure you are at the height of your success.  However, at the end of the day you need to focus on your own goals.  As a developer you should never settle just because you are at a certain spot in your life.  You need to keep reaching to your goals and work hard to get there.

I really enjoyed reading chapter 8 of this book.  It made me think about my own personal goals in life.  I want to get to a place in my career where I can be a confident and independent developer.  Right now I tend to question and second guess a lot of the work I do.  My goal is to have enough technical knowledge and self confidence to be proud in the work I do.  This chapter reminded me how important it is to keep up with technology to make sure you are producing the best work possible.  Overall, I liked this chapter and I could tell that the author felt passionate about the things he said.  Your career is your own journey and you should always remember to make sure it’s exactly what you want.

 

 

 

 

 

 

 

 

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.

Sprint 5

This sprint we have all been working on one issue together as a team.  Our biggest challenge so far was actually simply finding the file in the huge code base.  We looked everywhere for this one file and had no luck.  I decided to try a different tactic then to just search the full code base for keywords.  I looked at previous solved issues on GitHub for a similar problem.  I think that using GitHub as a resource was the best decision I made.  I was able to find the file within a half hour.  I will now use this method for finding files in the future.  A big obstacle we are currently stuck on is that the file is actually not in the openMRS src code on GitHub.  It would be such an easy fix to make a small change to the file, but it is part of npm and AMPATH has no access to it.  The next steps I am going to take is asking some of the other openMRS developers for some guidance on what exactly we should do.

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.

The Software Craftsmanship (Week 10)

This blog post will revolve around chapters 7 and 8

Chapter 7 talks about how beneficial technical practices are and ways to convince your peers to adopt the same practices. There were many repetitive things being stated in this chapter that I’ve already learned before. One of them is the idea of the “boy scout rule”, which is to always leave the campground cleaner than you find it.

Chapter 8 discusses on the steps to build a career and what motivates us. There was a story in this chapter about the author having a dream on becoming a software engineer. He had many obstacles in his way, lack of english, average skills, but that did not steer him away from his dream. He worked and worked to master his craft and 10 year later, what was a dream turned into a reality. He was hired as a software engineer in the United Kingdom. This just goes to show that if you want something badly, then you have to go and get it no matter how many obstacles there are in front of you.

 

From the blog CS@Worcester – My Blog by justcodeit94 and used with permission of the author. All other rights reserved by the author.

The Software Craftsmanship (Week 9)

This blog post will revolve around chapters 5 & 6

Chapter 5 was very interesting. It was about being professional in the software developer industry. Becoming a software professional entails being honest, knowing the can’s & cannot, ethics and having a code of conduct. There was a very interesting story about Sandro Mancuso who was a slave to a company that he had work for. In this chapter, he stated that his old company had him start the work day at 5am and end at 8pm. I find this to be outrageous. I don’t think anyone should be working for that long, because it will burn an individual out, and most of the time, the code that they are putting in isn’t the very best. I hope they paid him a lot of money for having him work more than 10 hours a day.

 

Chapter 6 goes on to talk about the qualities of a good software. The author lists out steps that a software developer should follow in order to create great code. If you do this from the gecko, then in the future, maintaining it would not be a challenge. Being a professional in the workforce is imperative and one should always stick to being one in order to become successful.

 

From the blog CS@Worcester – My Blog by justcodeit94 and used with permission of the author. All other rights reserved by the author.

The Software Craftsman ( Chapter 7 & 8)

Chapter 7 is about the usefulness of technical practices and how to convince your peers on using some of those technical practices. This chapter talks about many things that I don’t think are very useful at this point of my carrier.

Chapter 8 is about what motivates us and how to build a career. The first section of this chapter starts out with a story of the author ( I think). The author had a dream of working in London and he figured the way achieve that dream is to become a software engineer.  He did not speak English at the time and his skills set was pretty basic. He however did not give; he kept working toward his goal until 10 years later he finally achieved his dream. He became a software engineer working in UK.

The moral of the story I think is that nothing comes for free and mastering a skill of achieving a goal takes time and hard work.

And also a software craftsman must always look for three things when choosing a job: autonomy, mastery, and purpose.

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 Software Craftsman: Chapter 5 & 6

Chapter 5 of The Software Craftsman basically talks about dealing with pressure and deadlines as a professional and not always being the “hero”.  As a software developer you aren’t a superhero and you don’t need to say yes to everything asked of you.  In fact, a huge point this chapter made was learning to say “no”.  This topic of saying “no” is something that we read about in the last book, The Clean Coder.  Although saying “no” may seem to be rude or unprofessional, it is actually the professional thing to do.  In the field of computer science, there is pretty much always something that needs to get done.  This doesn’t mean that you always need to be the one to do everything.  It is great to work to your full potential and get a lot done, but when you start saying you’ll do things you don’t have the time to do, it can get bad quick.  It is better to have good quality work rather then quantity.  Overall, I enjoyed reading this chapter.  Even though we already learned about this topic from the other book, I enjoyed reading the author’s personal stories on this matter.  He really went through hell trying to be the hero all the time, but luckily he came to his senses.

Chapter 6 discussed the issues with low quality software.  The author basically talks about how keeping up with the code base is very important.  Working code can easily turn into low quality and very bad code.  He discusses how many software developers will ignore the legacy code because they don’t want to deal with it.  However, that is a terrible attitude to have.  Putting off this problem is only going to create a bigger problem later on.  It is a much better idea to update the legacy code piece by piece so eventually the code will be working again.  This author made some very good points about working software and the attitude you should have towards it.  Personally, I would much rather just ignore legacy code and do something different.  However, this chapter made it clear that ignoring the problem is never the answer.  Keeping up with the code base and updating it with unit tests can make a huge impact on the overall product.  No one likes non-working low quality software.  From now on I will deal with situations like this piece by piece rather then facing a huge problem all at once.

 

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.