Category Archives: CS448

The Software Craftsman (11 & 12)

I found this chapter 11 really interesting and useful. Most of the scenarios that the author describes I have experienced.

Chapter 11talks about what a developer should be aware of when it comes to accepting a job offer. One must think about the financial offer, working environment, how passionate other employees are and the purpose of the company. The author then goes on to talk about the anti-patterns of interviews. Some of these patterns consist of don’t use brainteasers, asking questions you don’t have the answers to, don’t code on a piece of paper and don’t conduct phone interviews.

Chapter 11 talks about one of the most important aspect of a team. It’s morale.  High morale within a team can lead to great achievements, but with low morale, nothing will get done and if it does, then the product won’t be high in quality.

 

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 (9 & 10)

This blog post will revolve around chapters 9 and 10.

Chapter 9 discusses on the topic about how to recruit the best developers. The author goes on and talk about the flaws that he sees with the recruitment process and gives us solutions on how we can better this process.

One of the main flaw with recruitment is that companies use keywords in order to select their candidates. Keywords on a resume has become the cream on the crop when it comes to the tech world. It doesn’t matter if you have 1000 years of experience in a certain programming language, but more important if you have a million of those keywords that these screen readers pick up.

How does a recruiter know how passionate a developer is? It’s simple, you can ask a developer if he knows any of the latest technologies and trends, a github to display code and or projects that he or she is involved in.

Chapter 10 talks on the interview process of a software developer. There will always be problems and you as a interviewee candidate must display your best knowledge in order to solve and impress the recruiters.

 

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 6)

We picked four issues to work on this sprint. We made some progress into fixing them, but it turned out that the AMPATH team had fixed them. At the end of the sprint we decided what needs to be done to complete the presentation. We plan on meeting somewhere before our presentation and work on our presentation.

The only thing I learnt this sprint is that always ask questions when in doubt. If we had not asked the AMPATH team for guidance on the issue we would never have known the issue was already solved.

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

Sprint 6

The last sprint of the semester.  This semester flew by, but I am proud to say that we finally fixed our issue! Turns out we focused so much on how to fix it that we didn’t even realize it was totally out of our hands.  We ended up asking for help, and the openMRS developers got right back and said that they will need to contact someone in order to make this change.  I learned something very important from this sprint.  I learned that you shouldn’t stay stuck for too long without asking for professional help.  We broke down the whole issue and knew where the problem was happening, but we just didn’t have the access to the code to change it.  This must happen all the time in the professional world.  Next time I have any type of coding bug to fix, I will break down the problem (like we did), but I will make sure to ask someone for assistance way sooner.  If we never asked for help, we would have never resolved this issue.  Our last and final thing to do for the semester is put together our final presentation.  I look forward to sharing with everyone!

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 Craftsman: Chapters 11 & 12

Chapter 11 of The Software Craftsman gives great advice on what companies should NOT do when interviewing for new developers.  Many great developers will end up not going with certain companies because of a horrible interview experience.  Individuals conducting interviews need to make sure to not scare away great potential workers by having bad interviewing tactics.  The chapter discusses that interviews should not be a test to see how well you know the answer to close ended and technical problems.  Anyone can simply memorize and study common interview questions to be sure to come across as a good candidate for the job. However, this chapter makes a great point that just because you know the technical/text-book answers doesn’t mean that you are the best candidate for the job.  I personally would rather have a co-worker that is passionate and wiling to learn, rather then someone who knows “everything”.  A passionate coder is the coder that will be great.  A coder who knows everything may seem really good and all, but they also may lack that passion and drive that someone else might have.

Chapter 12 talks about how low morale can negatively impact a workplace in more ways then you may think.  This chapter discusses that having passion will go long ways in the overall outcome of an organization.  I agree with the whole idea of this chapter, and I have actually personally experienced this.  The experience I had wasn’t at my computer science internship but it was when I used to work at an ice cream shop.  Most of the girls I worked with there, along with myself, would want to make nice looking ice cream cones and sundaes for the customers.  However, there was one girl that was always extremely sloppy.  The ice cream would be dripping everywhere, and the customers were never happy with her work.  This was a perfect example of someone who had no passion whatsoever.  She was just there to simply get paid, and she did the bare minimum amount of work possible to get the paycheck.  Her lack of effort negatively impacted all of us.  We would have to clean up after her, and deal with the problems she caused with the customers which brought down everyones motivation and attitude.  My experience relates to what this chapter talks about.  The chapter talks about how being a motivated developer will motivate other developers to work hard.  Have one person bringing everyone down with no passion or willing to try their best is not a good thing in any type of work place.

 

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 Craftsman (Chapters 11 & 12)

I found this chapter 11 really interesting and useful. Most of the scenarios that the author describes I have experienced.

The author mentions that before talented developers accept a offer they consider the financial offer, autonomy, mastery, purpose, productive partnership, talented and passionate people, and a good working environment. Of all the factors involved, I think working with talented and passionate people is the most important. I know what it feels like to work with unpassionate people. Working with unpassionate developers is not very productive and can be quite irritating. The only reason that I am a Software Engineer is because I LOVE Computer Science and I LOVE the craft of developing software. It is hard to work with other developers on creating software who do NOT share the same LOVE. You would not grow as a developer if you stick with unpassionate developers.

The author then talks about interview anti-patterns. The following are the interview anti-patterns mentioned in the chapter: don’t be a smart-ass interviewer, don’t use brainteasers, don’t ask questions to which you don’t know the answers, don’t try to make the candidate look like a fool, don’t block the internet, don’t code on a piece of paper, don’t use algorithms, and don’t conduct phone interviews. I have experienced all of these anti-patterns on my interviews for a year now. I would love to share some of my experiences, but unfortunately I don’t think it would be wise to do it.

The most important thing to understand from this chapter is that you as a software engineer are not a slave to your employer.

Chapter 11 is all about how important the morale of a team is. Low morale can destroy a company; and unmotivated people do a lousy job. A company must bring the best out an employee.

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 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.