Setting Up

I started out by finding my old Git Lab account and making a new project. Then added Karl Wurst as a Reporter to monitor my progress. After this I set up Xamarin, the framework I’m going to use to program the app. With the help of Xamarin I will be able to develop for both IOS and Android at the same time. Setting up the IOS portion of Xamarin is a little tricky though. In order to compile IOS code Xamarin needs to have access to a Mac running MacOS 10.12 or higher. Since I don’t have a Mac at my disposal I’m going to have run MacOS virtually in VMware. Fortunately, I found a site which provided instructions on how to do this and a download link to the OS. After getting through that I just needed to connect the VMware running MacOS to Visual Studio running Xamarin which was really easy since it just automatically found the connection for me.

From the blog Location App Blog by Daniel Mahoney and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – Record What You Learn

Write it down. Document it. Record it. From my personal experience, it is always better to write things down. This goes for things at home, work, or school. If you have an idea or come up with a solution to a problem, write it down so you don’t have to come up with that idea/solution again a month down the line. It just so happens that one of the patterns in Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman[AP] by Dave Hoover and Adewale Oshineye is about recording information. It is called “Record What You Learn” [AP]. The title of the patter itself explains it all. It discusses how it is very important to record any ideas you have or solutions to problems you have developed [AP]. More importantly, it discusses how these things should not just be written down and forgotten [AP]. I cannot agree more with what this pattern is all about. Your records should become a resource for you to use later on down the line when you are working on something you felt you have seen before and aren’t quite sure what the solution was [AP]. Writing stuff down can save you time and frustration. I have learned this lesson more than once and I’ll probably learn it again a few more times too. I agree with how this pattern stresses why it is important to record thoughts, ideas, solutions, etc. I can’t tell you how many times I have fixed some sort of program or had some sort of idea and said “Oh, I’ll remember how I did that. It was a pretty simple fix” only to run into the same problem 3 months down the line and spend a whole day trying to fix the issue. Had I written it down, it probably would have taken me about 10 minutes to realize I had it written down and another 10 minutes to follow the steps I wrote. The problem is fixed in 20 minutes. Another benefit to recording what you’ve done is it allows you to share it with others [AP]. By doing so, you may be saving someone else tons of time and frustration because they were able to utilize what you shared. The end lesson of all this is simply, write it down. It will make everyone’s lives easier.

Link to pattern in book: https://www.safaribooksonline.com/library/view/apprenticeship-patterns/9780596806842/ch05s06.html

 

From the blog CS@Worcester – README by Matthew Foley and used with permission of the author. All other rights reserved by the author.

Customizing a WordPress Theme

With literally thousands of themes in existence, there is sure to be a WordPress theme out there that fits the needs of you or your business. Why spend your own time designing a theme when some generous person has already done the work for you – and posted it  online for you to access completely free of charge? While some themes may no longer be updated or maintained, many receive regular security patches and feature enhancements to ensure your site is not at risk.

The main considerations when choosing a theme for the Massachusetts HOSA website were a banner image and feature area to mirror the appearance of Georgia’s HOSA website (http://georgiahosa.org/). The theme I found that most closely matched this desired appearance was the Trusted theme by uxl (https://wordpress.org/themes/trusted/). The theme was highly rated, installed and active on more than 5,000 WordPress installations, and recently updated to ensure compatibility and security.

No theme is perfect, however. The first changes I needed to make were to the color scheme of the theme. I’ve work with CSS before, but found that Google Chrome’s Developer Tools (https://developer.chrome.com/devtools) made it much easier to isolate a specific CSS attribute or tag rather than digging through the more than 5000 lines of code. I used the HOSA Style Guide to make sure that the colors and images that I was using in development matched the requirements of the organization. This was a new concept for me, but I found it extremely helpful that the organization published all of the approved brand colors, fonts, and logo requirements in a single resource.

The website is now up and running on a development server, and the theme has been modified to match the appearance of the HOSA brand. The next task that I will be working on is implementing a slider in place of the banner image on the homepage that displays conference information with links to register for a conference.

From the blog CS@Worcester – ~/GeorgeMatthew/etc by gmatthew and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Blog: Exposing Your Ignorance

Following this link will bring you to the apprenticeship pattern called “Expose Your Ignorance”: https://www.safaribooksonline.com/library/view/apprenticeship-patterns/9780596806842/ch02s05.html

I really enjoyed this apprenticeship pattern because I have always been a strong believer in asking questions. That is what this pattern is about. Asking questions to people who have more experience, sharing the ideas you have and telling them when you do not completely understand.  I also enjoy the emphasis on exhibiting learning ability. I think that the most important part of working is improving yourself and never limiting yourself to the information you might learn.  Being open minded is important to learning. You always have to be looking for another way to solve a problem and work around obstacles. Without proactively learning you will fall behind in no time.

One thing in the pattern that really made me think about my process of learning was the paragraph that starts with “Expertise is a by-product of the long road we’re all on, but it is not the destination.” I never really thought about it that way. I always thought that expertise was my goal, but it doesn’t have to be. Going deeper into the passage, I think what they’re trying to say is that expertise is something earned int he process of learning. As long as you are capable of learning well, expertise will come to you in time naturally in something that is required or interests you.

One thing that I thought about while reading this pattern was “what about those people who hate questions?” In my opinion, I think that someone who gets irritated by (good) questions are close minded and don’t have much to offer. While they might have expertise they probably don’t have the skill to relay their information and therefore get frustrated.  Unfortunately, sometimes those are the only people you have for guidance and you may need to look elsewhere for extra help. Of course this pattern doesn’t take into account the person who you are asking question to and I didn’t expect it to, but it is something to think about.

This pattern has opened my eyes to the true learning process. Both parties learn from someone asking questions, so don’t be afraid to Expose Your Ignorance. I know I will be exposing my ignorance more!

 

From the blog CS@Worcester – Rookey Mistake by Shane Rookey and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – Create Feedback Loop

Summary

Self assessment can be a very difficult thing to accurately accomplish. When learning a new skill, we may not be aware of our mistakes as we are making them. Creating an early and open feedback loop can be a very useful tool for identifying and mitigating these mistakes.

My Reaction

This pattern is very useful in that it teaches us to remember our tendency to overestimate our own aptitude. It even notes a correlation between our lack of real ability and the lack of perceived ability. This was an interesting concept that seems obvious in retrospect, but I found to be intriguing.  

Finding opportunities to get feedback involves being willing to hear both praise and criticism. This may be scary for some, but understanding and learning from our mistakes is worth much more than our fear of failure.

I had not considered the idea of stop energy. This is when feedback received does not provide constructive, actionable input. Instead, it is meant to stifle and discourage. This type of feedback is mostly about the person giving it and usually lacks any kind of real consideration about you or your current situation. Understanding how to identify the difference is important to maximizing your positive feedback loop. This was a new concept to me and it taught me a new approach to my future feedback opportunities.

There are two types of positive feedback that can be used to constantly adjust and adapt. This is the biggest take away from the pattern for me. The two type to consider are balancing and reinforcing feedback. They operate to push a system to relative stability and maintain longevity within that system.

Balancing feedback encourages us to do less of something while reinforcing feedback encourages us to do less of it. This is a very simple yet profound idea. The distinction between positive and negative feedback seems much easier to determine. This finer granularity within positive feedback is much tougher figure out.

Getting better at this takes practice. It takes understanding more that just what someone says but how it is said. It involves considering context and meaning. These things take time and are tough to convey in a book. I will try to use these lessons in my next project, assignment, or human interaction. There is always an opportunity to establish and learn from a feedback loop. Simply interacting with others and seeing what they think and feel is an example of one.

From the blog Rick W Phillips - CS@Worcester by rickwphillips 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.

CS@Worcester – Fun in Function 2018-02-04 21:52:46

The “Expose Your Ignorance” pattern encourages software apprentices not to feign competence when they don’t know how to do something, but instead to nurture and showcase their ability to learn by admitting that they don’t. According to the writers, the problem is most likely to come up when your managers or team members assume or want confirmation that you know something. You can still reassure people in these situations, but with your capacity to learn instead of by being dishonest about your abilities. In this way you can build trust by showing you can be counted on to figure out how to do what’s needed, even if you can’t do it yet.

Exposing your ignorance doesn’t seem like such a difficult thing if there are no expectations of your knowledge level beforehand, but letting someone know you don’t understand something they thought you did seems almost unbearable, especially in a situation where your ability to do your job depends on understanding it. I hadn’t considered that I might be put under pressure to project an image of having knowledge in an area I don’t, so I’m glad to have some ideas of how to respond to it before it becomes an issue.

Another thing I hadn’t considered was the idea that becoming an expert is something to be avoided, or at least not the main goal. The authors explain that to be a software craftsman, you can’t become confined to a specific domain or skill. This is what naturally happens if you’re too afraid of exposing your ignorance to learn new things. Here too, the idea of having a greater goal to pursue is helpful to me. I would rather be a software craftsman than an expert in one area, because it would help me to keep my options open. Being good at only one thing also means you run the risk that the skill will one day become obsolete.

The advice to publicly post a list of things you don’t understand about your work surprised me. It seems like it would be a painful thing to do, but it does also seem like it would help you get used to putting this pattern into practice. It might end up something I try in the future.

From the blog CS@Worcester – Fun in Function by funinfunction and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns: Craft Over Art

This week I chose to cover “Craft over Art” from chapter 3. Craft over art is an essential piece to becoming an apprentice. When you are faced with a task, an opportunity to try something different and creative arises. Sometimes you have to sacrifice beautiful work in order to deliver a solid working project. Building… Continue reading Apprenticeship Patterns: Craft Over Art

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

Concrete Skills

The Concrete Skills apprenticeship pattern seems to give the assertion that entry level software developers should maintain a quality understanding of the “basics.” Employers can and should have the expectation that new hires can contribute in some substantial way, right from the gate. I feel this patterns’ context stresses the importance of understanding the fundamentals of programming, essential algorithms, and computer science in general. One of my main responsibilities as an undergraduate is to learn and maintain such fundamentals that any reputable employer should expect from any entry level software developer.

The authors describing this pattern do a great job of highlighting some pivotal “concrete skills” one should strive for as a newcomer to the field. For instance, it is suggested that gathering a solid understanding of one’s first programming language is a primary skill we should strive for. I realize that my first language (Java) is just the beginning of a myriad of languages I expect to be exposed to in the near future. I ought to practice Java to the point where I can roughly draft code for any rudimentary procedure at any given moment. My potential employers need to know that I grasp the basics of vital data structures and design patterns. I should strive for a solid understanding of these fundamentals to a point where I can just start shelling out code whenever it is asked of me. When I can do this to a point of solid understanding and self-confidence, this will be the day that I can say that I have done so by successfully applying the Concrete Skills pattern.

What I found most interesting about this pattern was the implication of the importance of learning how to play “buzzword bingo” to get your foot in the door as an entry level Software Developer. I must say I found this amusing in the sense that I pictured someone at an interview saying something like “…yeah I’m familiar with APIs, ASP, IDEs, J2EE, NPM, SQL, UML…” and all sorts of other alphabet soup. But at the same time, the term “buzzword bingo” was especially enlightening for me. Any quality resume/CV I’ve ever encountered for inspiration had similar keywords sprinkled throughout them. Thus I have set a personal task for myself to become familiar with such popular buzzwords to a point where I can at least explain them. Proficiency would be great, but I feel I can begin to apply the concrete skills pattern by at least researching more about these recurring buzzword terms. I feel this, along with striving and maintaining a solid understanding of my “first language” Java, are great ways to apply the concrete skills pattern.

From the blog CS@Worcester – Jason Knowles by Jason Knowles and used with permission of the author. All other rights reserved by the author.

Emptying the Cup: The White Belt

In this stage of the Apprenticeship patterns, it gives us an overall idea of what it’s like to be an apprentice. In terms of learning different programming languages, especially if its a new language, it will be hard to learn it because you have prior knowledge on the concepts of basic programming actions. According to the Apprenticeship patterns, “we have to be able to put aside our past experiences and preconceptions to allow new knowledge in. This is especially difficult when trying to learn your second programming language, because it is likely the first time that you have to sacrifice productivity in order to improve your skills.” When you think you are knowledgeable in programming languages, you are unable to take in the maximum depth of learning you are expected to take in as well as limit the ability to discover new possibilities.  To put this in the modern work place, team members will always have a certain level of competency in the work that they do. Pride will be one of the factors that may be an obstruction to the team unless each of them are able to allow themselves to unlearn what they learn in order to learn new things in case problems should arise in the future.

What I found interesting about this pattern was how the metaphor “white belt” was used.

“Wearing the white belt is based on the realization that while the black belt knows the way, the white belt has no choice but to learn the way.”

In my mind, I thought it made sense because as a true beginner, you know nothing at all to start off. To be taught at first, it is normal to think that the first way you learn would be the right way. At that point you allow yourself to learn, and therefore, you are able to discover possibilities you hadn’t known.

This Apprenticeship pattern was useful because it made me think of when I first learned my second programming language, which was Java. When I transitioned from C++, I thought learning Java wouldn’t be as hard as I thought it would. It ended up being harder because I wasn’t allowing myself to learn the full principles and rules of the language. I took shortcuts when I wasn’t suppose to, and I had to learn that the hard way as I struggled through learning it. Soon after, I took it step by step and allowed myself to learn it the right way.  I completely agree with this pattern because not only it applies to programming, but it can apply to anything you learn in life, and it starts by wearing that “white belt” first.

 

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