Category Archives: Class Tag

Pattern 4

 

PATTERN 5: THE WHITE BELT

I think this was a very informational chapter in the pattern lists. This chapter opened my eyes to the realization of my current situation. We are moving on to angular development for our capstone experience and its seems to be taking me longer to understand and grasp the concept. I had been using mostly java for most of my college programming years and have grown accustomed to the ways and norms of how things are done. But with this new angular task I realized that I had to learn and try to understand more things and even though I am a pretty quick at picking up new technology and understanding them, angular was just taking me long. But after reading this pattern, I understand that developing the deep knowledge and tricks in java and getting accustomed to being able to maneuver around in that specific language caused me to slow down my skill picking ability. Since I didn’t have to pick up much but instead implement and use what I had acquired. I believe and agree with the author of the book to some extent. I cannot just forget all I have learned and start from scratch but I can create a new array mentally that is to be filled with new technologies and languages and also try not to bring up what I already know when learning the new materials. But doing this, I will yearn a humble and fertile mind that will be able to grasp and understand anything that will be thrown at it. Also according to the author, unlearning what you have learnt and forcing yourself to believe in your novice status exponentially accelerates the new learning process and makes it easy to develop new insight and possibilities. I believe that its very important for me to understand that I have to give the new technology time and energy to allow my mind to digest it. And after that I will be able to combine it with my prior acquired knowledge, it is at that point that I can call my self a good programmer. Knowing one technology is good but being able to learn multiple and train your mind to utilize what you have learnt makes you a special programmer!

 

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Pattern 3 : Use The Source

 I found this chapter (pattern) to be another intriguingly good read. It addressed an issue I had questioned a fellow programmer about. I asked him about all these great programmers that have written many prestigious codes and programs. They didn’t have access to these Google sources we are able to consult for help to aid us in figuring out issues and problems. What did they look up when they had issues? Imagine a programing world where you couldn’t Google or look at other great programing works to model out a solution. No open source API’s and frameworks to work with. It would be very difficult to get things done. As the author said, if you don’t look at the works of other that are better than you, you are doomed to continue making your own mistakes and carry on your bad habits. I believe one of my professors made a confession about how much his coding changed for the better after reading the book, clean code. We often forget that we are a generation that strives to continually move forward and the key to doing this is by learning from others mistakes and building upon it so we don’t have to make the same mistakes by so doing, we maximize our time spent on moving forward. The development of one’s programming abilities is not a day’s journey. It takes many years of learning, reading and absorbing varieties of programing techniques and its proper applications. Through your learning, you will begin to develop a keen sense for what is proper and practical. You will also learn to understand the decisions and thought processes that goes into all the good programming works. Programming remains an art that needs to mastered and the more you are exposed to others exhibits and what the experts think about them, the more you will learn, see and inspire you own artistic sense. Although not to be confused with mimicking, we need to understand that everyone has their own niche that they will have to carve but this will result from being exposed to many programing’s forms and finding the one that works for you.

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Sprint 1

Team Retrospective – Sprint 1

 

I think this was a very important sprint because it introduced me to my teammates and it also showed me a little bit of what I can expect from my team during this project. During this sprint, we were to learn about angular tests and how to implement them, clone the project that was to be worked on, run the project and ensure that it built successfully and also make sure we were able to log into the program and kind of get a feel for the program’s UI ( User interface). Most of these tasks were accomplished and throughout the process, I was able to learn a bit more about my team. There were a few that reached out to us when we had issues and others even stepped up sent group messages text messages to ensure we were on track and slack messages when they came up with solutions and answers we didn’t have. Also I made sure to emphasize on creating a good working environment and a relaxed atmosphere for every one to feel comfortable and casual. I accomplished this by starting conversations and asking how everyone was doing whenever we had team meetings. Overall, I think we have a really good group and can get a lot accomplished this year because although there is some room for improvement, we already have pretty good team communication. As for actual work that was done, I think there was a very steep learning curve that had to be covered. I remember in previous classes, we did projects with angular and typescript but the tasks that were completed didn’t go into details as much as this project does. I think one of the issues that stands out the most is all the issues I had with the various angular dependencies. But luckily, one of our teammates was pretty comfortable with angular and was able to offer help when i needed. There were times we contemplated building the project on one system and making sure it was running there, then we were going to clone it into our team’s repository and get everyone to pull from that repository. This we hope was going to eliminate most of the error but we were wrong and after many research, we figured doing it independently on each machine would expose us all to many things that would be helpful to know. It would also add to our already limited angular knowledge.  Overall, it was a good sprint and I think most of what we set out to do was accomplished and I know lot more angular that I did a few weeks ago. Looking forward to the year!

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Use Your Title : Pattern 2

In this pattern, the author presents the issue of people getting moved into different roles due to their dedication to mastering their crafts and art.  usually when you become outstanding and put in time to better and help you team improve you begin to create a chain reaction of quality standards that either get matched by your peers who in turn become better programmers or you are put in a position to defend your processes and methods. ON the management level , this will serve as a sign that moves you to a leadership role or position in the company. It is at this point that the author wants us to understand that we do not need to conform to the pressure around us. As a software craftsman, you are to remain that and continually improve your craft without breaking into the distractions around you. we are not to allow ourselves to be controlled or changed by our title but we are to leave it at the outskirts of our consciousness. Once in such a position, do not be swayed by the positions descriptions and demands but instead use that as a gauge to assess your organization. If you were noticed due to you outstanding qualities, hard work and knowledge, it should serve as a sign for you to evaluate how well the organization seeks for growth and progress. On the other hand if you are not recognized although you are still exerting these qualities, that should also paint a picture of where the organization is headed. Everyone wants to be recognized when they do things that are deemed to be recognized so an organization that fails to recognize this often lose out on the talents of such a person. whiles companies that pay notice to things like that keep acquiring people of such traits. Another possible scenario that often results from this trend is the differentiation of both informal versus formal titles.Many times employees begin to grown into a positions of authority on teams, despite their formal title remaining the same. Growth into positions of authority booms with familiarity with the job, development of skills and an overall understanding of the specific companies processes and task. The more you understand, the more you can explain and the more you are familiar with a process, the better you understanding of it. 

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Pattern 1 : Your first language

 

This pattern talks about the biggest step for every “programmer”. I mean i can also say you need to take this step before you are given the title of a programmer. After reading the section above this pattern which addressed emptying your cup before receiving more, i found it very easily cohesive with the content of this pattern. Programming is almost like nothing you have done before. But its only when you begin to understand it, that you begin to see how in tune it is with things that we do everyday unconsciously.  I agreed with how the author addressed this chapter. Unless you open your mind to accept new understanding and insight, grasping the concept of programming as a whole becomes almost impossible. The only way to truly excel at this craft is to dedicated your entire life as a programmer to the cause of learning and improving everyday regardless of how much you know. because for all you know, a new language can erupt tomorrow and render your task and routine of today, obsolete. Everyday you sit down to program you have to be yielding to learn and grown because there can be a new framework that came out yesterday that can make your life a lot easier as long as you know how to implement it. To better implement new techniques and methods will ultimately depend on your understanding of the basics of programming. And your understanding of the basics and fundamentals can be attributed to your in dept understanding of your first  language and the tasks you used it for. But once you have acquired this knowledge do not allow yourself to be bound by this knowledge but instead use it as fuel to attain new heights in the programming world. Every task that you are able to complete or solve should fuel you to learn the next thing in line. Programming is one of those things that theoretical knowledge only goes a distant. Using the knowledge to build, solve and overcome new challenges broadens one’s understanding of the art and this is the path that leads to greatness. The learning curve of a particular framework or technology grows exponentially in regards to the task and problems it is used to fixed.

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman- Chapter 1

Woah !, I really enjoyed reading the book , Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman. I have read many books and been in the software-learning role for a while but this book spoke entirely about how I had been seeing this field and how i felt it should be done. I am very emotionally connected to this life craft. I am currently a CS student and like this author, it wasn’t until my junior year in college that I began to see a future with this program for me. I had excelled in class and managed to perform okay but when I I tried to create new project for myself to work on, I found my self always hitting a blank wall. It wasn’t till last summer that I figured what was going on. I was studying how to program like it was a task to be done instead of a skill that needed to be cultivated. When attempting to cultivate a land there are many steps that has to be taken. The soil has to be prepped, and catered for the incoming crops. Everyone wants to be great at programming but you can’t expect a 3 year old to read a college level book. In programing, the gap between the proficient and beginner is so large but unlike ages and height, its not easily noticeable. Its it only when you decide to create something from scratch that’s when you realize and begin to appreciate the people who were able to build Operating systems and large software programs from scratch. This goes to prove the apprenticeship of the software journey. Those people that are able to do that, often don’t hold very high degrees when they were building those programs instead they invest time and dedicate their efforts into making a change by creating and developing something that will benefit the world. From this reading I do agree and believe that one has to invest time, sweat and effort into learning the art of thinking like a programmer. It is only then can you start to see what they can see and think like they can. In programming, if you can’t see and logically make the connection, it’s almost impossible to create. Teaching an individual what to see and how to interpret it takes time and is also greatly individualized. Just like apprenticeship, everyone has their own pace and cognitive strength and moving forward should only be allowed when what is needed is grasped. In a perfect world, everyone that graduates in software development should be able to code quiet adequately but such is not life and I believe and agree with this book in the sense that if you should approach software development as a personal piece of art that continually needed to be perfected, you will become a successful programmer.

 

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Ministry of Testing Podcast

The Philosopher and the tester

In this episode of the ministry of testing, Israel Alvarez talks about his transition from a philosopher background to becoming a QA tester. He believes there is a lot of positives from his philosophy background that has helped his career as a software context driven tester. Philosopher raises topics and concepts that forces you to think and so does testing so it was fairly relatable and easy to apply his acquired skills from philosophy. Being able to critically think is key to becoming a great QA tester. Knowing what to test for and how to test for makes this arguably one of the hardest things to do. Often as a tester, you have to analyze your own thinking, many times risking the analysis paralysis syndrome. As a math and philosophy major, Israel was always faced with problems that often didn’t have plan cut simple solution so he always had to try and apply what he had learned to get the job done with thinking outside the box. That’s what makes testing so hard. Its easy to come up with some things to test in a code or program but finding out things that need to be tested requires a thorough understanding of the product or software that is being developed. You often need to understand it even more than the creators of the product. They only way you can adequately test a product is to find its boundaries, applications and purposes and see what you can do to challenge these thing or break them. In a start up for instance, there are deadlines, scope changes and many challenges’ that testers have to endure. Proving your value as a tester is very important in the early stages of testing. Learning to articulate and defend ones view, as a tester is an essential skill that every tester needs to have to grow. This is a major challenge because developers often have to prove their point and findings to the programmers. Programmers often have strong views and passion for their work and in order to properly nit pick and criticize defect or bug that is in their work, you need to be able to establish yourself and emphasize overall product quality in your defending’s. As a tester, developers often have stressed feelings towards your work. It’s just the nature of the job as a QA manager or tester. It’s your job to ensure that the developers have put out the best possible product or software they can produce.

 

Source

https://soundcloud.com/ministryoftesting/the-philosopher-and-the-tester-israel-alvarez

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

Episode 33 —Testing in Data Science

In this week’s testing podcast episode, Brian explores testing in data science with the famous Katharine Jarmul. Katharine is a expert in data science and machine learning. She mainly uses python to write unite tests for her projects. I picked this podcast because after listening to this, I learned more about how to put together testing teams, how to manage and direct traffic in a testing team and how to be the driving force for success in the team. According to her, no matter how much we know as a team, with each testing project, we need to bring together all our resources and ideas. Testing often goes out of the scope of what is considered the norm. This is because in testing, we normally try to find the boundaries and limits if products and software. As a teacher and owner of a consulting company, Katharine often spends her days developing testing strategies that requires the implementation of new and modern testing technologies such as Integrating QA through agility and TCoE , Higher Automation Levels with a focus on security and Context driven testing.

 

Integrating QA through agility and TCoE

Though agile development teams have been around for a long time, agility in testing is still nascent. With the continuous pressure to quickly deliver software, businesses are investing time and money into setting up a TCoE with the objective of reducing CoQ, increasing test effectiveness and generating more ROI out of testing. From 2011 to 2014, the number of operational TCoEs has increased from 4% to 19% and is expected to increase further in the future.

 

Higher Automation Levels with a focus on security

System robustness and security has always been a top priority but with growth in social media and mobility and need for software that can be integrated to multiple platforms, systems are becoming more vulnerable. There is a pressing need to ensure enhanced security, particularly in applications handling sensitive data. This is causing QA to focus more on security testing.

 

Context driven testing

The challenge for businesses to maintain central hubs of hardware, middleware and test environments necessary to comprehensively test them has caused context driven testing to become more popular as it ensures more testing coverage from diverse angles. It is expected that this will impact skill development among testers, as there will be more demand for testers with exposure to different contexts.

 

Sources

https://testingpodcast.com/33-katharine-jarmul-testing-in-data-science/

http://www.cigniti.com/blog/top-7-trends-in-software-testing/

 

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

#6 – Testing Talks

Testing Talks – Episode 169 With JeanAnn Harrison.

 

In this week’s testing podcast episode, Joe interviews JeanAnn, a Software testing manager who has been in the software quality assurance field for over 2 decades. JeanAnn begins by addressing techniques and best practices that make for a fluid testing process. I chose this particular episode because JeanAnn addressed automation in testing and critical thinking in testing. With the development of modern technology, software automation is the next big thing in the world today.

Another big thing she talked about was critical thinking. Critical thinking often refers to the ability to try different thought processes and develop new methodologies to achieve an already familiar goal. The ability to think outside the box, pushing yourself to look at things in a different way. To evolve ones thinking ability in testing, we can try to look at things outside the software-testing field. By doing this, one is able to develop logical means that are often necessary to find product boundaries and limits. Asking yourself questions like how? , when? , what ? , where ?. These simple questions often answers most of the questions for the software testers and help develop solutions and bugs that need to found. By asking these questions, you are able to see how the software or product could be integrated into computer systems, the kind of problems that can arise by implementing the new product/technology and what can be done to resolve issues should they arrive. Another big thing that she addressed was understanding software’s users and customer base. Developing apps and programs without expected audience leads to many problems in the software world. Imagine developing a mobile application for 70 year olds but its integrated into the latest iphone technology. This would not work out because most of the people in that range no longer have the ability to adapt to new technology or even use a cellular device. Again imagine developing a walker for blind people which has an activation switch installed on the side with an on and off reading. This will be physically challenging and difficult for the blind to optimally use the product. It might be the best product that all blind people needs but its inability to incorporate and account for the blind would instantly make it a bad design or a bad product to acquire. Simply put if you know your user base, you are able to find out what needs to be designed for the product to properly fit the needs of the users and customers.

 

 

LINK

 

https://testingpodcast.com/169-critical-thinking-in-testing-with-jeanann-harrison/

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.

#5– Episode 67

Episode 67 – Object Oriented Mistakes

Presented by Joe Zack, Michael outlaw and Allen Underwood, the group addressed many object-oriented mistakes that coders often make. I found this to be an interesting podcast because like many of us upcoming coders, we are taught mistakes that cause problems when attempting to develop in an object-oriented environment. From the previous design patterns episode, we were able to understand the best situations and the proper design pattern that should be used. For example when using domain designs, we have learned not to use domain anemic models. Before we continue, anemic model is the use of a software domain model where the domain objects contain little or no business logical validations, calculations, business rules etc. These are typically called bags of properties with getters and setter without any kind of behavioral type method. The domain model objects cannot therefore guarantee their correctness in any moment due to lack of validation and mutation logic which is usually placed somewhere outside the class being addressed. One would ask, why is this considered an anti-pattern in todays programming world, well first of all, it disrupts the concept of object-oriented design. This design contracts what is implemented when on opts to use the object oriented design. Object orientation allows objects to have states and sessions but anemic causes stateless objects. It is great for just a simple application because there is a clear separation between logic and data unlike object oriented programing. Simple applications also do not require a ton of logic to be implement. They do not need methods with behavioral code in them. After this point, Micheal spoke of another anti-pattern. This pattern was known as the base bean anti-pattern. This is when you inherit functionality from a utility class instead of delegating to that utility class. The issue associated with this practice is that defeats the purpose of inheritance. Inheritance is used for the wrong reasons. The main purpose of inheritance is to create a hierarchical order in which code information can be managed and understood. Wrong implementation of inheritance disrupts object properties and class properties. Overall, design patterns are created for incoming developers and even intermediate developers to have a guide that can be used as a reference. Thy provide us with a way to getting things resolved or better yet, the first solution that solved the problem. It is up to every developer to learn beyond that and recognize how they can utilize the already laid out platform to their own coding needs and development.

 

 

 

Source

https://player.fm/series/coding-blocks-software-and-web-programming-security-best-practices-microsoft-net/episode-67-object-oriented-mistakes

https://en.wikipedia.org/wiki/Anemic_domain_model

 

From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.