Category Archives: Week 8

Pattern “Kindred Spirits”

This week, I will be discussing “Kindred Spirits” from Apprenticeship Patterns by Adewale Oshineye and Dave Hoover. It is intuitive to surround yourself with people that are likeminded, trying to achieve the same goal. I wanted to read this section to know if I was going around it the right way.

I went into this wondering if they meant having good relationships with coworkers and classmates. It is always valuable to have a friend to ask for help, but it is not the whole picture. It is something that needs to be actively pursued.

The authors recommends joining or creating a group to foster your interests.  It seems that I am somewhat on the right track. I feel that I am pursuing this in my extracurricular activities. Currently, the only computer science group that I am actively engaged in is the Worcester State Computer Science Club (Re:coded, I think the official name is).

It encouraged me that the club they mentioned, Extreme Tuesday Club, boasts hundreds of members but usually has only a dozen or so people that will show up to a meeting. It seems that we have about the same ratio of members showing up to an event, with a few dozen members and a handful of “irregular regulars,” as the authors calls them.

Going forward, I would like to play a bigger role in leading our workshops. I have helped come up with some of the ideas for the last few, but I have largely been learning as I have been going along. This may not be the worst thing, as one of the apprenticeship patterns that I have read (but have not written about) is “be the worst.”

There was one quote that stuck out to me, which was, “If your group becomes large enough and energetic enough, it will sustain itself even when you are not there. That’s when you know you have a community.” I really hope that I will help it grow enough to this point so it will continue after the leaders and I graduate soon.

The thing that stood out to most was the advice to always continue to ask questions that shock the community. Something that I did not think about was what the tendency that group-think might develop. I think I do a good job of not allowing this, but I sometimes feel guilty when I don’t feel like a “team player.” This gives me permission to continue to do this, but less apologetically so.

From the blog Sam Bryan by and used with permission of the author. All other rights reserved by the author.

Breakable Toys

As much as we want to obtain success, there is always something that leads us through that road. This pattern of “Breakable Toys” explains how there will be a point in our careers where failure is not an option. But this contradicts something that we have been taught our whole life. That failure is one of the best ways to learn. If you are conservative with everything you do and never step out of your comfort zone to try something new, then how will one succeed? An example from the pattern is that sometimes people already expect you to know everything about the issue. This can be common in certain jobs as well. One tool that this pattern suggests is to create your own wiki. This is a great tool for an apprentice because you can record what you learn. If you maintain this wiki, you can teach yourself about a ton of different topics. But the most important thing about this strategy is that you have better knowledge retention. By creating a wiki you are essentially creating your own personal archive of information and learning. Sometimes when you create things, it’s better to create toys that suite your needs. Sometimes these toys can just be rehashes of your version of some sort of industry tool that you can mess around with and learn from. This pattern is all about creating something you yourself can learn from. Building something that you can build upon in the future and continue to learn and implement. It’s about stepping beyond your boundaries and completing full software projects on your own. You should use a lot of your previous knowledge and skills to enhance them. Over time you can add a lot of features and even expand your wiki. I like this pattern because it is something that will grow with you and level you up. So there is no need to fear of expanding upon your own tools. With these resources, you should be able to act without the fear of failure in your workplace. This is preparing you for using the the tools in your job that you won’t mess up because you will have trained yourself to do so.

From the blog CS@Worcester – Amir Adelinia's Computer Science Blog by aadelinia1 and used with permission of the author. All other rights reserved by the author.

Practice Makes Perfect

Practice, Practice, Practice is an apprenticeship pattern that is all in the name. The pattern encourages one to constantly practice their craft. The goal is to eventually rewire the way your brain works and thinks about things until it is old hat and you can move on to practicing something else. As a pattern, its uses and merits are pretty obvious. The more you do something, the more you get used to it and commit it to memory, and therefore the easier it becomes to do that thing again.

As the text highlights, an important part of practice is that it is not stressful. It is challenging for many to learn in a stressful environment where deadlines and other stressors may come into play. Therefore, it is important to separate your practice from your work. Although you can still learn plenty of lessons from doing things, it is practicing the basics that will lead to a stronger foundation to support new knowledge.

I could personally benefit from more practice. As I have moved on to more advanced topics in Computer Science, I have found it important to constantly refresh myself on other things that I have learned. It can be hard to try to retain so much knowledge, and I think employing more practice more often would help me with that.

A way I often practice is to repeat assignment I’ve done that I struggled with, especially before a quiz or exam. Doing the assignment over and over again helps the process become almost muscle memory and helps me retain the knowledge for the quiz. It is something I need to do more often, and during more times than just quiz or test periods, as I absolutely benefit from the experience.

Everybody wants to practice their skills, but sometimes it is hard to find really effective ways to do it. I certainly need to find more effective methods of practicing, especially when it comes to answering job interview questions, as it doesn’t seem to get any easier. I believe that in time and with enough practice, anybody can learn anything.

From the blog CS@Worcester – Let's Get TechNICKal by technickal4 and used with permission of the author. All other rights reserved by the author.

Reflecting on “Apprenticeship Patterns” – Practice, Practice, Practice

The time has come where I need to start looking for jobs in the field of software development. These jobs require rigorous interview processes, which generally include some sort of coding assessment; in fact, I just took such a test only a couple days ago. I want to ensure that I will do the best that I can do during each assessment, while also continuously improving so that my performance will get better with each interview. This growth requires practice, practice, practice, which, conveniently, is the pattern that I will be discussing this week.

Practice, Practice, Practice, as the name of the pattern suggests, describes the ever-present need to keep up with skills and striving to improve upon current level of skill. One of the common challenges, though, is that an apprentice may only have the opportunity to practice in the workplace, so that there is a risk to make mistakes with potentially harmful effects. Apprentices should have the opportunity to practice techniques outside of this environment so that there is room to make mistakes. When there is the looming pressure of causing lasting damage should the on-the-job practice go wrong, it can definitely be stressful for the apprentice. This could result in a lack of learning from any mistakes made from the process. The whole point of practicing is to ultimately learn from it, and so it is imperative to separate practice from job training.

I completely agree with the points discussed from this week’s apprenticeship pattern. It’s so important that I have the chance to make mistakes and learn from them, without having to worry about messing something up in my job’s overall system. It’s also important that I keep working on my skills in general. As I keep applying to development positions, I need to (and will) make sure that I maintain a level of consistency with my practice exercises. Using online tools such as code katas, as described in the apprenticeship pattern, as well as other resources, I have plenty of ways to implement high-quality patterns of practicing.

Thanks for reading!

From the blog CS@Worcester – Hi, I'm Kat. by Kat Law and used with permission of the author. All other rights reserved by the author.

Balancing solo-work and team-work

For the eighth week’s reading, I chose to read the pattern, Confront Your Ignorance. This pattern takes on the problem that you have gaps in your skillset that is needed for the job. These could be tools or techniques that you are already expected to know but you don’t and need a place to begin. The solution to this problem is custom to the person in need, there are many different ways to start. Two ways suggested are trying to start with introductory material or jumping straight into hands on learning. It is mentioned that even if you are doing this in private to learn and apply it in the workspace, there are issues that could arise. One is that you are using work project experience for private projects solely for yourself and not the team. Another would be that the team will not be able to help you, learn with you, or help you along the way. As an apprentice, you should be learning in public where others can see the way you work.

The interesting part of this pattern is about the negative side effects from learning in private. When you work as a team, it is expected that you fail together, learn together, and learn from each other. By working solo and focused on improving your own performance, you are neglecting your team in the process. Another negative would be that you chose to implement a feature or system that has already been created elsewhere. By implementing your own version of it, the other members of your team are now required to learn from you about the system. This is a drawback and should be carefully considered when valuing your company’s resources and teammates workload.

This pattern has caused the way I think about my intended profession because there is a need for balance in terms of solo and team activity. If the workload shifts towards solo, then you aren’t benefiting your community. But if the workload shifts towards the team, then you are over reliant on the team. What I learned is that, you must know how to balance your learning such that everyone is winning in the end.

From the blog CS@Worcester – Progression through Computer Science and Beyond… by Johnny To and used with permission of the author. All other rights reserved by the author.

Breakable Toys

For this weeks blog post I will be looking into the Breakable Toy pattern. The context behind this pattern is that experience is built upon failure as much as if not more than success. This is something that most people will agree with that you cannot better yourself without failure or knowing your shortcomings. Say for example you are working in an environment that really does not permit failure yet failure is important to learn from your mistakes. This could cause you to play everything safe without being bold causing you to never truly get the most out of your job. By being bold, failing due to new tricks or the boldness can you grow into a better version of yourself when faced with difficult problems. In a way this pattern is very similar to Be the Worst, but that pattern is about finding a team where you can be the worst in order to grow. Breakable Toys is about creating opportunities to learn by going out of your comfort zone and single handedly building complete software projects. Using your favorite tools to build the worlds simplest wiki while still maintaining the highest standards of quality is an example that fits this situation well. The initial version will not be fancy in anyway but a simple user interface that lets you view and edit the plain text files. As the project moves along you can add more features and find new interesting ways to distinguish the project from the other pre existing thousands. Let your professional- interests guide you not the constrains of existing implementations. It does no0t matter what you decide to do in this project but as long as you are experimenting and learning from it you are growing as an individual. Back to the be your worst blog I wrote a few weeks back I completely agree with the breakable toy ideology. This is a very good mentality to have especially for your own growth one I would see myself using yet again.

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

B8: Practice, Practice, Practice

        The “Practice, Practice, Practice” pattern is explained as one of the better ways to develop your skills in new areas and get better with hands-on learning. The book continues by saying that being able to learn skills on your own time gives you multiple benefits that can’t exactly be emulated in a work environment. In a work environment, you constantly feel the pressure of learning new skills and learning them quickly while practicing by yourself allows you to control the rate at which you want to comfortably learn. The main idea of this pattern is to have a stress-free environment for you to experiment and eventually learn in. The idea of integrating feedback loops should also be in the back of your mind since it could prove useful here. It is possible to develop bad habits as you practice so making sure that someone can give feedback on your practice afterwards is also crucial. This allows a better learning experience in the long run by quickly correcting any habits that form rather than letting them sit with you for an extended period of time.

            I found this pattern to be important and useful as a reminder to make sure that I keep practicing. It outlined the positives of practicing code and how to set a personal pace for learning compared to a work environment. I found that when the book talked about the fast pace of work being different from learning at home, it resonated with me much more. I want to incorporate this pacing technique for personal learning more to find out how it can affect my overview on a subject. I predict that it will allow me to continue learning without getting too burned out since I would be able to control the pace at which I want to digest information. This can be helpful because there are some days where I don’t feel like working a lot which allows me to control the learning load compared to days where I want to learn a lot. I agree with this pattern for that very reason, to be able to personally create my own time schedule as long as I continue practicing at a continuous rate. Practice can only make my knowledge base greater and it allows me to experiment with ideas that I wouldn’t be able to in a work environment at my own pace.

From the blog CS@Worcester – Student To Scholar by kumarcomputerscience and used with permission of the author. All other rights reserved by the author.

Practice, Practice, Practice

On our journey to become master craftsmen, we must always remember to revisit the fundamentals. Sometimes, the hours spent learning and becoming better at a new job leaves us little time to revisit the fundamentals. Without the room to make and learn from our mistakes, we risk, as best, stagnating and at worst, reinforcing new, … Continue reading Practice, Practice, Practice

From the blog cs-wsu – Kristi Pina's Blog by kpina23 and used with permission of the author. All other rights reserved by the author.

Some benefits of Angular and Typescript!

Over the past few months, I’ve been asked the same general question about Angular multiple times in onsite training classes, while helping customers with their architecture, or when talking with company leaders about the direction web technologies are heading. After hearing that general question over and over I decided it was time to put together a post … Continue reading Some benefits of Angular and Typescript!

From the blog cs-wsu – Kristi Pina's Blog by kpina23 and used with permission of the author. All other rights reserved by the author.

Agile Testing

Agile Testing

For this week’s blog post I will be discussing Agile Testing, describing what it is, its principles and more. First of Agile Testing is a software testing process that follows agile software development-based principles. Essentially agile testing is a continuous process rather than being sequential. The testing begins at the start of a project becoming integrated into the testing and development of the entire project. Now there is a testing like this called waterfall testing where waterfall testing is a bit more structured and detailed while agile testing is more minimal. From the blog I list down below there is a large compare between the two that I will save for the viewer to visit as it covered in fall better detail there than what I could write here.

Main Principles of Agile Testing

The main principles that come out of agile testing are as follows. Testing is continuous ensuring the continuous progress of a project with Continuous feedback that provides an ongoing basis for what your project’s requirements are going to need. Tests are performed by the whole team, the developers and the business analysts of a project also test the application instead of just the test team. The decrease in time of feedback response, this is essentially due to the continuous testing allowing a better understanding of what is happening allowing for a better response rate. Simplified and clean code, Less documentation, and test driven  are all key principles that arise from the continuous testing as listed above several times, allowing for all of this to be done in a much cleaner fashion.

Advantages of Agile Testing

The benefits from agile testing are simple as it all comes from the continuous model it follows. First and for most it saves time and money, due the testing taking place right from the beginning and not at the end. Less documentation is needed, along with it being very flexible and adaptable to changes throughout its progress. Regular feedback is provided once again due to the continuous model.

In conclusion the agile testing not only facilitates early detection of bugs/defects but reduces time spent on fixing them. This model of testing can yield a much better-quality product/project due to its constant testing processes. The article written here is very informative about agile testing, I just only wish that some of the ideas were fleshed out a little more with perhaps a few examples showing how it works in reality.

 

 

 

https://reqtest.com/testing-blog/agile-testing-principles-methods-advantages/

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