Author Archives: phancs

record what you learn

Hi everyone and welcome to another CS 448 Software Development Capstone blog. Today blog topic is about one of the individual apprenticeship patterns which happen to record what you learn. I wanted to read more about this pattern because I can relate. Ever since last semester I been writing many blogs and didn’t fully understand why I was posting them. At first, I thought this method of recording what I learn was to help us research more information and writing them as blogs would help us understand the material better. After reading this, I realize that it’s just more than blogging once per week. I understand that recording our journey helps keep vital resources, makes our journey explicit, and can be helpful to many others. I feel like after reading this individual apprenticeship pattern I will change the way I work because all this time I was blogging, I didn’t really blog for purpose and just blog because it was assigned so I think I will be more efficient when I blog now. I also picked up a new idea from reading this pattern which is to have two journal that is private and public. I can use the public for sharing what I have learned and gaining feedback and the private one for me, to be honest with my status in programming. I do agree that it best to have both because of the perks that each offer. I like when the record what you learn pattern state that Dave was constantly posting his journey for years and eventually, he had tons of resources that he then later uses later in his career. The reason why I like this statement is that it makes me more motivated when posting these blog assignments because I know that eventually, it will come in handy one day in my career. All in all, I felt like this individual apprenticeship pattern, record what you learn is very informative. I learned that every apprentice should keep a journal for their journey and try to write every day as one day it will help others and even help themselves.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Why Doctors Hate Their Computers

Hello everyone, today blog is going to be about why doctors hate their computers. When I started reading this, I learn that it’s difficult for many others to adapt to new things like technology. Which I think this is accurate not just for doctors related field but for anyone so not comfortable with a computer before. I learned when a company that wants to switch to new software etc. its very costly not only for the new technology but for the other like loss of revenue. I have seen this process because when visiting my doctors during one of these phases of upgrading and I saw many IT employees helping the clinics get familiar with the new software. I never thought of how costly it was until I read this. Also, I learned that when transferring records like the size of the hospital. I learned that one of the issuing was that the doctors had a different idea on how the software should be run so they didn’t like having full control. But eventually when the doctor gets used to the software it very easy for them because they can access data remotely and most of the clinical routine did not change very much. When one the Dr. Sadoughi switch to the new software she said it cause worse than good. This is because she is stating that the computer software was pointless and more time-consuming. It’s wasn’t straight to the point like what she was used too. I kind of agree with her on some of her points when stating that it’s annoying with some software takes a lot of time to navigate through to get to the solution. I was surprised that the computer was making it so difficult for the doctor’s life, but I think since the software seems too new, I think eventually it will be easier for the doctors later. I don’t think after reading this article I will change the way I work because I been using a computer daily and I feel like I can adapt to new software rather than a doctor who not really computer friendly. It also seems like the software was more design for the patients than doctors. I think when making the software they were thinking the consumer was the patients instead of the doctors because that why the information seems to fit the patients. I can relate with the doctors because when working with new software in different jobs I found that some software is better created than others. All in all, I think this article pointed out it’s hard for some user to get comfortable with computers and many software programs created had many flaws but I think later in the future many upgrade and patch will solve the problem and it benefits everyone.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Sprint-1 Retrospective Blog Posts

Hello everyone and welcome to the first sprint retrospective blog posts. Today I’m going to go over what had happened during the first sprint. During the first sprint, we first got familiar with each other because we just had form groups. We then decided on a team name which was 3m2g which stands for 3 mud kips and 2 goats. This team name was combined with two of the most voted names that were considered. We made a list of what had to be done in the product backlog and discussed with each other on what can be done in a certain amount of time. Here were the objectives that we had to complete. First, as a team developing software for AMPATH, we need a GitHub group so we can fork the AMPATH/ng2-amrs repository. Second, as a developer working on AMPATH/ng2-amrs, I need to clone ng2-amrs to my computer (every team member). Third, as a developer working on ng2-amrs, I need to set up my development environment so I can build/run ng2-amrs. Fourth, as a developer working on ng2-amrs, I need to learn about testing in Angular so I can write tests for our new code. When setting up the environment, it was easy because most of the needed software so already installed from the previous CS course. I had the following software and applications was already installed like Insomnia, Gradle, and some sort of Typescript IDE which I had Visual Studio Code installed. Some of the members of my group didn’t have some the development environment installed so the members that finished help provide information when needed. We also had to learn more about these testing tools which are karma and protractor. During the process, the of cloning the AMPATH/ng2-amrs project, Me and my fellow’s group members didn’t come across an issue. The only problem we had to was attempting to run the project which was unsuccessful. I then decided to follow one of the apprentice patterns which had to advise me to ask the help when needed. So, I call my friend Khoa which I and he went over the error and then figure out the solution. I then posted the solution into slack and notify my group of my fix. I learn more about understand certain errors and how to fix them on the day. Some of the software and application that I had installed on my previous class work fine but just need to be updated. When working on the first sprint I became more familiar with SCRUM and really understanding the importance of it. Also, when looking for information about testing in angular I came across many informative sites when inputting angular test on google. I missed the last day of the sprint, but the members of my team were very helpful in informing me of the information that I missed during that day. All in all, this first sprint was simply because the product backlog was a familiar assignment that was accomplished before and I enjoy working with the members of my group.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Learn how you fail

Welcome back everybody to another Apprenticeship Patterns by Adewale Oshineye, Dave Hoover blog post. Today pattern is to learn how you fail which is about how we should gain knowledge from our failure. I agreed with this pattern context that failure is inevitable. I believe every successful person failed more than they succeed. I think that failure can be anything from programming to any day life activity. When reading this pattern, I realize that I have a lot of daily life fail goals. I will prioritize the fail and figure what is worth solving. I learned that it’s important to gain self-knowledge about the patterns, conditions, habits, and behaviors that lead me to fail. I disagree that we should consider cutting out losses and accept that there will be some things that we are not good at. I believe that some things that are out of our control should consider cutting loose but things that just requires more effort should always be work on to fix. I think it’s important to set unrealistic goals every day so you can push your boundaries. Even though I different thoughts on this patterning method to set realistic goals, I can envision that setting accomplishable goals can be more effective than setting unrealistic goals. This method will result in many failures but that will have many benefits as well when progressing to be a better version of yourself. After reading this pattern I am more aware of the way I now work. I feel the need to go over my failures and evaluate them. I found this pattern useful but very familiar. Even though this pattern was very brief, I still think it’s important for every programmer to review. This pattern made me realize that setting too many goals and I should be more focus on the worthy ones. I didn’t physical do the action exercise, but I don’t the main objective of the activity when reading it. I think the main idea of the action is that error is inevitable. All in all, this pattern learn how you fail is worth reading and change the way I work.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Your First Programming Language

Hi everybody and welcome to another blog post for CS 448 Individual Apprenticeship Patterns. Today topic is going to be about one of the patterns in Individual apprenticeship patterns which is your first language. I learned a lot from this pattern like obtaining my first job will depend on my proficiency in a specific programming language. I started after reading this pattern to focus on one specific programming language which is swift. I chose this language because I been reading other articles and pattern that say to work on something, I going to be passionate about which is creating a fun application. The pattern advised me to become fluent in it, so I been coding problems and reading more about the language daily. I also feel more comfortable after reading this pattern when asking for help. I have always been too embarrassed in the past to ask for help because I felt like I should know how to solve the problem but now I will try to be more open with some of my programming errors but only if I desperately need it. The pattern talks about playing around in an environment with topics that I’m unfamiliar with which I totally agree with. XCode has an IDE call playground where I been just messing around with unfamiliar features and language. I have also been reading more about a testing framework after reading this pattern. I found this pattern helpful because I realize that there are many ways, I can improve in my programming skills. I learned that my first language is very important as a beginner programmer because the first language is going to be my building block for my career and foundation for future language that I will soon be learning. I think after reading this pattern your first language I really change the way I work and code. I have been more motivated to get a strong understand of the language I decided to invest in the most. I found this pattern interesting and I never knew the importance of the first language before because I been using every language and wasn’t focusing on a specific language which causes me to be decent in all of them instead of being proficient in one. All in all, this pattern was very inspiring.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Practice, Practice, Practice

Hi everyone and welcome to another blog post for CS 448. Today topic is going to about the first pattern I’m going to discuss from the apprenticeship patterns which is Practice, Practice, Practice. I choose this to be my first pattern to discuss because I feel like this is what I need more than anything to consistently do to become a better my programmer. This pattern makes me think about how I am practicing programming. I feel like I am practicing just to get better at it which feels more like a chore but after reading this I think I must find a way to fall in love with the practice. The pattern talks about that mostly practice is usually done in work and that’s where we make most of our mistake and we should find ways to separate the two. I couldn’t really relate to this because I never work for a company before, but I feel more confident and less scared when thinking about working for a company one day because it seems like many are learning as they are working in the field. I like that they said that beginners learn from doing and not through lecture because I feel like I am still a beginner and I been practicing the wrong way because I would be listening to lectures more than I should be coding. The pattern gave some great tips on how to practice that change the way I perform now. I will now code more and try to find an environment to code more relax so I can get the most benefit from the practice. I agree with mostly with this because when I first started programming most of the problems that I was doing stress me out because I was trying to meet the deadline and I didn’t really feel like I was learning that much. Everything felt like a blur but when I wasn’t in class no more and started to do and read the book in my own free time, everything started to click so I think is somewhat true. I think the problem is for me is that I not choosing interesting problems or project to practice on, and I will now try to find something I passionate and start working on and develop good techniques. I will also after this to code in an environment where I won’t develop bad habits. All in all, this after this pattern, it changes the way I program now. I learn that I should love practice and not just don’t because I must. There’re many projects that I have in mind that would be to work on. I think this was probably the most important pattern to read and understand.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Week 1 & 2 Blog Posts

Hi everyone and welcome back to my first blog post back for CS 448. Today topic is about my thoughts on the book Apprenticeship Patterns by Adewale Oshineye and Dave Hoover. What I thought first from reading the introduction was that I feel like I can relate to Dave story. I never really stop programming since I started but there are many times I wanted too bad because I was having difficulty learning and understanding it. Dave mentioned in his story it wasn’t until he was 26 and found two mentors that his first language finally stuck, and I thought to myself that I was going the right path. I understand programming but I’m not where I want to be yet. I learned that it’s important to pick the brains of other fellow programmers and find mentors to help you through the process of learning to program. Before I was a little shy and embarrassed to ask for help because I didn’t want to appeared stupid but now, I know that many go through the same phase as me and you should always seek help when needed because of it same a lot of time and effort than trying to crack the problem yourself. I also have a new understanding for my role as an Apprentice and after reading the introduction of the book I think I’m a little more motivated because I know what I need to do to improve in my field. Before I was to rely on the school material to get me where I should be, but I think now that school materials can get me so far and I should be more active in programming and get more involved with other projects besides school projects. I love chapter 2 because gave some great advice in programming. I learned that you should have programming that you should be fluent in. Also, this chapter also gave a tip to also ask for help when needed but it’s important to try to solve some problems because it helps us grow as a programmer. Chapter 3 gave to the bits of advice to follow my own plan and that everyone has a different path in their journey to become a master software craftsman. Chapter 4 gave me the pieces of advice to surround myself with people that are better than me because it makes me work harder to learn more.  I never really thought about, but this is true because you are who you are around with. Chapter 5 gave me the advice to figure ways to absorb more information efficiently. Chapter 6 gave me the advice to manage my reading and how important it is. I usually never read any books I don’t was assigned but after readings this part book I would be reading a lot more and keeping track of them too. All in all this book was very helpful and change the way I will how to program.

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Task 1: Blog Set-up

CS 448 setup blog post

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Test Doubles — Fakes, Mocks and Stubs.

Hello everyone and today’s topic for my final blog post for 443 is going to be about test double in software testing. In this article they discuss three implementation variations of testing doubles which are fake, stub and mock and gives examples when to implement them. I know from class that they are missing at least one more test double which is dummies so I’m thinking these three fake, stub, and mock are mainly used. First, fake is defined as the same as the activity we work on in class which is “fake are objects that have working implementations, but not same as production one. Usually they take some shortcut and have simplified version of production code”. A good analogy of a short cut is a repository. Fake implementation will not be involved database but will store data using a collection which allows us to not start up the database and save more time from request when involving with integration testing. Fake implementation is also great for prototyping and spikes. Second is stub and this defined the same as the activity we work on in class too which is “stub is an object that holds predefined data and uses it to answer calls during tests. It is used when we cannot or don’t want to involve objects that would answer with real data or have undesirable side effects”. An example would be instead of grabbing from the database where design a stub like a method and controlling it’s return value. Stubs is a good option for testing query type methods which are “methods that return some result and do not change the state of the system” because you can confirm the return value of the method. Finally, mocks are “objects that register calls they receive. In test assertion we can verify on mocks that all expected actions were performed”. A good example of mock that they give is when you want to test a system like a security system that check if the window and door is closing in order for the security system to work, you don’t actually want to call the real door and window instead you can create mock window and door to test the interactions to see the functionality of the security system because the closing is a responsibility of the door and widow and that should be tested separately in unit testing. All in all, these are the test doubles they discuss in this article stub, mock, and fake and they are all make software testing much simpler.

https://blog.pragmatists.com/test-doubles-fakes-mocks-and-stubs-1a7491dfa3da

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Differences between the different levels of tests

In these 443 blogs post I am going to write about the differences between the different levels of tests. There are four basic levels of tests which are unit/component testing, integration testing, system testing, and acceptance testing. Unit testing when you separate each part of the program and test them individually and confirm that they perform what they were design to do. This is usually done in the beginning of the development and usually done by the developer first than hand over to the testing team. Integration testing is when you break the program into combinations and test if they actually work together. This exposes any flaws that show if the components don’t work together or not. There are many ways this can be tested, bottom up or top bottom. System testing is one of the higher levels of testing. It’s when you test the whole program to ensure that it all work properly and meets the requirements. This is one of the most important steps before deploying the product and it confirm that the product is almost ready to ship. This can be tested in an area where user can test the product. This usually done when a special testing team to see if the product fulfills its requirements for the business. Acceptance testing is involving a lot of user end. Acceptance testing test whether the system complies with the user end. This step is to find out many different problems that can occur like bugs that can harm the product in anyway. During this step you can find out if the program will be installed or not into the user’s system. Every single of these testing levels is important and testing early to avoid error in the future and testing for often is well worth it. This important because finding and fixing errors near the finishing stage which be more difficult and more time consuming than finding them early. All in all, these four levels of tests are important, and I learned more about those four after reading this article. It changes the way I work because I know the importance of the levels and what to do in those levels.

https://reqtest.com/testing-blog/differences-between-the-different-levels-of-tests/

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.