Draw Your Own Map

For this weeks blog post I will be discussing the pattern known as Draw You Own Map. The context behind this one is that any given employer can offer only a limited subset of all possible career paths. The problem that would arise from this is that none of the career paths your employer provides actually fits you. The solution that would come from this situation would be to simply identify the next logical but ambitious next step in your career. Realize that it is not up to your employer, your career counselor or your professors to give you a hand up or decide your fate. Arriving at the next step and charting the course is a decision that ultimately comes down to your responsibility. You need to take the first step that is the most important part, even if that step doesn’t seem to significant. This first step should generate the momentum needed to help carry you toward your goal, no matter the terror you may feel. Try to define small, yet achievable steps allowing feedback that you can use to modify your road map which could also make it easier to get help from Kindred Spirits to achieve said goals. If the vision of which your employer sees of you and the one you see of yourself do not match your preferred accordance examine the opportunities to see if they’re heading in the desired direction. Instead follow other successful apprentice paths that share a resemblance to what you are going through. You should constantly reassess your map as your circumstances and values change. Sometimes the map will be in accordance with that of those around you, other times the map will require you to chart your own path through the wilderness. The only constant is that the map is yours, and you are free to redraw it at any time. A good action to take with this is that you could list three jobs that you think you could do while following the current one. Then begin to list three jobs each of those would lead to. Are these really the full range of desirable jobs for the next few years of your life? Ask yourself if this set of jobs is more representative of the range of career options you have before you and what places you want to take in this career. If you are unhappy with the list so far, repeating the exercise with different jobs, business or technology domains could help. Then repeat the exercise again to see where you would end up. Yet again this is something anyone who catches themselves in should do, as it will help you in the long run and in general.

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

Apprenticeship Patterns: Use the Source

This week, I’m reflecting on the Use the Source pattern from Chapter 5: Perpetual Learning. We all know the best way to gain expertise in programming is to actually program. However, it’s tough to know what tools are the best ones to learn from. This pattern suggests learning concepts by viewing the works of others — you’ll pick up on tips and tricks and can directly understand how to solve difficult problems if you learn from material from those who are great at solving problems. Even if the work you read isn’t from master software craftsman — just reading code vastly improves your ability to utilize code in your future.

I like this pattern a lot for a few reasons. I have always been timid about contributing to open source projects due to a lack of feeling comfort with handling others’ code. However, recently I started looking at a few open source projects and felt as though I could really contribute to the projects if I wanted to. I get the sense that this comfort has come from me handling and reading code more regularly on a daily basis. Another reason I enjoyed this pattern was reassurance. I’m starting in a Software Engineering position at Stratus Technologies in a month and a half’s time. I’m feeling extremely fortunate that I got hired, and I also know that I have a tremendous amount to learn — both when start the job (about the code they have in place) and beforehand. Their codebase is vast and complex, and in order to be an effective team member, I’m going to need to get used to dealing with large, multilayered, and complex systems.

In the arts, there’s a learning concept where the artist does “Master Studies”. Essentially, the idea is to choose a piece of art from a great artist and try to recreate it from scratch, by using the work as reference. This puts the artist’s skills to the test, but it gives them a framework to work within. I see this pattern and the concept of “Master Studies” as related, in a way. By examining the work of those who have made a name for themselves in the field, we get insight into how their mind works. There are many brilliant “Master” engineers out there, and they’ve written a tremendous amount of code that I can conduct my own “master studies” of. It’s like reading great literature — it will impact your work for the rest of your career.

From the blog CS@Worcester – James Blash by jwblash and used with permission of the author. All other rights reserved by the author.

Software Capstone: Refining the Intake Form

Welcome again to my blog;

Lately, we’ve been working to add missing fields and options into the Intake Form. The code necessary to run the server and open the form had been implemented long ago, so with that functionality taken care of, there has been a lot of progress in terms of how the page is formatted and what questions and information were required/optional for the user to input.

The most recent two changes have been the requirement of the pantry-goer’s zip code, and an optional field for gender. From there, the requirement for the persons annual income was implemented. Over the past few weeks there has been rapid necessary progress regarding the software’s usefulness and much of that progress has come in the form of our teams effort to finalize the form prior to May 15th, where we will present on the project in its entirety.

I am currently working on finalizing a change to the intake form where the user can check more Federal programs that they are participants in. Once that is done, there are about 4 other issues we have assigned to one another to take care of prior to the form being fully presentable. Other than that, it appears we have made great strides in how far this program has come ever since its inception. We started with a ground layer where a page could be run on a local server to instantiate the form. Now, we have a well formatted web page with an assortment of necessary questions and fields for the user to respond to, giving the Pantry workers the necessary information needed to run the Pantry.

I will write again soon, once more progress has been made. The semester is coming to a close soon, so there should be only two more posts until this section of my blog ends. Next time I will continue writing on about the progress of the code, afterwards I will write about the presentation we have coming up.
Until then, have a good rest of your day or evening.

-SMR

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

Apprenticeship Pattern “Sweep the Floor”

I skimmed through a few apprenticeship patterns before I found on the one that hit home with me, “Sweep the Floor.” The “problem” it presented was something that I am faced with starting every new venture at this stage on my journey. It stated, “You are a new apprentice on a project.” No matter where I go, this will describe me.

I have talked in my last apprenticeship pattern blog that I am starting as an intern at a friend’s start up, and I will be taking the advice presented here and applying it to this and the next venture I go to afterwards.

The solution advocates for doing the “simple, unglamorous, yet necessary, tasks.” It is tempting to do the opposite and try to do the “fun,” “exciting” things, but it stresses to not to, and prove yourself through the small tasks.

I have had the thought that in most fields that you don’t need a degree for, one would start at an entry level job. From there, they would work their way up. The stories friends have told me about their grueling interview processes scare me. I would prefer to start at an “entry level” position over starting off with a position that I feel way over my head.

I know I have talked here in the past about apprenticeship patterns that advocate for taking on big assignments even if you don’t feel ready — the pattern “diving deep” in particular. However, I think that diving deep comes after you have laid out the foundation with this pattern. I’m going to try to not let the bigger tasks intimidate me, but i won’t think that the small tasks are beneath me.

On the contrary, the small tasks are incredibly important — not just for the use of the company, but for learning new skills. The pattern did make a point to say that many who have spent a lot of time and money getting their degree might consider this beneath them, but I don’t feel that way. A little over a year ago I was working fast food, taking out the trash, and literally sweeping the floor. I was happy to literally do it then, and I will be happy to figuratively do it for any company that accepts me as part of the team. I want to be a team player, and I will be glad to do small tasks that are important to the team. Moreover, I will volunteer for them.

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

Pattern 10 – Draw Your Own Map

For my last pattern for this blog, I wanted to do one that I’ve been waiting to do until the end. This being potentially the last formal software engineering class I will take, I wanted to read “Draw Your Own Map”. This pattern talks about the importance of working in an environment that will help you reach your personal goals. It also makes it very clear that the person who has sole responsibility for taking the first step in each of the small goals that lead to the high level goals that make up every “goals” list, is the reader. We need to take responsibility and not blame any company, or position that could potentially be holding up back from reaching our goals.

I’ve always been a goal oriented person, whether it be in terms of finances, academics, career, or personal. So far I’ve done a relatively good job at achieving my goals and hope to continue this trend throughout my life. In relation to career goals, since I started my college career I knew that I wanted to be involved in software development in one way or another. Through my internships, I’ve learned what I look for in a company and the position that I will be starting upon graduation. I consider it drastically important when interviewing with companies to ask the employees what their goals are. If they’ve been with the company for years and their goals are similar to yours, it should mean that the company is a good fit. For me, I looked for companies that value mentorship, are current with today’s team-based practices, and allow for good work-life balance. On top of all of these, the ability to “be water” and move around within the company if my goals change is also important to me.

Everyone’s map is going to be different but it is important to stay fluid in your mindset of what is important. Do not allow yourself to be pigeonholed to a position that you may one day hate and also makes it difficult for you to find work if you decide to move on. Find a position where the company values your work ethic and desire to learn over the specific skills you have coming into the position, while they are important, they aren’t what will make your relationship with the company last for the long term.

From the blog CS@Worcester – The Road to Software Engineering by Stephen Burke and used with permission of the author. All other rights reserved by the author.

AMPATH-WSU Sprint 4 Retrospective

Hello my readers and welcome to my next blog post. For all of you who have followed my blog, this is the 4th sprint retrospective and I will be talking about how sprint 4 went for me and my team. For all you guys who are new to my blog, this is a summary of the what me and my teammates have been doing for our capstone class.

If you guys remember last time, I mentioned that me and my teammates decided to do the search bar task where users and doctors can search for patients in their application by putting their name. While the development of the search bar has been done on our end, we have been thinking for options of where to actually put the search bar. One of my teammates Kristi, suggested to the professor that would be better for us to push the search bar task development after the tool bar has been added to the application. While trying to support our idea with reasons, professor K. Wrust agreed with us and talked with the other team on charge to push the changes to master. As I am not very sure on how the development of the other team was going, we were told that we had to wait a bit as the professor wanted the other team to do the development of the tool bar differently.

As we were waiting for the other team to push the changes to master, we were starting to talk about what we were going to do next as a search bar was not ‘enough’ in our opinion. While there is a whole application to be build,  not having the right way of communicating with our user is a problem.

When I started this class, I was really excited on the output that we were going to have at the end. However, now in the middle of the semester I think that despite the learning process which has been great, we don’t really have a big output to show. One of the ideas that came into my mind, was to ask the professor to have other teams work in the web application for this project and we would work in the application ( IOS or Android whichever the user would prefer). While the professor found the idea interesting, we were not sure how long it would take for the user(customer) to accept and approve it. Therefor we just went back to the phase of trying to plan what to do next.

I would say that if I were to go back I would somehow try to have a better communication with the client, as it is very important in a development project.

Unfortunately, this sprint wasn’t a big progress on our end but we are not getting discourage as we are probably going to come up with something interesting for the next sprints. We will be done with classes soon and for this class we are going to give a presentation on what we did, what we learned and how the work in team was.

I am so looking forward for the next sprint as I am sure we will be coming up with a great idea on what to do next. Stay tuned for the next sprint as I am sure I will have great news about our progress.

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

Apprenticeship Patterns – Dig Deeper

This apprenticeship pattern discusses the importance of digging deep into the tools, technologies, and techniques that you use. If your knowledge is superficial, you will have trouble fixing subtle problems and won’t even be aware of how little you know. You must have the depth of knowledge to understand why things are the way they are. This will allow you to actually be able to explain the details of what is going under the surface of the systems you work on.

This pattern discusses several things you must do to acquire a deeper knowledge of whatever you’re working on. You must have a shift in perspective that involves wanting to follow a problem through the layers of a system to understand the root of what is actually going on. You should be familiar with various kinds of debuggers and must also be able to read specifications. It is also important to get your information from primary sources. For example, instead of learning about something from a blog post you found online, you should read the thesis paper that defined the concept that the blog post is discussing. By applying this pattern, you will be able to truly understand how the tools and systems that you use actually work.

I agree with the idea of this pattern. You should try to dig as deep as you can whenever possible in order to understand how things work. However, I question how realistic it is for a working software developer to actually follow this pattern. If you are asked to implement something for work that has a deadline, you won’t have hours to spend reading academic papers when a quick Google search will get the job done most of the time. This pattern warns that you should take care to not accidentally become a narrow specialist, but if you are truly diving deep into everything you learn it would be hard not to. There just isn’t enough time in the day to learn the fundamental concepts behind every tool or technique that you use. While I agree with the idea behind this pattern, I don’t think it is a very realistic goal for the majority of people.

From the blog CS@Worcester – Computer Science Blog by rydercsblog and used with permission of the author. All other rights reserved by the author.

AMPATH-WSU Sprint 3 Retrospective

Hello dear readers. Welcome again to my blog. This blog won’t be for the patterns I have been writing about, but for the progress of me and my team in our Capstone Class. It is exciting to see that things are progressing and we are moving forward with this project.

As I mentioned at the end of the last blog, (AMPATH-WSU Sprint 2 Retrospective) we received videos and actual output samples of how the new application should look like. I think that this is a very important step and want to say that I think it should have been sent earlier to us, as for a long time we kept researching about the tools we were gonna use and to be honest it got a little bit boring as I was really was looking forward to this part of the process. It’s true that in order for you to start working on a project you should know the tools and systems but I also believe in the theory where you also learn while working on it.

So during this sprint we took our time to watch the videos and after we made sure we all had seen and understood the videos and the requirements, we created Zeplin accounts. For all of you who don’t know Zeplin, Zeplin is a collaboration tool for UI designers and front end developers. It goes beyond the design workflow and helps teams with the design. I had never used Zeplin before but I found very useful in sorting the project and handling off designs. Recommended if you ever do front end development!

A Github section was created for all WSU participating in this project and each of the teams created their own branch. We discussed if each of us should have their own branch but we ended up in the conclusion that it would be very messed up for each of us to have their own branch pulled from master, so a branch per team was the final decision. However, each one of us could create its own branch from the team branch and that would be great in case any of us wanted to experiment. we left the option available  to whoever wanted to do so.

After we created our branch we choose our task to do, which is a search bar.  Something I really would like to point out is the team environment we have. We all are very communicative and express ourselves and our opinions. For us it was easy to agree on the search bar as a start up to do task for this project.As a lot of steps on this process don’t depend on us I would say that everything is going fine and I wouldn’t change anything if I was back in the same situation.

While working on the search bar we keep checking with our teammates and how is the progress going. I am really glad we haven’t really been facing any major issues and our team is working strongly together. I am really looking forward to getting the search bar done and move on to the next task. Stay tuned for my next blog post to see what happens. Until then..Have a good time ?

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

WSU x AMPATH || Sprint Retrospective 6

Sams ShipsHey guys, it’s a weird feeling to be wrapping up my last semester in my undergraduate career in computer science (and sociology). For this final installment of my AMPATH sprint series, I will just go over the general overview of what went on for my team.

Most of our updates went onto our PowerPoint presentation, which is going to be presented on May 15th, 2019. My team and I are looking forward to presenting the overall process of our group’s learning and working process, the many lessons we learned, our advice for future students, the work we tried to implement, and various other technical aspects of our project.

We decided that on top of the search bar work, it is also a priority to organize the git repository so it can be better organized and an open work environment for other classes. I think this is important especially when new people come in and cannot efficiently locate and access the files they need. As someone who was once new to an organization that had a lot of different projects and files to sort through, I believe that this is very considerate of the team to go with this.

With some limitations my team had to face, we worked around it to determine how we should move forward. The end result is pretty much a search bar that is attached to the toolbar. It cannot currently be live tested due to there being no backend but it can definitely be done in the future under certain circumstances.

It was interesting being able to observe how much planning you can start with but still end up having to take detours, starting new paths completely, or sometimes even needing to take U-turns.

I thought it would be important to pull some of the advice for future students from our PowerPoint and include them in this wrap-up:

  • Point out and address problems with technology right away because others around you might have the same problem(s) so you can solve them collectively
  • Do all team implementations in a separate component based on what you will be working on
  • Merge your work constantly to the master branch so each team can have the updated changes

A pattern I am noticing in a lot of teams or group projects is that not everything is going to work out in ways that you expected or were hoping for but you learn to move as a shifting team to make progress and continue growth.

Overall, I’d say I learned an important life lesson from this: if I am to contribute extra time on top of my technology career in the future to work on side projects, it will be a challenge to allocate time if it is a group initiative. I also learned that even when we try to communicate everything there is still more room for miscommunication, so there may be no such thing as over-communicating. I am happy to say that we always tried our best to move forward in all ways!

 

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

Use Your Title

Hi my readers. Welcome back to my blog.  In this blog post I am going to talk about an interesting pattern called “Use Your Title”.

Most us, who have worked in big companies and most of you who will in the future, are gonna have a FANCY title at your job. Sometimes even the person itself will get confused by its own title as at the beginning might not describe well what it means.

The best advice given by the authors for this pattern is: “Don’t allow your title to affect you! & Don’t be fooled by an impressive title!” It happens a lot nowadays that people have to explain what they really do because not everyone is aware of what a job title might be and what are the duties and responsibilities. There are also a lot of other cases where people misinterpret the job titles. My job title in my company is Support Engineer. and when some people would hear the name Support they automatically told me ” So you like talking on the phone with customer huh?!” That’s where I had to explain what my real position was and what was I actually doing. As I come from Albania, at the beginning I used to ‘blame’ on the company for giving me this title, but later on I realized it was the people who were to blame.

As you might know by now, I am graduating this May with a major in Computer Science and Software Development concentration. While having a conversation at my office with my teammates we all agreed that our titles were a bit too much as we hadn’t graduated as Engineers but developers. However, we all like using the fancy title.

The other side of the coin is where you have such a high job position and your job title doesn’t fully express much about it until you say what you actually do.

In both cases, the most important thing is to explain what you do with your own words and not the title, fancy or not. It is always good to have a written definition of what you do and what your duties are as you might never know who you might come across to.

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