Skip to main content

Posts

Featured Post

The role creativity plays in programming

I consider myself to be a very logical person. I tend to favor practicality to aesthetics. I feel like this lends itself well to being a developer. I think that logic is seen as a key trait when looking for a developer. I agree, a big part of being a good developer is about being able to think through a problem logically and come to a conclusion that will solve the problem.

I think that one thing that separates really good developers is that they have at least some amount of creativity. Logic allows them to see the problem and work through how to best solve it given their past experience and knowledge. Creativity allows them to see a problem differently and come to a solution by seeing how things can work in a way that they have not done before. Creativity allows for connecting ideas not previously used together to creates something new.

If you want to improve yourself as a developer, I would suggest that you do something creative outside of work. Expand what you do and gain new exper…
Recent posts

Design Pattern: Unit of Work

The Unit of Work pattern defines an approach to create logical transactions within a system that might otherwise not be transaction based. It commonly is used in conjunction with the Repository Design Pattern.

I have previously used the Unit of Work pattern only in relation to database operations, but it could be used for file access, other sources, or multiple types together; the key is that all work gets completed as if it were one action.
Reasons you would want to use the Unit or Work patternAllows for smaller components that do not need coordination logicMore efficient by reducing duplicated or unneeded work, only the final result is storedEnsures working with up-to-date entitiesIf one piece fails, all fail, guaranteeing data in a good state How do you implement Unit of Work? In my opinion, one of the best ways to use the Unit of Work pattern would be for your Unit of Work to be created as soon as a request comes into your system and to be completed right before you return a respo…

Design Patterns Series

Design Patterns are an approach to solve problems when creating a piece of software. They are useful as a best practice template when solving a problem. They also give you and your teammates a common understanding when discussing how to solve a given problem. That common understanding only happens if everyone on your team knows the patterns. 
I am using this space to collect a series of posts that will dig into my understanding of common Design Patterns. Repository PatternUnit of Work

Design Pattern: Repository

The Repository Pattern is a pattern that defines how to access data in a reusable, isolated fashion. The core concept is to isolate the logic required to call a database, file, or other data source. It can be reused without other layers of the software needing to know the details of how to get that data. An example would be the connection string for a database should be used in 1 location, within a repository, rather than every class that needed data needing a connection string.

The repository is used by calling classes like a collection of data. If I have an employee repository, classes that need an employee can query the employee repository as if all employees were already in an in-memory collection.

var employee = _employeeRepository.FindById(1);
I view the repository as the bottom layer of code.

Isolating data access from the rest of your code has multiple benefits. You can easily write tests by faking or mocking your repository. You do not actually connect to your data source in y…

Intern Project, a look back.

This summer I was able to be the Lead Developer for our intern team. The team consisted of a developer that was chosen as our Leader, he was able to show his leadership ability in a setting that he would not have otherwise had access to. Myself and another full-time developer helped to mentor the interns and build out the site. And, of course, four interns that are studying software majors at their universities. These four had very limited experience with developing a website before coming to work here and also did not really know what it means to work in an enterprise-level team environment.

Over the course of 11 weeks, with roughly 50 working days we were able to design a new website and build it from nothing into a fully functioning site that will add value to our business. Everyone had amazing opportunities to learn and grow and come together as a team. The people that we were at the start of the summer are so much better with more knowledge and experience to draw upon now at the …

Developer Job Description

What do you tell people when they as what you do for a living? Do you say that you are a programmer or developer? What if they follow that up by asking what that means, or what your daily activity means?

I have an answer that I think describes what I do best.
Problem Solver I am first a problem solver. I generally use technology as the tool to solve problems, but there are also times when a non-technical answer is really the best solution. Being able to break down the problem at hand and see it from different angles always me to provide numerous different solutions, then talking or thinking through those options should lead to the best possible solution. This works very well in a team environment because everyone has different ideas. Someone else will think up other ideas than I will, by sharing our ideas together we can build new ideas together.

Code Author When a technical solution is chosen and I start writing code, I shift into a different role, Code Author. Here I am focused on w…

Interns: Taking off the training wheels

My intern team has been working for several weeks now on our new website. We have already completed one deployment to production and are finalizing our second one. We started with a plan to release often adding small bits of functionality as we go and so far that plan has been working really well. We already feel like we have accomplished a lot because we have completed many of our project's requirements and should easily be able to complete the rest giving us time to do even more than just the original requirements.

One of the things I have had some difficulty balancing has been how much to lead the interns and how much to let them figure out on their own. In deciding what our team process should be and how we should allocate our time, I think it was important for me to do more leading. I saw some deficiencies in how we were currently working and brought up some ideas for how we could address them. We had moved into spending all our time just working through stories and did not h…

Advice from Dan Wahlin

Dan Wahlin was here this week running an Angular training course.
The Intern team had the great opportunity to steal an hour of his time today to ask questions and learn from an expert. We had some Angular specific questions, but we also got a ton of great life advice.

These are the biggest take-aways I had from our time with Dan.

His greatest strength is his persistence and ability to work harder than others. He said that he might not be the smartest, even though he clearly is very smart, but that he will out work you and he will solve whatever problem he is facing through his persistence.He also said that it was important to quiet your inner critic. You should not be afraid to do something, but rather use that fear and "go over the wall, not run away." I have also recently begun reading the book Banish Your Inner Critic, which focuses directly on this concept and what you can do to change your inner critic, this advice had really great timing for me.The next thing will not …