Talent Development Centre

Category Archives: Professional Development

Professional development advice for Canadian IT contractors and independent consultants working in technology.

The Thrilling and Exciting History of JavaScript

Buckle-up developers, it’s time for the nerdiest, and most exhilarating, history lesson you’ve ever sat through. That’s because, finally, somebody put together a video summarizing the complete history of JavaScript, all the way to June 2019.

Fireship includes all the details of one of the world’s most famous programming languages and this 12-minute video has everything you want — education, controversy, drama, innovation, friendship and, of course, cheesy memes. If you’ve been looking for the perfect summary wrapping up JavaScript’s 25-year history, wait no more. Scroll down, hit play, and enjoy.

Find the Happy Medium to Avoid These Programming Mistakes

Find the Happy Medium to Avoid These Programming Mistakes

Developers know that no matter how diligent and careful you are, when you least expect it, eventually things crash, and you find yourself in recovery mode. Even though every company and individual programmer has a few rules of thumb they follow, the worst can still happen.

Interestingly enough, a recent article in InfoWorld, written by Peter Wayner, points out that sometimes one developer’s “golden rule” is the extreme opposite of another’s. Neither are wrong, but taken too seriously and too far to the extreme, the worst can happen. Wayner demonstrates this theory by explaining the following programming mistakes:

Playing It Fast and Loose vs Overcommitting to Details

Overlooking basics brings out the simplest mistakes that then snowball into bigger bugs. In addition, using one big catch all for all possible exceptions can be a lazy solution that leads to more disaster. With that in mind, paying attention to every details and adding too much code will eventually slow down your application.

Not Simplifying Control vs Delegating Too Much to Frameworks

Not simplifying control over tasks in code can have negative implications. Wayner references one experienced developer who says there should be “One and only one place in the code for each job. If there are two places, odds are someone will change one but not the other. If there are more than two, the odds get even worse that someone will fail to keep them all working in the same way.” On the other side of the coin, relying too much on frameworks can make it difficult to troubleshoot because it’s challenging to find out what’s gone wrong in the code

Trusting the Client vs Not Trusting the Client Enough

Assuming the client device will always do the right thing can open up a number of security holes and vulnerabilities. Vice-versa, adding too much security to prevent any vulnerabilities is sure to slow things down, add clunkiness, and hurt the user experience.

Relying Too Heavily on Magic Boxes vs Reinventing the Wheel

Although extremely helpful, many magic algorithms have subtle weaknesses to them and the only way to truly get past them requires extra learning to truly understand what’s under the hood. You could try creating your own cryptography, but trying to re-invent the wheel won’t be as effective as what experts have already developed.

Closing the Source vs Opening Up the Project

Many developers today will advocate that closing the source on your project discourages innovation and hinders opportunity to uncover and fix bugs. In reality, though, there needs to be an incentive for outside contributors to put in the work and your project may not get any contributions at all. Not to mention there’s more overhead in managing an open-source project, like maintaining documentation.

Following Too Many Trendy Ideas vs Ignoring Too Many Trendy Ideas

Finally, who doesn’t want their project to be at the top of the game and taking advantage of all of the new bells and whistles? As you start implementing those new flashy items, beware that more work and challenges can arise because they’re so fresh. Don’t wait too long, though, because ignoring the trends will leave your code out-of-date and behind the times, which will eventually lead to bigger failures and malfunctions.

In any line of work, whether it be programming, other realms of information technology, or a complete other industry, flexibility is key. While it’s wise to follow best-practices, tunnel vision of those rules can guide you down the wrong path. We recommend reading the original 12 Programming Mistakes to Avoid by Wayner, as it provides extensive details on each of these.

Quick Poll Results: How do you manage notifications on your phone?

For most Canadians, the amount of time we spend on our phone, and productivity lost because of it, is terrifying. Just have a look at this post from the RescrueTime blog that’s filled with eye-opening statistics.  For example “Most people check their phones 58 times a day (with 30 of those during working hours)” or “Half of all phone pickups happen within 3 minutes of a previous one“. Fortunately the post is also filled with some great tips on how to combat such behaviour, with the third in the list being “Turn off notifications (or go into do-not-disturb mode while working).

With that in mind, last month’s contractor quick poll set-out to find out how many people heed that advice, and to what extent. There appears to be a mix of behaviours among IT contractors…

How do you manage the notifications on your phone?

Top 10 Programming Languages for 2020

The world of programming is fast-paced and always changing. Industry stats like the TIOBE Index or Stack Overflow Developer Survey remind us time and again that new languages are always rising to the top, the ones we want to work with might not be the ones in demand, and there will always be a few consistent areas where it’s always good to be knowledgeable.

This video from edureka! Takes a look at 2020 and predicts the top 10 programming languages clients will be using:

  1. Python
  2. Java
  3. JavaScript
  4. C & C++
  5. GoLang
  6. R
  7. Kotlin
  8. C#
  9. Swift
  10. PHP

Get all the details by watching the video. Are you seeing similar trends in your industry? Are you ready for 2020 or are there skills that you plan to brush up on before heading into the new year? We’d love to hear your perspective. Please share it in the comments below.

The 25 Most Dangerous Software Errors Has Been Updated

The 25 Most Dangerous Software Errors Has Been Updated

The Common Weakness Enumeration (CWE) is used by professionals around the world to identify the most widespread and critical weaknesses that are known to cause serious vulnerabilities in software. According to Howard Solomon at IT World Canada, the list hasn’t been updated in eight years, but it recently used a new data-driven approach based on real-world vulnerabilities reported by security researchers to refresh the 25 Most Dangerous Software Errors list.

Explaining its methodology in more detail, the CWE website says they obtained data about vulnerabilities and exposures from the National Vulnerability Database (NVD) and then developed a scoring formula to calculate a rank order of weaknesses.

The complete list of 25 most dangerous software errors is listed below, including the overall score of each as well as its ID, which is linked to more information about the error on the CWE website.

  1. CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer
    Score: 75.56
  2. CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)
    Score: 45.69
  3. CWE-20: Improper Input Validation
    Score: 43.61
  4. CWE-200: Information Exposure
    Score: 32.12
  5. CWE-125: Out-of-bounds Read
    Score: 26.53
  6. CWE-89: Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)
    Score: 24.54
  7. CWE-416: Use After Free
    Score: 17.94
  8. CWE-190: Integer Overflow or Wraparound
    Score: 17.35
  9. CWE-352: Cross-Site Request Forgery (CSRF)
    Score: 15.54
  10. CWE-22: Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)
    Score: 14.10
  11. CWE-78: Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)
    Score: 11.47
  12. CWE-787: Out-of-bounds Write
    Score: 11.08
  13. CWE-287: Improper Authentication
    Score: 10.78
  14. CWE-476: NULL Pointer Dereference
    Score: 9.74
  15. CWE-732: Incorrect Permission Assignment for Critical Resource
    Score: 6.33
  16. CWE-434: Unrestricted Upload of File with Dangerous Type
    Score: 5.50
  17. CWE-611: Improper Restriction of XML External Entity Reference
    Score: 5.48
  18. CWE-94: Improper Control of Generation of Code (‘Code Injection’)
    Score: 5.36
  19. CWE-798: Use of Hard-coded Credentials
    Score: 5.12
  20. CWE-400: Uncontrolled Resource Consumption: 5.04
  21. CWE-772: Missing Release of Resource after Effective Lifetime
    Score: 5.04
  22. CWE-426: Untrusted Search Path
    Score: 4.40
  23. CWE-502: Deserialization of Untrusted Data
    Score: 4.30
  24. CWE-269: Improper Privilege Management
    Score: 4.23
  25. CWE-295: Improper Certificate Validation
    Score: 4.06

Only REALISTIC Goals are Worth Anything. The Rest are Depressing Fantasies.

Only REALISTIC Goals are Worth Anything. The Rest are Depressing Fantasies.

Whether you’re planning your long-term IT contracting career or working on getting your next gig, setting goals and working towards them is a surefire way to make sure you get to where you want to be. Our team at Eagle has shared a number of posts on the topic, specifically using SMART goals to plan for the future.

The SMART acronym has a few variations, depending which expert you speak with, but for the most part, it’s agreed upon that great goals are Specific, Measurable, Attainable, Relevant (sometimes Realistic) and Time-Based. That Attainable/Realistic step is key. Failing to get that right can lead to expectation creep and you will find yourself feeling inadequate and miserable.

Ambition is a strong character trait but too often, we set goals with too much of it and combine it with a vision of perfection. This creates fantasies of achieving something we can’t, setting us up to be doomed for failure and feeling depressed about life.

Make Sure Your Goals are Realistic…

…for You

First and foremost, when setting goals, you have to know yourself. Ask some internal questions. What is your motivation for accomplishing this goal? Is it something you even want to accomplish or have you set this goal to please others? Taking on a goal that lacks intrinsic motivators is less likely to be accomplished.

You also must understand your weaknesses. Setting a goal to learn a new, in-demand skill is a great idea. But, if it means working in a subject where you’re generally weak or if you have a learning disability, then associating short timelines is unrealistic.

In summary, to set realistic goals, you must know yourself.

…for Your Life

Once you know yourself, you must also take a step back and understand where you are in life. Do you even have time to work towards the goal in the timeline you set? Does it have a financial, education or geographic requirement that would destroy other parts of your life?

Setting goals that will not fit with your current lifestyle is not only a recipe for failure but it can also have serious consequences on your health when you try to squeeze too much in. Know when to say no, both to yourself and to others.

…for Others

While your goals might be fully achievable for you and your life, there is a strong chance that complete success depends on external factors. Perhaps you want to get a job within a certain client or industry that isn’t hiring right now. Or the economy in the region you would like to work is weak at the moment. Or, maybe that job is stuck behind a recruiter with whom you have a terrible relationship and there will be extra work to get around that barrier. Truly realistic goals will take these external factors into account.

…in General

An IT professional who is fresh out of school is setting themselves up for failure if they expect to get a Senior Software Developer position within their first six months of graduating. If you’ve always been an accountant, planning to land that developer job next week is a joke. Understand time and physical boundaries and don’t set goals that only one in a million people could ever accomplish. While this ambition may look great on paper, this type of failure will not be helpful to your career or your mental health.

Do not be discouraged by the points above and eliminate your goals because they don’t meet the criteria of being realistic. Begin by brainstorming all possible obstacles to your goals (internal and external) and set plans to work around them. They will become smaller goals to work towards with your larger one being the big picture goal. Next, look at the timeline and adjust it based on those smaller goals and the other factors holding you back. Set mini milestones to help celebrate all accomplishments and understand that you are moving closer to the ultimate goal.

Design Trends We Will See in 2020

Last year we shared an infographic that highlighted all of the upcoming 2019 web design trends. As predicted, the trends were a hit and we’re back again to keep you updated with the upcoming 2020 design trends to look for.

2020 is all about immersive virtual reality panormas, zero-gravity layouts, surreal product photography, and vivid, futuristic colors. While you might not have first-hand interaction with the design elements, being familiar with them is advantageous. Not only are you expanding your horizon but you can also chime in with your thoughts on design when it comes time. You’ll sound knowledgeable and might even impress a few with your futuristic outlook from the 2020 design trends.

View the full list of predictions for 2020 design trends from Coastal Creative in the colorful infographic below.

Infographic - Design Trends for 2020

Use These Easy Guidelines to Significantly Improve Your Website Design

Having a personal website can be incredibly useful for your career. However, it can be easy for a website to go astray and not have the professional effect you want. Here is a simple set of tips and tricks you can follow that will  let your website shine.

Top Trick: Show Somebody

This is “skipping to the end” in a sense, as this truly is the greatest trick you can employ.

Show somebody you confide in your website and get their feedback.

A confidant will provide you with the most comprehensive insight. When you watch as an avatar for your future employer or client browses your site and asks questions, it will reveal to you all the flaws.

Find someone you respect in a similar industry, hand them a laptop with your site loaded, brace yourself, and take notes.

Ask yourself: What is the purpose of your site?

Why do you have a website? What do you want to accomplish with it?

These seem like a lot of questions but having a solid grasp of your “why” can help with “what”.

Do you want to become a thought leader in your industry? If that is the case, you’ll want to showcase your case studies or articles to prove your authority. Do you want new work contracts? Ensure your service offering is clear, and you have examples of your work.

Knowing what outcomes you want from the site, will help you prioritize the right elements from page to page.

Ask Yourself: Who do I want to reach with my site?

Similar to purpose, you must understand your target audience. How do I want to address them?

Your target audience will also impact the “What” of the site if you put yourself in that position and walk through what would be most important to them.

Get Inspired

There’s no need to go this alone! There are very successful websites in your industry, and they have spent a lot of time testing and refining. Find some excellent examples of your contemporaries and learn from them!

You’ll do yourself no favors by doing an exact copy, but with some research into your industry, you’ll be able to see some trends and ideas that will benefit you on your site.

Template vs. Custom Design

If the site has all the bells and whistles, then you’ll end up spending a lot of time polishing bells and tuning whistles. Prioritize solid foundations.

Again, who are you targeting, and what do they care about?

If the site is a repository for your information, the only thing that matters is easy navigation and a fast load time. Consider a hosted service like SquareSpace or Wix.

If you’re a developer, being able to point to a beautiful and well-built site may be a plus.

It’s important to remember here that the site should serve you and your purpose. You don’t want to be bogged down with issues that detract from your job/client hunting, so choose your design wisely.

Mobile Friendly

There are lots of variations and options to choose from when designing a site, but these days there is one non-negotiable factor: Mobile Friendly.

There is a good chance someone will access your site on their phone. Your website must look great and be easy to navigate on a mobile device.

Stick to Known Conventions

It can be fun and exciting to try unique and innovative layouts for your website.  However, it is a misplaced effort if it doesn’t serve your purpose.

We can lean on learned conventions. This is what people have come to expect on websites:

  • Logo or name top left or top center, links to the homepage
  • Main navigation top right or top center
  • Contact in the menu as the last item
  • Social media links in the header or footer

Using known conventions may be a bit boring, but it can make your life and the life of your viewer easier.

Use the Right Images for Your Target Audience

The human brain can process images up to 60,000 times faster than words. It’s a powerful tool for us to use to convey to our visitors that they’re in the right place.

Thankfully, there are amazing sites with exceptional high-quality free photos. Here are some sources to check out:

Let Everything Breath

There will always be a desire to fit in as much information as possible into any given space. However, this can be counterproductive.

Reducing content and adding blank space around elements allows the reader to effortlessly digest and transition between pieces of information. It produces an orderly and pleasant reading experience that will convey much more.

Only Use Two Fonts

We’ve touched on a principle of “less is more” a couple of times already and this remains true with fonts.

Use no more than two fonts on your website.

To find fonts that coordinate well together, check out the following free sites:

Use Headers Wisely

Headers (H1, H2, H3, H4, H5, H6) need to be meaningfully different from the body text, and one another. Deploy them wisely to help guide your reader and some bonus SEO boosts.

Think about the Headers like the sections and subsections in a piece. You would organize your content on a page like this:

<h1>Title Here – Only One of These Per Page</h1>

<h2>A Sub Title</h2>

<h3>Point One</h3>

<h3>Point One</h3>

<h4>Small Point One</h4>

<h4>Small Point One</h4>

<h3>Point One</h3>

<h2>A Sub Title</h2>

<h3>Point One</h3>

<h3>Point One</h3>

<h4>Small Point One</h4>

<h4>Small Point One</h4>

<h3>Point One</h3>

Consider the suggestions below as a starting point to apply the differences in the font sizes:

P 16px 1x
H1 40px 2.5x
H2 32px 2x
H3 28px 1.75x
H4 24px 1.25x
H5 20px 1.25
H6 16px 1x

Limit the Colors

It can be fun to play with colours within a design or a website. Keep in mind that just like fonts, things can go wrong fast and have a detrimental effect.

The benefit of limiting colors is that it makes it easy to guide the user with an eye-catching pop of color. Imagine a page that is primarily grey and white with a bright orange button. Where do you think the eye would go?

Each color has emotions tied to them. Even the range of colors can elicit a response. What emotions do you want to convey? Consider using the corresponding colors as per this image from UserTestingBlog.

Use These Easy Guidelines to Significantly Improve Your Website Design

Check out the following sites to help you settle on a palette that is cohesive and conforms to colour theory:

Make Your Website Yours

Follow these guidelines and you’re sure to have a professional website that helps achieve your goals.  Regardless of the platform or style you choose, your audience will appreciate if you stick to the foundations listed above.

Cheers to your great looking website!

About the Author

Trevor Alexander has been a professional designer for 15 years, including being part of 3 successfully sold start ups. He now puts together resources and courses to show how ANYONE can produce better looking Presentations, Documents, Reports, and Images by following practical and repeatable strategies. He firmly believes that Virtual Assistants, Marketers, Developers, Business Owners…Everyone, CAN improve the design of their work. Check out his site at https://justenough.design/

Increase Your Punctuality with These 6 Tools You Already Have

Increase Your Punctuality with These 6 Tools You Already Have

Early is on time, on time is late, and late is unacceptable.

That saying has been referenced for years in various circumstances, being quoted in a number of books and commonly heard inside fast-paced business environments and military organizations. Punctuality is a trait valued by many and to lack it can have a negative impact in your job search and contracting business.

Recruiters commonly tell us that one of their biggest pet peeves is when IT contractors show up late to an interview or client meeting. If you’re a talented technology professional with in-demand skills, being a couple minutes late isn’t likely going to cost you a job (unless there is an equally talented, in-demand professional also in the running), but it will erode your reputation. People will be less inclined to want to work with you, you won’t get top priority on future contract opportunities, and your perceived value will be lower when it comes time to negotiate rate.

If you’re looking to improve this aspect of your life, before you invest in the latest apps and tools, or take on some off-the-wall technique you saw in a trending article, consider these six tools that are already in front of you and available every day.

You

Use all the fancy apps and podcast-recommended tips you can find, but until you internalize punctuality, you’ll never change anything. Truly understand why you want to be more punctual and how it will improve your life. Also recognize how being late affects others and how it makes them feel. Finally, determine the root cause about why you’re always late, and then start fixing that problem rather than wasting time in the wrong areas.

Clocks and Watches

The next tools to master are your various clocks and watches — in your bedroom, car, kitchen and on your phone and wrist. Have clocks everywhere and ensure they’re working. This will help you keep track of time and make it easy to see when it’s time to leave for appointments. A common technique is to set your clocks a few minutes ahead and “trick” yourself into being early. Critics of that say it just leads to self-correcting because you know it’s ahead, but others have researched it further to perfect the art of “tinkering with your understanding of time”. If that still seems like too much effort, then invest in a procrastinator’s clock, which runs up to fifteen minutes late, but never the same amount of time. This will force you to follow it because you’ll never know the actual time!

Calendars

Every smartphone has a calendar app installed and if it doesn’t, there are plenty of free ones available. Research your app and learn about the features it offers, for example, the Google Calendar has number of handy tools within it. Also make sure that calendar is smartly and efficiently organized — enter all information about a meeting inside the event, including location, directions and special instructions. Set reminders a few hours and a day before to ensure you don’t forget. Finally, consider scheduling the event to start a few minutes earlier than the actual time. This will force you to pay attention a little earlier.

Alarms and Reminders

It’s easy to get lost in tasks like coding, resume-writing… Facebook. Use alarms to set gentle and not-so-gentle reminders so time doesn’t slip away so easily. The most-used alarm most of us capitalize on is the one that wakes us up in the morning. That alarm comes with one of the most abused tools — the snooze button! Studies have proven that the snooze button is NOT your friend. Not only will it make you late, but it forces you out of a deep sleep over and over, which is a terrible way to start your day. If you know that habit is not going to go away, though, be sure to set your alarm earlier to give yourself a snooze window.

Maps

Popular map apps are so much more than navigation with a mouthy computerized voice telling you where to go. For example, Google Maps uses satellite to know traffic flows and will connect with your calendar to let you know what time you have to leave in order to arrive at the destination you entered. Maps are also great to help you plan ahead for parking, smartest routes, and back-up routes. As soon as you have an appointment, flag or star the location in your maps app so it’s easy to find and get directions to when you need it.

The Shelf by Your Door

This one is more metaphorical but can also be literal. The premise is to be prepared the night before a big appointment. Have everything ready to go at the door, or even already loaded in the car (which has plenty of gas in it). When it’s time to go, there will be no stress, even if you are running a couple minutes late.

There are factors beyond your control and in those situations, give a heads up to the people who will be waiting for you. If you’re not concerned about your reputation or missing out on work because you have a habit of always being a few minutes late, then let the fact that it’s disrespectful motivate you to improve your behavior. Remember, being punctual does not have to require massive change and tools, simply taking advantage of what you already have can have a great impact.

Top iOS Mobile App Developments Trends for 2020

iPhone
Photo by Koby Kelsey on Unsplash

From the dawn of its creation, the iOS mobile development platform has provided versatile and powerful options for creating stunning apps. One of the reasons for its permanent thriving is the continuous state of flux that encompasses all the latest trends in mobile app development. New iPhones are out on the market each year, including improved hardware that sets the base for innovative mobile app development, year by year. To avoid lagging behind, mobile app development companies must stay on track with the new advancements and find their place in the platform, too. If you are interested in keeping abreast of the latest mobile design trends, here are a few pointers to focus on as we are moving into the year ahead.

UI Design Trends

Each iOS app development project starts with the basic goal to improve user satisfaction, which inherently makes new progress all about UI or the user interface. The user interface must not only improve in appearance but also provide a new level of satisfaction with feature simplicity and information delivery. This is not so simple as Apple puts iPhones and iPads under the microscope each year to perk up the hardware.

A key trend of feature mobile app development on the iOS platform is leaving this focus on aesthetically pleasing apps behind. That doesn’t mean that iOS apps will no longer be beautiful but it does mean that the ease of access to information and the simplicity of use take the number one place. Therefore, iOS apps must be made from scratch or revamped to help users complete tasks in the shortest possible time.

While we are touching upon aesthetics, the blurred borders of new iPhone screens play a major role in future iOS mobile app development. Designers need to find ways to create apps that work well on older phones with prominent edges and on new seamless iPhone models.

laptop
Photo by Daniel Korpai on Unsplash

iOS Animations and Graphics

Animations are an excellent way to attract users and keep their attention in the flow as they navigate through the app features. Animations enable sleek functionality – an aspect of user experience that users are primarily looking for.

How web browser tabs, for instance, look and shift on a smartphone, as well as other aspects that soften the lines between visual appeal and functionality, are important for keeping users pleased with the product.

3D graphics may be more demanding on behalf of the mobile app development team, but rewarding nevertheless because they provide an extra level of dynamism in transferring information to users, reducing the need for physical prototypes and boosting the visual aspect of products. It is important not to overdo 3D graphics as they can slow down loading times.

Gesture-based Navigation

One of the key trends for 2020 is the placement of navigation elements on your end product. A major design principle of navigation in past mobile app development trends was to place as many buttons in the navigation bar so that users have greater visibility of what is available. As the number of functionalities is growing, this approach doesn’t work anymore because the visual appeal gets lost among all those buttons.

Designers are now focusing on a more hidden, intuitive button design, placing the maximum number of buttons on the home screen without distorting aesthetics. Functionalities are still there but are enmeshed in the gesture-based navigation. Features compressed in this way will improve the user interaction with the app and ultimately boost engagement rates – it makes more sense to create iOS products that support a few key features than making it all about endless app possibilities which will impede the smooth use of the home screen.

If you align these iOS app development trends with the design process of past products in order to update them or use them while creating new ones, clients will ultimately reap benefits that haven’t been so important while ago but are essential as we move forward.

About the Author: Michael Kelley

With a background in journalism, Michael’s passion lies in educating audiences in the realm of tech. He is especially intrigued by the world of app development and all associated facets including Android, iOS, blockchain, andd App technology. Michael has spent the last few years working with app agencies to elevate their content strategy and expand his knowledge even further as app development technologies advance. When he’s not typing away at his computer, you can find Michael traveling the globe or taste-testing pizzas in search of the ultimate pie.