Category Archives: Week 11

The Deep End

Hello and welcome back to another week of my blog. This week, I looked through chapter 2 of the book Apprenticeship Patterns by Dave Hoover named “Emptying The Cup” and took interest in the apprenticeship pattern called “The Deep End.” This pattern is about pushing yourself out of your comfort zone and taking on challenging tasks that are outside of your current skill set. The best way to learn is by doing, and that taking on tasks that are beyond your current abilities can help you grow and develop new skills. The pattern advises that when you are in the “deep end,” it’s important to ask questions and seek help from more experienced colleagues. It’s also important to break down your tasks into smaller, more manageable pieces and to focus on making small incremental progress over time. The benefits of taking on tasks in the “deep end” include accelerated learning, increased confidence, and the opportunity to demonstrate your abilities and potential to your colleagues and mentors.

As a computer science apprentice, it can be scary to go into the “deep end” since you may think you would be a totally lost person working with experienced people. But I have experienced the deep end myself many times in my everyday hobby, video games. This seems to happen the most especially in competitive video games, when you play with people who are more skilled than you, you start to pick up on the many small helpful habits highly skilled players tend to do. The skilled players don’t need to think about the small habits because they have already mastered them and do them out of muscle memory. The same can be said for computer science apprentices. For a scenario, think about working on a difficult project with more experienced people in the field. You may look like a small fry with not that much experience compared to the others, but this is actually a fantastic opportunity to observe your team members and pay attention to small things and habits like their thought process for example. As you focus on the small habits, you also start to copy those habits and incorporate them into your work as well. This would also be a great opportunity to ask questions if you are confused about anything. I will for sure start diving into the deep end if I find any opportunities to since it will strengthen my skills as a computer science major.

From the blog Comfy Blog by Angus Cheng and used with permission of the author. All other rights reserved by the author.

The Deep End

Hello and welcome back to another week of my blog. This week, I looked through chapter 2 of the book Apprenticeship Patterns by Dave Hoover named “Emptying The Cup” and took interest in the apprenticeship pattern called “The Deep End.” This pattern is about pushing yourself out of your comfort zone and taking on challenging tasks that are outside of your current skill set. The best way to learn is by doing, and that taking on tasks that are beyond your current abilities can help you grow and develop new skills. The pattern advises that when you are in the “deep end,” it’s important to ask questions and seek help from more experienced colleagues. It’s also important to break down your tasks into smaller, more manageable pieces and to focus on making small incremental progress over time. The benefits of taking on tasks in the “deep end” include accelerated learning, increased confidence, and the opportunity to demonstrate your abilities and potential to your colleagues and mentors.

As a computer science apprentice, it can be scary to go into the “deep end” since you may think you would be a totally lost person working with experienced people. But I have experienced the deep end myself many times in my everyday hobby, video games. This seems to happen the most especially in competitive video games, when you play with people who are more skilled than you, you start to pick up on the many small helpful habits highly skilled players tend to do. The skilled players don’t need to think about the small habits because they have already mastered them and do them out of muscle memory. The same can be said for computer science apprentices. For a scenario, think about working on a difficult project with more experienced people in the field. You may look like a small fry with not that much experience compared to the others, but this is actually a fantastic opportunity to observe your team members and pay attention to small things and habits like their thought process for example. As you focus on the small habits, you also start to copy those habits and incorporate them into your work as well. This would also be a great opportunity to ask questions if you are confused about anything. I will for sure start diving into the deep end if I find any opportunities to since it will strengthen my skills as a computer science major.

From the blog Comfy Blog by Angus Cheng and used with permission of the author. All other rights reserved by the author.

Blog #1

The pattern I chose for the blog was the first one titled, “Your First Language”. The pattern is about the process of starting off learning your first programming language and how to progress past that. The solution was to pick one language and spend a couple of years learning it to become fluent. The pattern then went on to mention that  it can be hard to pick just one, and gave some tips on how to choose.

I thought the pattern was great because so many people have trouble trying to decide on what their first programming language to learn should be, and this really does help lay a great groundwork for what they should be doing now in the beginning. The pattern even helps with deciding which language to start learning first, by weighing the options with you. I did not feel like this pattern was not really for me to learn as I have already gone through this process in my first years of college, and am past this point in my learning by now. I feel like this pattern is perfect for somebody just starting their first year as a computer science major in this school, and could really help them pick out what they should be doing.

I definitely agree with the advice given as instead of trying to learn multiple languages at once, new people should really try to become proficient in one language, and that in turn will make learning new languages easier. This is due to the fact that starting your first language requires more time to learn the basics of what to do with the language, while with all the languages afterwards, it is sort of like translating what you already know most of the time. I think people new to programming really need to take this advice, and they will be set on the road to success.

This pattern was about how to start off learning your first programming language, and how to decide which language to learn. It did not teach me much as a computer science senior, but I feel like it would really help people in their freshman year. This was a great first pattern to read, and I can not wait to see what I can learn from the ones coming up after this.

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

All About The Principle of Least Knowledge

The Principle of Least knowledge also called the law of Demeter, as explained in Eric Feminella’s blog “Principle of Least Knowledge”, is a design principle that provides guidelines for designing a system with minimal dependencies.  It is summarized in short as “Only talk to your immediate friends.”

A client should have knowledge of an object’s member, and not have access to properties and methods of other objects via the members.

The example shown in the blog has three classes: ClassA, ClassB, and ClassC. ClassA has an instance member of type ClassB and ClassB has an instance member of type ClassC. This shows that all the classes are connected one by one, and this can be extended further ClassC if need be. Now believe it or not this example violates The Principle of Least Knowledge because it creates multiple dependencies, thus reducing the maintainability because if ClassA needs some work so would all the instances of ClassA. This creates like a domino effect and keeping up with the client could pose some trouble.

Now, like the blog explains, in software development there might be some trade-offs. If the program runs better optimally with the above method, then maintenance might need to be pushed aside for just that. But it’s an important goal for the software developer to minimize dependencies, and by following guidelines provided by The Principle of Least Knowledge this becomes much easier to accomplish.

The Principle of Least knowledge is very important when it comes to coding because when it comes to programming a client itself, it becomes very easy to callback other dependencies to make things easier. But this creates more classes that, in a before blog would be referred to as “master classes” and more redundant code is created, and other dependencies are brought into the mix.

In code it seems like it’s better off if some classes don’t know the inner working of their other class, I’ve seen many programs break entirely because of one class. These classes are dependent of other classes. When one class falls all the other classes fall with it. So, It’s important to implement these dependencies so that they can be changed easily. And it’s also remembered to implement in such a way that they don’t require these chains of dependencies involved. All in all, it’s best to create a program that easy to modify and refactor so that the code is easy to work with in future development.

Link to Blog: http://www.ericfeminella.com/blog/2008/02/02/principle-of-least-knowledge/

From the blog CS@Worcester – FindKelvin by Kelvin Nina and used with permission of the author. All other rights reserved by the author.

Refactoring

Refactoring is an important concept in software development
that refers to the process of modifying and improving the internal structure of
existing code without changing its external behavior. This can be a useful
technique for improving the readability, maintainability, and performance of a
codebase, and it is often an essential part of the software development
process.

There are many reasons why a developer might choose to
refactor their code. One common reason is to improve the readability and
understandability of the code. Over time, as a codebase grows and evolves, it
can become difficult to understand and maintain. Refactoring can help to clean
up the code and make it more organized and easier to read. Another reason to
refactor code is to improve its maintainability. As a codebase grows and
changes, it can become more difficult to make updates and modifications without
introducing bugs or breaking existing functionality. Refactoring can help to
make the code more modular and flexible, which can make it easier to make
changes and updates without breaking the code. Refactoring can also be used to
improve the performance of a codebase. As code is written and optimized, it can
sometimes become inefficient or slow. Refactoring can help to identify and
remove bottlenecks, and to optimize the code for better performance.

I chose this blog post on refactoring because it is a
crucial concept in the field of computer science. As I read through the post, I
found it to be very informative and well-written. The post clearly explained
what refactoring is and described the various benefits it offers, such as
improving readability, maintainability, and performance. I found the discussion
of different techniques for refactoring code particularly interesting.
Techniques like extracting methods or functions, renaming variables and
functions, and restructuring code can all be effective ways to make code more
modular, readable, and maintainable. I also appreciated the emphasis on maintaining
the external behavior of the code during refactoring. This is something I will
keep in mind as I continue to learn software development. Although refactoring
wasn’t required in this class, I plan to use what I learned on future projects
and when working with others on a team. I will refer to this resource as I
continue to improve my skills and knowledge in the field.

Source:

https://maddevs.io/blog/code-refactoring/

 

From the blog Zed's Blog by Lord Zed and used with permission of the author. All other rights reserved by the author.

Refactoring

Refactoring is an important concept in software development
that refers to the process of modifying and improving the internal structure of
existing code without changing its external behavior. This can be a useful
technique for improving the readability, maintainability, and performance of a
codebase, and it is often an essential part of the software development
process.

There are many reasons why a developer might choose to
refactor their code. One common reason is to improve the readability and
understandability of the code. Over time, as a codebase grows and evolves, it
can become difficult to understand and maintain. Refactoring can help to clean
up the code and make it more organized and easier to read. Another reason to
refactor code is to improve its maintainability. As a codebase grows and
changes, it can become more difficult to make updates and modifications without
introducing bugs or breaking existing functionality. Refactoring can help to
make the code more modular and flexible, which can make it easier to make
changes and updates without breaking the code. Refactoring can also be used to
improve the performance of a codebase. As code is written and optimized, it can
sometimes become inefficient or slow. Refactoring can help to identify and
remove bottlenecks, and to optimize the code for better performance.

I chose this blog post on refactoring because it is a
crucial concept in the field of computer science. As I read through the post, I
found it to be very informative and well-written. The post clearly explained
what refactoring is and described the various benefits it offers, such as
improving readability, maintainability, and performance. I found the discussion
of different techniques for refactoring code particularly interesting.
Techniques like extracting methods or functions, renaming variables and
functions, and restructuring code can all be effective ways to make code more
modular, readable, and maintainable. I also appreciated the emphasis on maintaining
the external behavior of the code during refactoring. This is something I will
keep in mind as I continue to learn software development. Although refactoring
wasn’t required in this class, I plan to use what I learned on future projects
and when working with others on a team. I will refer to this resource as I
continue to improve my skills and knowledge in the field.

Source:

https://maddevs.io/blog/code-refactoring/

 

From the blog Zed's Blog by Lord Zed and used with permission of the author. All other rights reserved by the author.

Refactoring

Refactoring is an important concept in software development
that refers to the process of modifying and improving the internal structure of
existing code without changing its external behavior. This can be a useful
technique for improving the readability, maintainability, and performance of a
codebase, and it is often an essential part of the software development
process.

There are many reasons why a developer might choose to
refactor their code. One common reason is to improve the readability and
understandability of the code. Over time, as a codebase grows and evolves, it
can become difficult to understand and maintain. Refactoring can help to clean
up the code and make it more organized and easier to read. Another reason to
refactor code is to improve its maintainability. As a codebase grows and
changes, it can become more difficult to make updates and modifications without
introducing bugs or breaking existing functionality. Refactoring can help to
make the code more modular and flexible, which can make it easier to make
changes and updates without breaking the code. Refactoring can also be used to
improve the performance of a codebase. As code is written and optimized, it can
sometimes become inefficient or slow. Refactoring can help to identify and
remove bottlenecks, and to optimize the code for better performance.

I chose this blog post on refactoring because it is a
crucial concept in the field of computer science. As I read through the post, I
found it to be very informative and well-written. The post clearly explained
what refactoring is and described the various benefits it offers, such as
improving readability, maintainability, and performance. I found the discussion
of different techniques for refactoring code particularly interesting.
Techniques like extracting methods or functions, renaming variables and
functions, and restructuring code can all be effective ways to make code more
modular, readable, and maintainable. I also appreciated the emphasis on maintaining
the external behavior of the code during refactoring. This is something I will
keep in mind as I continue to learn software development. Although refactoring
wasn’t required in this class, I plan to use what I learned on future projects
and when working with others on a team. I will refer to this resource as I
continue to improve my skills and knowledge in the field.

Source:

https://maddevs.io/blog/code-refactoring/

 

From the blog Zed's Blog by Lord Zed and used with permission of the author. All other rights reserved by the author.

Refactoring

Refactoring is an important concept in software development
that refers to the process of modifying and improving the internal structure of
existing code without changing its external behavior. This can be a useful
technique for improving the readability, maintainability, and performance of a
codebase, and it is often an essential part of the software development
process.

There are many reasons why a developer might choose to
refactor their code. One common reason is to improve the readability and
understandability of the code. Over time, as a codebase grows and evolves, it
can become difficult to understand and maintain. Refactoring can help to clean
up the code and make it more organized and easier to read. Another reason to
refactor code is to improve its maintainability. As a codebase grows and
changes, it can become more difficult to make updates and modifications without
introducing bugs or breaking existing functionality. Refactoring can help to
make the code more modular and flexible, which can make it easier to make
changes and updates without breaking the code. Refactoring can also be used to
improve the performance of a codebase. As code is written and optimized, it can
sometimes become inefficient or slow. Refactoring can help to identify and
remove bottlenecks, and to optimize the code for better performance.

I chose this blog post on refactoring because it is a
crucial concept in the field of computer science. As I read through the post, I
found it to be very informative and well-written. The post clearly explained
what refactoring is and described the various benefits it offers, such as
improving readability, maintainability, and performance. I found the discussion
of different techniques for refactoring code particularly interesting.
Techniques like extracting methods or functions, renaming variables and
functions, and restructuring code can all be effective ways to make code more
modular, readable, and maintainable. I also appreciated the emphasis on maintaining
the external behavior of the code during refactoring. This is something I will
keep in mind as I continue to learn software development. Although refactoring
wasn’t required in this class, I plan to use what I learned on future projects
and when working with others on a team. I will refer to this resource as I
continue to improve my skills and knowledge in the field.

Source:

https://maddevs.io/blog/code-refactoring/

 

From the blog Zed's Blog by Lord Zed and used with permission of the author. All other rights reserved by the author.

Refactoring

Refactoring is an important concept in software development
that refers to the process of modifying and improving the internal structure of
existing code without changing its external behavior. This can be a useful
technique for improving the readability, maintainability, and performance of a
codebase, and it is often an essential part of the software development
process.

There are many reasons why a developer might choose to
refactor their code. One common reason is to improve the readability and
understandability of the code. Over time, as a codebase grows and evolves, it
can become difficult to understand and maintain. Refactoring can help to clean
up the code and make it more organized and easier to read. Another reason to
refactor code is to improve its maintainability. As a codebase grows and
changes, it can become more difficult to make updates and modifications without
introducing bugs or breaking existing functionality. Refactoring can help to
make the code more modular and flexible, which can make it easier to make
changes and updates without breaking the code. Refactoring can also be used to
improve the performance of a codebase. As code is written and optimized, it can
sometimes become inefficient or slow. Refactoring can help to identify and
remove bottlenecks, and to optimize the code for better performance.

I chose this blog post on refactoring because it is a
crucial concept in the field of computer science. As I read through the post, I
found it to be very informative and well-written. The post clearly explained
what refactoring is and described the various benefits it offers, such as
improving readability, maintainability, and performance. I found the discussion
of different techniques for refactoring code particularly interesting.
Techniques like extracting methods or functions, renaming variables and
functions, and restructuring code can all be effective ways to make code more
modular, readable, and maintainable. I also appreciated the emphasis on maintaining
the external behavior of the code during refactoring. This is something I will
keep in mind as I continue to learn software development. Although refactoring
wasn’t required in this class, I plan to use what I learned on future projects
and when working with others on a team. I will refer to this resource as I
continue to improve my skills and knowledge in the field.

Source:

https://maddevs.io/blog/code-refactoring/

 

From the blog Zed's Blog by Lord Zed and used with permission of the author. All other rights reserved by the author.

Refactoring

Refactoring is an important concept in software development
that refers to the process of modifying and improving the internal structure of
existing code without changing its external behavior. This can be a useful
technique for improving the readability, maintainability, and performance of a
codebase, and it is often an essential part of the software development
process.

There are many reasons why a developer might choose to
refactor their code. One common reason is to improve the readability and
understandability of the code. Over time, as a codebase grows and evolves, it
can become difficult to understand and maintain. Refactoring can help to clean
up the code and make it more organized and easier to read. Another reason to
refactor code is to improve its maintainability. As a codebase grows and
changes, it can become more difficult to make updates and modifications without
introducing bugs or breaking existing functionality. Refactoring can help to
make the code more modular and flexible, which can make it easier to make
changes and updates without breaking the code. Refactoring can also be used to
improve the performance of a codebase. As code is written and optimized, it can
sometimes become inefficient or slow. Refactoring can help to identify and
remove bottlenecks, and to optimize the code for better performance.

I chose this blog post on refactoring because it is a
crucial concept in the field of computer science. As I read through the post, I
found it to be very informative and well-written. The post clearly explained
what refactoring is and described the various benefits it offers, such as
improving readability, maintainability, and performance. I found the discussion
of different techniques for refactoring code particularly interesting.
Techniques like extracting methods or functions, renaming variables and
functions, and restructuring code can all be effective ways to make code more
modular, readable, and maintainable. I also appreciated the emphasis on maintaining
the external behavior of the code during refactoring. This is something I will
keep in mind as I continue to learn software development. Although refactoring
wasn’t required in this class, I plan to use what I learned on future projects
and when working with others on a team. I will refer to this resource as I
continue to improve my skills and knowledge in the field.

Source:

https://maddevs.io/blog/code-refactoring/

 

From the blog Zed's Blog by Lord Zed and used with permission of the author. All other rights reserved by the author.