Summary: Do you find yourself in the process of deciding between Angular and Vue for your next web development project? This article will help you identify the key differences between the two popular frontend frameworks bringing you one step closer to sprint 0.
Angular vs. Vue
The amount of frontend frameworks available to developers has surged over the last decade. The cause?
Single page applications: Web apps that interact with the user by rewriting the current web page with new data from the web server, instead of the default method of the browser loading entire new pages - wikipedia.
Angular, The Clear Choice for SPAs
Vue is Gaining Momentum Throughout the Development Community
Angular has been at the popular table for some time now and Vue really didn’t start gaining popularity until 2016. Some people prefer to judge a framework's popularity by the number of downloads, but others are more interested in sheer enthusiasm throughout the development community. So, who stacks up?
It’s no secret that Angular competes for market share with Facebook’s frontend framework React. Both frameworks consistently have more downloads than Vue. And although Angular has gained tremendous popularity over the years due to constant updates and releases, it also suffered a huge loss when AngularJS updated to Angular. The differences between the two were vast and the migration was tedious and cumbersome, which caused many developers to abandon the framework and never look back. However, there is still an advantage to Angular when it comes to problem-solving. There is rarely any issue that you’ll run into with the framework that isn’t easily overcome by a simple Google search.
The open source community drives Vue, which increases its popularity amongst developers. Enthusiasm is at an all time high and a popular topic across many chats, Github repositories, and popular developer discussion forums. In addition, Vue boasts an impressive 3X as many stars on Github when compared to Angular. This may lead to a surge in Vue developers in the next few years.
Comparing Size and Learning Curve
The size and the learning curve that each needs are two of the most notable differences between the frameworks.
Angular uses advanced change detection mechanisms and ahead-of-time compilations to reduce the number of times the document object model manipulates and pre-compiles HTML/app components. This is before the browser even downloads and uses them. The framework is privileged to have these advanced mechanisms ready for optimizing the performance lag.
Vue, with the help of the virtual DOM mechanism, has sorted a default performance-optimized configuration. This way, the runtime and initial load time are reduced drastically, boosting the app performance substantially. The virtual DOM provides more efficient ways to update the view. Each time the application data changes, it renders the virtual DOM rather than rendering the user interface in the actual document object model, which is faster and more performant.
Vue & Angular: Both Great, Just Different
To sum it up, it really comes down to the size of the project you're anticipating and your ability to find the right team to develop the application. Both Vue and Angular are excellent choices for frontend development with their own strengths and weaknesses. If you’re an enterprise organization, I’d recommend Angular. Small and scrappy start-up with a love for open-source software? Vue’s probably more your vibe.
Assessing Development Candidates: How to Choose the Right Warriors
Many software development team managers struggle with assessing development candidates during the recruitment process. It's important within these interviews to stay focused on the number one goal, finding a peer that will help fight the real enemy, complexity. In the software development industry, it can be challenging to find an individual who can balance ambitious timelines and create maintainable, readable, and efficient code. If you choose a team member with either the wrong attitude or subpar talent, you will most likely only make your load heavier. But, if you choose a team member correctly, you may just have a fighting chance.
The trick is all in how you evaluate your warriors during the interview process.
If you're a movie buff like me, you will remember Akira Kurosawa’s epic film, Seven Samurai. In the film, there's a scene where samurai team leader, Kambei, is choosing warriors to fight a group of bandits that are tormenting a farmer's village. Kambei's selection process is quite simple, invite the candidates to walk though a door into an unknown room. He then assesses their reactions. Are they walking into danger? Will they be able to react successfully to what they find?
Just like Kambei, when I'm assessing development candidates, I like to have an exercise where they perform their craft in front of me. I then evaluate them in 5 main areas: knowledge, code craftsmanship, architecture/design, refactoring/tests, and peopleware.
The first thing I want to assess is how familiar the candidate is with their tools. I pay specific attention to how fast they navigate menus, use shortcuts, and how easy it is for them to create artifacts in each tool. In our live assessments at number8, I specifically analyze the following:
Web Development Language/Framework
2. Code Craftsmanship
The main deliverable for most software engineers is code. So really, we are interviewing collaborative authors to write and revise different parts of the same text. Therefore, we have to adhere to certain principles if we want other poor souls to make sense of our code. For junior talent, coding principals can sometimes be easily dismissed, but professional developers know better. Good code means that other developers can read the text like a story. The code should be modular enough to assign separate parts of a solution to each team member to maintain. In essence, good code has to be:
Clean | D.R.Y | Readable | Expressive
3. Architecture and Design
In this area, I want to see the candidate’s understanding of services and how well they distribute the responsibilities of the proposed solution. I pay specific attention to the following activities:
Solution Layers: There are different approaches for different problems. I want to see what is presented and the reasons behind the decisions.
Data Model: One thing every software has is data. A candidate always has to define entities, real world or abstract. Relationships and interfaces are specified for those elements to speak to one another.
API Design: One clean and modern way to provide communication is to create APIs. What is included in the interface and how they are explained is very informative during an interview.
4. Refactoring and Tests
Whether it's to make things clearer or to solve a bug, most of the time software engineers are reading and changing code that someone else wrote. Because of this, I always pay close attention to testing. I believe, the only way to make sure a candidate is really fixing an issue (instead of making things worse) is to run create tests. Unit and integration tests are simply not optimal in today’s world.
Peopleware is a book and term coined by the American software engineer, Tom Demarco. The book explains the importance of understanding how a software developer fits into an organization's culture and how well they will work alongside the rest of the team. When assessing this area, I pay particular attention to the following:
Communication skills: I notice if the candidate asks questions. If they didn't understand my solution, did they ask for clarification? The other side of communication is listening. I always assess a candidate's ability to follow instructions and how closely they pay attention to the outlined requirements.
Feedback: Some candidates are shy and some developers simply can't take criticism. It's important to have a good understanding on how a candidate will react to feedback, since it can present a burden to the team.
Teamwork:I throw questions or make last minute requirement modifications during the exercise, in order to determine how well the candidate can make compromises and delegate tasks to other teammates. Using or refactoring someone else’s code is a natural follow-up to the introduction of last minutes changes. It also adds pressure at the end of the interview and mimics reality. The reaction I get from candidates when I change the requirements or ask them if they would prefer to use external code always lets me know if they will elevate or bring people down during a project, or if they have a big ego that could constitute a project liability.
After these 5 areas are assessed you should know if you've found your warrior.
In conclusion, software engineering is a complexed and interesting profession and engineers are always moving from one state of ability to another. Your candidates could be well-rounded or specialists, but there are always specific foundational blocks that are common to all. Assessing development candidates with the outlined blocks in this article will provide you with an ability to easily gauge what a new team member will bring to the table. Remember, when you conduct an interview, you are not trying to find a genius or accept every candidate; you are simply looking for warriors that are prepared enough, and have the right attitude to get the job done and fight by your side.
About the Author: Stuart Matamoros is a Team Manager and has been with number8 for 9 years. He was instrumental in creating our candidate assessment process, which includes a short assessment, live assessment coding challenge, and personality assessment.
Looking to add an experienced developer to your team?
number8 recruits and qualifies mid-level and senior developers for U.S. based development teams. If you have specific skill gaps or are struggling to find great talent, number8 can help with that. Connect with us today or continue exploring all of our custom software development and remote staff augmentation services here.
.NET Core or Java? Choosing the Right Technology Stack for Your Budget
There's a lot to consider when choosing a technology stack for your organization. This article won't cover everything, but it will help you answer one of the biggest questions:
Will .NET Core or Java cost more?
The Open-Source History of .NET Core and Java
A lot of free products and frameworks were built using Java as their core technology during the open-source boom. This was due to the multi-platform capabilities provided by the Java Virtual Machine and their write-once/run everywhere premise. Since then, the open-source community has grown tremendously and many of its members have become not only Java developers, but Java enthusiasts. Now, many of those same people work as decision-makers and manage large IT departments and projects. As time went by, Microsoft noticed how behind they were in the open-source world and how discredited they were within the open-source community. This disrupted the Microsoft development ecosystem and caused them to launch .NET Core with the same premises as Java: write once/run everywhere (or almost everywhere).
Nowadays, Java and .NET Core are not a developer's only options. There are plenty of different technologies for different focuses and different goals. However, the discussion about portability remains for these two stacks. Both .NET Core and Java applications can run on Linux or Windows and choosing which stack is right for your organization will most likely require a deep analysis. Part of that analysis should be that Java isn't free anymore, but .NET Core promises to be free for a long time.
Oracle's Java Runtime Environment isn't Free Anymore, but .NET Core Promises to be Free for a Long Time
Since the acquisition of Sun Microsystems by Oracle, a lot of things have changed and Sun’s commitment to open source seems to have weakened. A signal of this is the recent licensing changes that Oracle introduced to the Java Runtime Environment. If you are a developer or you want to use the runtime environment non-commercially, you don't have to pay for it. But, if you are a company or you intend to use your Java-based software commercially, you do have to pay for a license. .NET Core doesn't have any kind of licensing costs for it's runtime environment.
You may be thinking about the other factors, aside from pricing, involved in this decision. But, I caution you not to discount the importance of pricing. While a large company should be able to afford all of the required licensing for a Java-based deployment, giving them the ability to leverage the robustness and matureness of the Java platform, this often isn't the case for startups or small businesses. .NET Core's performance improvements (remember that it is a full rewrite of many .NET components), portability, and zero cost provide a great solution for budget-conscious organizations.
Wait a minute! There are free Java Runtime Environments like OpenJDK that could be used! Yes, technically that's true, but let’s be honest, what company would replace a mature and fully supported platform like Oracle’s JRE for an open-source project?
It All Comes Down to What's Important to Your Organization
This discussion isn't intended to persuade anyone to switch to .NET Core. I'm simply advising decision-makers to consider the platform. Aside from price, I do believe the platform has a lot of great benefits and will ultimately end up surprising even Java enthusiasts with its capabilities. On the other hand, if you're an experienced Java developer or your company has large Java-based solutions that make Oracle's JRE too compelling to pass up, my suggestion is to plan and budget for the costs in the beginning. Overall, there is no one-size-fits-all solution for this kind of decision. Put in front of you what you want to benefit from and then decide how much you're willing to pay.
Luis Canizares is a senior .NET developer with 15 years of experience in a variety of development roles including, software developer, team lead, architect and project leader. He has been a number8 consultant for the past 2 years.
Looking to add an experienced .NET Developer to your team?
number8 can help with that. Connect with us today or continue exploring all of our custom software development and remote staff augmentation services here.
GET STARTED TODAY
We’d Love To Schedule A Time To Talk.
Provide your information to talk with a number8 Relationship Manager about your development needs today and feel what it’s like to be listened to before being sold a solution.
number8’s onshore office is located in Louisville, Kentucky where our Account and Relationship Managers work hard to provide all of our clients with exceptional customer service. We also have consultant offices located in Escazú, Costa Rica and San Pedro Sula, Honduras that give us a strong local presence allowing for top-level recruitment, technical training and low employee turnover.