Category

Software Lifecycle

GitHub Template to Kickstart Your Project

By Development, Software Lifecycle, ToolsNo Comments

Have you ever needed to ramp up on a project quickly to produce a product as soon as possible? Typically, development teams start out fresh by creating a brand new code project; however, creating new projects from scratch can forfeit time that would otherwise go into building out new features. A GitHub template can help developers reuse code to bring a product to production level at a much faster rate.

We use templates at Bytelion to help our startup clients achieve their goals in a smaller time frame. Check out this GitHub template for a Ruby on Rails API project we have created. In this post we will demonstrate how we created this template so you can get started with recycling your code!

4 Steps to Create a Template Repository

1. Create a new repository that will host the GitHub template

Creating a new repository is the first step to creating your first GitHub template. To create a new repository select the plus button from the top of the page and enter the required info. You can choose to share your repository with the public or you can keep it hidden between you and your team!

2. Generate your code for reusing as a template project

Once you have a repository created you can add any code that you would like to use as a template. In our example Rails template we chose to have a Rails API that will be ready to use, the only steps left are to create our models and controllers that will be used when the API is called by a client.

3. Mark the repository as a template

When the code in the project is complete, navigate to the settings tab in GitHub and select the option to mark the project as a template repository.

create github template4. Use the template to create a new project

To create a new GitHub repository with the template do one of the following. Create a new repository as shown in step 1 and select the template you would like to use. Or if using a public template, you can use the “Use this template” button on the repository page. As a result, you will have created your first GitHub repository!

use github templateNow that you have created your own template you can get started with reusing your own code to kickstart your projects! Have a template you would like to share with us? Let us know by sharing this post and mentioning us on Facebook, Twitter or LinkedIn!

Key Takeaways from Baltimore Innovation Week’s Session on Lean Product Design for Startups

By Design, MVP, Product Design, TestingNo Comments

Bytelion was thrilled to partner in Baltimore Innovation Week 2019 (BIW19), hosting a session titled, “Lean Product Design for Startups”. Since inception, over seven years ago, Bytelion has been a proud supporter of startups in the Greater Baltimore area and beyond. As an everyday practitioner of agile methodology for software development, the team at Bytelion has spent countless hours taking a “lean” approach to designing and developing software and applications for both startups and well-established businesses.

Baltimore Innovation Week 2019 logo

Last night, Bytelion’s Head of User Experience, Marc Hausle, led the session for a large group of BIW19 attendees at Clark Burger in Harbor East. If you were unable to attend the event, here are some of the key takeaways from the session.

What is Lean Product Design?

Clark Burger with people

Founders and entrepreneurs commonly will fall in love with an idea or a “unicorn vision” they have for the business, which is usually based on their untested assumptions. When they build based on these unvalidated assumptions they are more likely to waste valuable time and resources building something nobody wants. The goal of lean product design is to avoid this waste by focusing efforts on only building what you can validate as required based on reliable data and/or customer feedback. Lean product design recommends building something fast so you can begin to test hypotheses against real user feedback.  

Move Fast and Iterate

Once you start gathering feedback and performing other research it is critical to document everything as well as clearly defining how to measure success for both the business and the users. By building what is commonly referred to as an MVP, you can test your hypotheses, validate your assumption or pivot if necessary. Don’t try to be perfect in the beginning and be ok with being wrong as it will allow you to make necessary iterations early before you go too far down the wrong path.

The Design Process

When you are in the design process, you’ll want to create a prioritized list of potential features. Focus on first building the things that you know will have the biggest impact on delivering your product’s value proposition.  “Fall in love with the problem you are trying to solve as opposed to particular features or solutions you are building”. You’ll be more successful if you stay focused on the problem and are willing to iterate towards the developing features that will best solve it and avoiding those that don’t.  Marc also introduced the concept of time-boxing for certain design activities so that you don’t waste any unnecessary time or energy trying to perfect something before you test it.

When taking the lean approach there are a number of practices you can incorporate into building the best user experience for your product. For example, Marc discusses user personas and user journeys, red routes, information architecture, user flows, hand-drawn sketches, wireframes, and prototypes. These practices are all ways to gather and incorporate data garnered from real user interactions and testing. Each exercise also builds off of the other and makes the next step in the process easier. It is also easier to go back and improve and iterate on past versions of what you have done.

Lastly, he discussed design sprints which are a unique five-day process for validating ideas and solving big challenges through prototyping and testing ideas with customers.

Feedback is critical!

If you were able to attend the event we thank you and would love to get your feedback. 

Or if you didn’t make and you are interested in learning more about Lean Product Design please feel free to contact us for a free consultation to see if it makes sense for you. Contact Marc directly via email at marc@bytelion.com. 

Automation 101 with Selenium IDE

By TestingNo Comments

Testing is a vital part of the software development lifecycle for any team, from small to large. Testing early and often ensures that bugs are found and fixed promptly, preventing them from snowballing into costly issues down the line. An important part of this process is regression testing or making sure that present functionality isn’t broken by the introduction of new features. Because of the iterative nature of software development, regression test suites tend to grow with every update, and it can quickly become tedious and time-consuming to manually perform all of the test cases. 

This is where automation testing comes to the rescue! By using automation software, such as Selenium, regression testing becomes as simple as pressing a button and letting the computer do all the work. This saves time and frees up resources to focus on other issues. However, making the leap to automation testing can be a daunting task for someone who only has experience with manual QA methods. If you find yourself in that boat, then you’ve come to the right place! In this article, we will learn how to use the Selenium IDE plugin for Google Chrome to create and execute our first automated test case!

Before we get started, download the Selenium IDE plugin for Chrome here:

https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd?hl=en-US

Creating Your First Test Case

Once you have downloaded Selenium IDE for Chrome, before we can create a test case, we will have to create a new project. Start by launching Chrome browser and clicking on the Selenium icon in the top-right corner. Once Selenium IDE has loaded, you should see a window that looks like this:

Click on ‘Record a new test in a new project’. Name the project whatever you like – I will be naming mine ‘Selenium 101’. After choosing a name, you will be prompted to enter a base URL for the project. For this exercise, we will be using the following URL:

https://www.ultimateqa.com/automation/

This page was created as a resource to help people learn automation testing, so it is perfect for our purposes. Enter the URL and click ‘Start Recording’.

A new instance of Chrome browser should be launched with the base URL entered. You should see the following banner somewhere on the page:

For our first test case, let’s automate the completion and submission of a basic form. While Selenium IDE is recording, click on the link labeled ‘Fill out forms’. On this page, you will see two forms side-by-side. Fill out the leftmost form with your name and a message, and click ‘Submit’. You will notice that Selenium IDE is recording what you do and translating it into steps for it to recreate later. It should look something like this:

Click on the red square icon in the top-right corner to stop recording. At this point you will be prompted to name the test case – I chose to call it ‘Submit Form’. 

 

Now that our first test case is made, let’s see it in action! Click on the ‘Run current test’ icon at the top of Selenium IDE (or press ctrl+r). You should see a new Chrome browser instance open and automatically navigate to the base URL, proceed to the ‘Submit Form’ page, enter the values that you chose, and then submit the form. Once it’s completed, you will see a message in the log displayed at the bottom of Selenium IDE indicating that the test was completed successfully (unless it failed for some reason). 

It’s that simple! Now, instead of having to fill out forms manually over and over again, you can automate the process and let the computer do the work for you! 

Now that you’ve gotten your first test case out of the way, I encourage you to explore the website some more and try to create some more automated test cases. The page has several different links that have a variety of web elements for you to play with. As you experiment, take note of how what you do is translated into steps in Selenium IDE. 

Conclusion 

This is just the tip of the automation iceberg. While the record-and-play function of Selenium IDE is great for simple tests like the one covered here, there are far more possibilities with creating your own custom test scripts. While that is outside the scope of this article, you can start familiarizing yourself with the scripts by exporting your test cases from Selenium IDE into test scripts. You can choose from a few different programming languages, including Java and Python. This is a great way to start automating some simple test cases while also preparing yourself for bigger and better things with custom test scripts!

Enterprise UX Gone Wrong

By Design, Leadership, OrganizationsNo Comments

There are many things that can go wrong when building a web-based platform or application, but the most tragic of offenses comes from a poor UX plan stemming from the very beginning of the development process. A great UX process, accompanied by a team of highly qualified individuals will make a world of difference, from your wallet to the face of the product. The following are symptoms of a poor UX process and how it impacts your product.

 

Your Bottomline Is Suffering

You may not be sinking, but you’re losing money. Perhaps you aren’t hitting your quarterly goals or are starting to see negative trends. It may be a surprise, but design can help solve this problem.

Strategy and Discovery

There is a good chance your business is heading downhill because of poor planning. As in a lot of things, business needs planning, not just financially, but with all that you do. The design is not an exception. The first step to a great User Experience (UX) is to review and understand your business requirements. You could potentially be focusing on one or more of the following business strategic priorities:

  • Reduce costs
  • Increase revenue
  • Increase new business
  • Increase existing business

Having the team and stakeholders on the same page as to what the goals of the company are can pave a clear path for the design and development team for the next steps. No more asking “why are we doing this?”. With business and user requirements determined and explained up front, everyone will know why each aspect of the product is the way it is and more importantly, how to better accomplish the goals of the product. Additionally, planning in advance allows for you and your team to be more knowledgeable and make informed decisions about your product resulting in higher user engagement.

 

Business Strategy is the foundation of the UX process, without this,
you can expect your product to come crashing down.

 

Late Deliveries and ‘Never-ending’ features

Your project is behind schedule, priorities change on a whim, features never seem to get pushed.

 

Defining Scope

Why is this happening? Simple: Your project scope is out of whack. Either you never defined the project scope with the team, or your scope is starting to go off the designated path, leading to unfinished, late work. Scope definition benefits the team and product in many ways. It allows everyone to be on the same page about what can be done in a specific time frame and how it will be done. It is best to know your user and business requirements before trying to define your project scope. Once you know your goals you can begin to prioritize the next steps based on the requirements set in place, Prioritizing can be, and in many cases is, the leading problem in most production. A lack of prioritization is largely caused by stakeholder disputes which in turn cause uncertainty among the team and ultimately leads to nothing ever getting completed in a timely fashion, if at all. Stakeholders will be able to see, with abundant transparency, the project timeline, and feature prioritization. This also saves the development team from stakeholders who want to start changing and adapting the project scope mid-project. Defining the scope allows you to build products that are useful for your users and meets their needs.

 

Your project scope should not be defined by opinions and ideas, but rather on the user and business needs and requirements.

 

Engagement is down

You’re losing users, they aren’t spending much time using the site or app, customer purchases are low, or you can’t get users to onboard. Users don’t seem to be catching on to your product, so what gives?

Structure and Ideation

Users like pretty, fun, unique things, but they also like what they know. They don’t want to think, guess, or wonder while they’re using your product. In order to successfully build a product that users will not only enjoy using but keep coming back to, you need to know what your users want out of your product. Engagement is 100% related to your business and user requirements. If you have not written out and made it clear what your purpose as a business is, as well as what your users need from your product, you cannot successfully build a product that is created for your users. Understanding what your customers need and want is key to providing a service or product that meets those needs.

 

For example, imagine a user has just ordered an item from your website and wants to know about your return policy, but can’t find any information regarding this on the purchase confirmation page, they will have to start searching the site to see if they can find the information they need. Not giving the user the information they need when and where they want it or expect it can lead to frustration and an overall bad experience. Users will have a better experience when they have to think less, and know more.

 

Your users are the core of your product. Understanding how they think and why they use your product will help you build the right structure.

 

Massive Project overhauls

You’ve had re-designs, feature recall, structure changes, the list goes on. You thought you got it right from the start, but things keep needing to be adapted, changed or removed altogether.

 

Skeleton and Prototyping Phase

Lots of changes and modifications to a site either prior to or shortly after launch can most usually be linked back to the failure to draw out, wireframe, and iterate on the initial design layout. This step is crucial to the future of the product as it allows you to identify holes in the plan, points of user error, and feature issues. By foregoing this creative and iterative process you go straight from a features list to finalized design without much thought in-between. Iteration is crucial to the success of a design, but not less or more important than asking the right questions and listening to your users. A major player in project overhauls is a team’s inability to read user data correctly, interpreting what the data says to meet their needs or opinions. Cross-vertical collaboration needs to occur when discussing user input to make sure discussions involving technical capabilities, financial constraints, and design aspects are considered when solving issues or implementing new features. A product’s ease-of-use is directly related to your team’s ability to collaborate, understand user data, and adapt and iterate when given new information.

 

Iterative design produces the best result. Your first is never your best.

 

Brand Experience isn’t right

The colors are off, the logo is confusing, the imagery is tacky, it looks dated. Maybe your site looks nice but isn’t a good representation of your brand. Whatever it is, you know it’s got to change.

Surface and design

Your product’s look and feel isn’t matching the look and feel you had in mind or isn’t looking good at all. This is all due to the UI (User Interface) design. The UI is the ‘surface’ of a product and conveys to users the meaning, use, and connotation associated with the business and product itself. The UI covers everything from colors and fonts to animation and transitions. A good UI will take into account who your users are, how they should feel using your product,  and your business’ brand. A common occurrence that can cause the UI to not have the right feel is when the design does not line up with the target market. This can happen for a number of reasons, possibly because you do not know your target market, you are making assumptions about your target market, your team has not spent the time to get to know your target market, or most commonly someone on the team, typically the product manager or a stakeholder views the product as their baby and does not want to listen to any views other than their own even when those views are backed up by data. You can help to avoid these types of mistakes by clearly laying out who this is for and why the choices being made make sense for that groups of persons. The overall feeling about the brand/product should be good or your Brand Experience is NOT good.

 

You think you’re ‘Done’

It doesn’t matter what your business delivers, you are never Done. Your user’s wants, needs, and goals are ever-changing and you need to adjust to make sure you continue to bring a useful, functional, pleasing product.

 

Testing and Evaluation

Design is a key aspect of updates and adjustments to your product since using a UX process can help you determine the best options for your business moving forward. Whether it’s interviewing users or doing A/B testing, the most impactful tool you can utilize is testing. Testing your product through various means will give your team insights into the way your users’ think and how they feel when interacting with your product. Through the evaluation process, unknowns are discovered that allow your company to pivot and adapt quickly and more purposefully, providing greater meaning to your product. An issue you can and most likely will run into through testing and attempting to make changes to the product will be a stakeholder coming forward and disagreeing with decisions because they feel the product is better one way than another purely based off their own opinion. This is referred to as Pride of Authorship. They believe since they started the project that they should have it the way they want it, which you could argue is correct and fair, however, this thinking can damage the product, user engagement, leading to a poor team environment and a hurting the bottom line. Keeping stakeholders aware of the core users’ needs and goals and how new feedback benefits the company and product can allow them to see their version may not be the best holistic option.  

“Usability testing shows you if something is usable. Beta testing shows you if people will actually use it.”
Rachel Decker

Pros And Cons Of Building Your Website With WordPress

By Development, Marketing, Mobile, MVP, Security, Startup, Tips & Tutorials, Tools, WordpressNo Comments

WordPress as a web building tool has built its reputation as providing amazing features specifically in the world of CMS, powering over 75 million sites and almost 23% of the World Wide Webs’ sites. However, despite its popularity, WordPress has drawbacks as a website development platform that you should be aware of before jumping on the bandwagon. Being informed is one of the most important factors in deciding where and how to build your site.

 

A few of your options for building and designing your website:

 

Website Editor

(Wix/Squarespace or similar solution)

Website editor, easily learned, drag and drop designs, less customization, small sites

WordPress

Website builder, edit and manage content through admin access, customization limited to WordPress support and technical capabilities, learning curve

App development

Full development team/developer, Fully customizable, Supports large, complex sites with high user traffic

Some Things To Consider

 

Typical WordPress use

WordPress is largely known for its CMS (content management system) capabilities, but it supports models for blogging, eCommerce, and forum websites as well. Sites that differ from this will most likely need customization.

Cost

Building a site can be expensive, you need to make sure you’re getting what you need, rather than trying to opt for the cheapest solution. Custom website development can cost anywhere from $5,000 to upwards of hundreds of thousands of dollars, depending on your needs.

Time

Building a site takes time. How much time do you have? Most web projects take an average from 12 to 16 weeks. However, the time is always dependent on several factors, such as the complexity of the project, scope of work, number of people involved, etc. Always be sure to set a realistic timeline when looking at website building solutions.

Resources

How big is your team? Do you have any technical skills? WordPress maintenance requires a learning curve and dedication to the site after the initial build. To keep your site up to date, make sure you are prepared to learn or are willing pay someone for maintenance.

Security

WordPress is a great resource because of its popularity, but that popularity leaves sites more vulnerable to hackers and information leaks. What type of content are you providing? Does it need to be secure? Developing your own website or mobile app can provide more security.

Mobile

WordPress does not support mobile app development but does allow for you to have a responsive mobile version of your site.

Users

Does your website require a large number of users to log in and out of your site? Depending on your business, WordPress may not be able to support the high volume and data storage that your site requires. Consider building a customized application with a development team.

 

Benefits of WordPress

 

Ease of Use – For non-technical folks

WordPress is great for non-technical users who want to be able to manage their content and make minor adjustments without getting knee deep in code. The content builder enables you to design within a set framework BUT does not allow for much customization. If you are looking for customization, you will have to get your hands dirty and add in some code.

Plugins

WordPress has over 45,000 plugins that you can upload that increases new functionality options. This is great for you, it means you can do more than just make a basic blog! However, they require a lot of updates and may need customization and code to get them working properly with your site.

SEO Friendly – Kind of

WordPress is wonderful because it bumps up your site on web browsers from the built-in SEO(Search Engine Optimization) system, however, if you are a novice with SEO, you may need some coaching. Too much tagging and repetition can kill your SEO rating and send your website to the bottom of the page. Luckily WordPress has a wide range of plugins to help with this, including our favorite, Yoast, which helps by rating your pages on readability, keywords, and more!

Open Source – Faster Development

Open source code is great for speeding up development time. All of the code is shared and used between developers all over the world. This means your developer doesn’t need to make everything from scratch, cutting down on development time. However, this is a catch 22, as open source also means less security. Be sure to you weigh the importance of development time over site security.

Professional Themes

There is an endless source of pre-built design templates from which you may choose to use for the foundation of your site. Themes include one or more demos which you can activate. This provides you with an appealing, pre-designed site that requires minimal effort to get up and running. Keep in mind that these can be pricey and limit your site’s capabilities and customization, as not all plugins work with every theme.

Overall Lower Cost

Typically WordPress is a cheaper option than hiring a software development team. Since it is open source and widely used, you have many options for designers and developers. You also have the option to maintain the site on your own – if you have the resources and time to do so.

Mobile-Friendly

WordPress makes it easy to transition your site from desktop to smaller screens such as tablet or mobile. This may require some customization to make it just right, but it can beat building a mobile app or an entirely new mobile site. Make sure a responsive mobile site is a right option for you as Hackernoon reports that in 2018 mobile users spend about an hour on the mobile web, while almost 3.5 hours on mobile apps.

 

 

WordPress Negatives

 

Open Source – Security

Open source is great for fast development, but it can leave your site vulnerable to attacks from hackers. This can lead to problems down the road, either legally or with development constraints. Are you going to be handling credit card information? What about users’ personal info? If you do, you will need extra security, make sure WordPress can secure your info or pick a developer/development team that is knowledgeable and can successfully secure your data. Have questions? Let us help you feel safe about your site’s security.

Customization Needs Coding

WordPress was built for blogging, CMS, forums, etc. This makes breaking that model to build a restaurant site, for example, with online ordering, slightly more difficult. Most WordPress themes aren’t built for any models besides the typical ones mentioned above, which means more customization and less flexibility for the overall design of the site. This doesn’t mean it’s impossible, but it does mean less access to content without digging into the code base.

Frequent Updates

WordPress is constantly trying to improve and update their structure to better serve their large user base. Because of this, updates occur on a regular basis and could impact your site’s performance. At times, you may need to update plugins, which could result in your plugins no longer functioning correctly or not being supported by the new version of WordPress. It is very important to save a backup of your site before updating, just in case something goes wrong while converting to the new version. As you can imagine, this process requires some technical knowledge and the ability to fix bugs that may occur as you update your site.

 

Pro tip: WordPress doesn’t offer support!

 

Learning Curve

No matter whether you are a coder, a designer, or someone with no technical knowledge, WordPress requires time to learn the ins and outs of building and maintaining a site. If you think building a WordPress site is as easy as dragging and dropping elements on a page, you’ve got it wrong. WordPress is a very robust solution that is constantly updating and changing, it takes time and dedication to keep your site up-to-date.

Slow Speeds

WordPress has a reputation for having slow loading times and speeds for users. This is a big downfall as research from Hobo shows that users quickly get disheartened by slow loads times. Users will leave your site to find what they need elsewhere within 2-10 seconds of waiting on content to load. Even more concerning, eCommerce users will leave only after 2-3 seconds without content loading.

Not Easily Scalable

Unless planned well in advance, WordPress is not the best at scaling businesses. Most models are built with the intention that the site will stay relatively at the same size, volume, and structure. Modifying your WordPress site structure later down the road can lead to some sticky situations with plugins, content, and speed.

No Support Service

Building a WordPress site on your own? You’re Brave! Although WordPress has a massive following and plenty of answers that are just a google away, WordPress does not have an official support service. This means no one can get into your account and help you solve those more difficult, niche questions. Website editors typically have lots of support, but if those solutions don’t serve your needs, consider hiring a developer or development team who will only be a call away to give you unlimited support to solve your issues ASAP.

 

 

Conclusion

WordPress is great for some websites, specifically for smaller sites that don’t require tons of functionality and serve as a source of information rather than supporting large amounts of user data. Making sure you understand the capabilities and constraints of using WordPress will allow you to make the best decision for your business. If WordPress doesn’t seem like the right solution you may be better off using something more accessible like Wix, Squarespace, or even hiring a development team to build a customized solution. Sometimes the answer isn’t clear, and you’ll need to sit down and map out all of the pros and cons of each solution available to you. Feel free to reach out to our team for some expert advice. Good luck!

 

Have questions? Ask an Expert!

Our team of experts is always available to talk through your concerns and guide you in the right direction for your business, even if that option doesn’t mean using our team. Talk now.

Why Do I Need A QA Engineer?

By Agile, Development, Innovators, Startup, TestingNo Comments

Introduction

Why is a Quality Assurance engineer necessary for development of software? Couldn’t I simply get my developers to QA/review their own work? Could I get get developers to review each other’s work? These are all questions that I have come across at some point or other from multiple people.

Before I answer, let’s briefly summarize what QA is:

What is QA?

QA is the analysis of functionality and overall appearance of your site / app. This can include (but is not limited to): Cross-browser testing, screen resolution compatibility testing, grammar, spelling, functionality.. the list goes on. QA is ideally approached from multiple angles.

When testing a simple ‘contact us’ form, the QA engineer would ensure that the email field ensures that a valid email address is entered, the name fields do not accept numbers, the name fields do not accept special characters, ensuring fields have limits so malicious users cannot overwhelm your system by entering large amounts of characters, etc.

QA Responsibilities

A QA engineer’s responsibility is to review each feature before it is released, suggest edits to issues and approve code before it reaches the product owner. Therefore, not only is the entire site under the QA engineer’s watchful eye, each part of the site is analysed during its creation.

Why is QA Necessary For Development?

As you can see above, the responsibilities for QA are laborious. A dedicated amount of time by someone who knows your system is needed. Not only is QA needed for each release, regular testing across your site is critical to catch issues that may affect it from external sources.
Example: Still running flash player on your site? Browsers are discontinuing support since it is considered deprecated technology. Your QA Engineer will (/would) know this.

 

Can Developers QA Their Own Work?

The QA engineer should be a consistent team member, part of daily scrums and involved in feature development. Developers however,are assigned a particular module of the whole system and aren’t truly aware of the system as a whole. Not only is development typically modular, a developer has a completely different mindset and thought process. He/she may not consider all the scenarios a tester would consider.
They can definitely code review their peers but QA is a different game entirely.

 

Want to find out more about software development practices? Check out our Blog!
Bytelion is a full service software development firm. Check out the rest of Bytelion.com or contact us to find out more.

Upgrade Python to support Django 2.0

Upgrading Python To Support Django 2.0

By Agile, Development, DevOps, Django, Python

Across the land, there are many developers, dev ops, and software delivery managers are terrified of the big move from Python 2.7 to Python 3.6 (at the time of writing this).  You can see all of the versions from the beginning of time.    I am going to walk you through why it is happening, how to plan, and more importantly, how to upgrade your infrastructure in a systematic manner.

Assumptions:

  • There are multiple developers on the team
  • There are multiple Django instances in your organization

Why move? Django

The answer is pretty easy… Django, the core web platform programming framework associated with the Python  programming language won’t support future releases in Python 2.7 any more. In fact, the Django 1.11.x series is the last to support Python 2.7.

Django 2.0 supports Python 3.4, 3.5, and 3.6. We highly recommend and only officially support the latest release of each series.

Note according to PEP 373, Python 2.7 is currently expected to remain supported by the core development team (receiving security updates and other bug fixes) until at least 2020 (10 years after its initial release, compared to the more typical support period of 18–24 months).

How to Plan?

When it comes time to plan for an event like this, it is important that you identify the critical components of your infrastructure.

Sample User Story

As a developer, would like to have a complete list of technical assets that use Python so I can generate an upgrade plan that reduces risk to the company.

Acceptance Criteria: Generate a list of the following assets which include:

  • Your Django platforms to include, dev, test, and production instances.
  • Other internal platforms ( AWS lambdas, small flask instances)
  • External/Internal libraries
  • Cronjob or schedule tasks running Python
  • Continuous Integration systems that build  (ie Jenkins)
  • Unit testing
  • QA regression testing scenarios
  • Code repositories
  • Your development team list (each one of them will have to complete upgrades)

Step 1 – Select Your First System

Pick your first system to do an end to end test.  If you only have one single platform of Django, then… you are done.  We recommend that you clone your dev instance for your first test.  If you don’t have a dev instance, stop reading this and make sure that you do have a dev, test and production version of your platform!

If you have multiple systems, we recommend that you select one that is much smaller in scope and will have as little impact on your operations as possible.

Sample User Story:

As a developer, I would like to select my first computing environment to upgrade Python on so I can minimize the impact on our operations.

Acceptance Criteria:

  • You selected one of the least impactful systems in your eco-systems
  • You clone a working environment that it identical to this instance.
  • You notify the team of what you are doing and discuss any impacts that your testing might have with them.

Step 2 – Start your documentation

If you have other people on the team, you will want to make sure that you can guide them along the path of upgrading their computing environments and be able to discuss problems that you had.

Sample User Story:

As a developer, I would like to document the upgrade process steps that  I took so I can help others on the team upgrade their computing environments to Python 3.6 with Django.

Acceptance Criteria:

  • Document your finding in confluence.

Step 3 – Review external dependencies

Not all pypi libraries are Python 3.6.3 compliant.  Many are only built on Python 2.7.  The good news however, is that most major libraries have been ported to 3.6.x.  The complete list of PyPi libraries per version is listed here.

Individual Library Inspections

As a developer, you can see the details of any pip installed library by calling this command: pip show LIBRARYNAME –verbose

Example:

(bytelion_env)~>pip show requests –verbose
Name: requests
Version: 2.13.0
Summary: Python HTTP for Humans.
Home-page: https://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.com
License: Apache 2.0
Location: /Users/terrancemacgregor/.virtualenvs/bytelion_env/lib/python2.7/site-packages
Requires:
Metadata-Version: 2.0
Installer: pip
Classifiers:
Development Status :: 5 – Production/Stable
Intended Audience :: Developers
Natural Language :: English
License :: OSI Approved :: Apache Software License
Programming Language :: Python
Programming Language :: Python :: 2.6
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.3
Programming Language :: Python :: 3.4
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy

Sample User Story

As a developer, I would like to know which PyPi libraries are not supported by my current system so I can determine a migration strategy.

Acceptance Criteria

  • List is generated and shared with the team
  • For each library that is not supported, identify an alternative.

 

Remember the 80/20 rule?

Many of the upgrades from 2.7 to 3.6 can be safely automated, some other changes (notably those associated with Unicode handling) may require careful consideration, and preferably robust automated regression test suites, to migrate effectively.

 

Upgrading Server Code

 

Programming Language :: Python

Here is a list of what some other people experienced:

https://www.calazan.com/upgrading-to-ubuntu-1604-python-36-and-django-111/

https://blog.thezerobit.com/2014/05/25/python-3-is-killing-python.html

What’s the difference between Smoke Testing & Regression Testing?

By TestingNo Comments

You can prevent mistakes found within your application through Quality Assurance (QA) testing. This step is critical for any software project as it helps your team produce the best product before delivering it to the client. In this article, we will discuss two types of QA tests. If you are curious about QA and how it can help your project be sure to read our article Why is QA Essential for your Project?

What is a smoke test?

smoke testing

A smoke test is a quick run through of a site;  it focuses on critical functionality to ensure the site can perform basic features.  The primary features are often called red routes in the software industry.

It only takes a couple of minutes to complete, up to ten minutes at most. What is great about smoke tests is you can perform them either daily or every other day.

Smoke testing came to software testing from a similar hardware test -where the device passed if it did not catch fire (or smoked) the first time it was turned on!

For software purposes, an example of smoke testing could be for a hotel reservation site. In this smoke test example, the tester would ensure the user will be able to sign up, change your password, create a booking, and be notified.

what-the-team-builds-1

What is a regression test?

A regression test is an in-depth, thorough examination of a site. It tests all of the complex user stories and detailed nuances of the site, therefore; they may take many hours to complete. Performing a regression test ensures any changes made did not negatively impact any of the functionality of the site. A regression test will cover every feature, new and old, along with bug fix checks to make sure bugs did not reappear in the software.

When should I perform a smoke test or a regression test?

You should frequently perform smoke tests. Performing a smoke test immediately following a push to production acts as a way to ensure the high-level functionality of the site is working.

In my experience, you should conduct regression on a per sprint (generally two weeks) basis. A regression test should occur immediately before a push from a testing environment to production. This will ensure that the push to production will not negatively impact the functionality of the site. If we use the previous hotel example, a regression test will check not only the basic items that make the site work but allow us to test more complicated use cases for bookings, such as multiple locations, discounts or promo codes, and international tax law.

Just a quick note about regression testing and developers… Never mix the two.  Developers are too close to the problem to test properly, and it takes them out of their development zone. Developers need to spend the majority of their time developing, rather than doing in-depth testing.

regressiontesting

Final Thoughts:

Now that you know a thing or two about the major types of user testing, you can apply the proper technique when you need it! Having your developers conduct smoke testing on their code helps them move along faster with their development, especially in the beginning of a project.  However, you need to be able to invest in regression testing on a routine basis or components of your application will begin to break. This small investment will allow you to fix things quickly and efficiently.

Have any questions about testing?  Our knowledgeable quality assurance team is happy to help! Please contact us info@bytelion.com

Kathleen was featured in a previous article about our interns.

screen-shot-2017-09-05-at-4-06-24-pm

Why is Quality Assurance Essential for your Project?

By Testing2 Comments

Why is Quality Assurance (QA) an essential step for your software project?

Picture this. Your website or app has finally launched after long and tedious months of development. You are ecstatic with how beautiful the website looks, and so far, it has been working fine… but then… you get a message from a furious user who is complaining that the app does not function correctly on their device.  Or, perhaps you receive a notification about a new change the development team just made and it is causing core features to stop working on the site.

You find yourself in a frenzy trying to figure out how you are going to get your site or app back up and running without losing or upsetting too many customers. Good news! Take a deep breath; you can avoid all of this chaos with Quality Assurance.
giphy-1

Software Bugs, the Inevitable Foe

It’s time to face the unfortunate truth: Software bugs are inevitable; no matter how awesome the development team is, there will always be bugs. According to Techopedia, a Software bug is a problem causing a program to crash or produce invalid output. A bug can be an error, mistake, defect or fault, which may cause failure or deviation from expected results. Preventing bugs is extremely difficult.  If you are running with a very lean team (as are almost all companies on a budget), you might not have time for complete test case development, or you aren’t completing extensive design reviews. Bugs can also happen because of dependencies on other systems.   

qa-comic

But who can Save my App from all of these Bugs?

Who exterminates these software bugs? Our heroes, the Quality Assurance Technicians (QA testers) find the bugs, so your users do not come across them unexpectedly. No one likes it when their app crashes or if the page they are browsing stops responding. The purpose of QA testing is to find and report these issues so they can be eliminated before the software reaches the user.

QA testers mostly do one of two things. They either perform regression testing or go through new features of the site looking for bugs. The regression tests help ensure the functionality of the site does not get diminished with any changes that are made to the site. Before new features can be added to a site or app, they need to be thoroughly tested. All of this QA work eliminates the negative interactions for the user.

screen-shot-2017-07-14-at-4-38-54-pm

Final Thoughts:

QA is a necessity for your next project. Without QA, you should expect a ton of negative feedback from your users. While developers usually test their own code, they don’t have time to review everything. QA testers are there to ensure you and your users have an almost flawless product and fantastic user experience. Your users will thank you for a beautifully designed product that works seamlessly. An app without major bugs will delight your customers and build an honorable reputation for your brand.


From all of us here at Bytelion, we wish you the best of luck when you are exterminating your software bugs!

Kathleen was featured in our intern blog.
Need QA for your future project? Contact us at info@bytelion.com 

 

Wireframing for Startups and Corporations

By Design, Development, Estimation, MVP, Software Lifecycle, Testing, Tips & Tutorials

It’s Cheaper!

If you are interested in building bad software with bugs and lots of mistakes, then this article isn’t’ for you.  If you are interested in moving your development team along faster, saving money and building a better product for your user, please read on.  When Bytelion wireframes, it allows us to see the application.  The final wireframe summarizes all of the thoughts held in people’s minds and ensures that everyone not only understands how the application solves your problem but more importantly, it quickly and easily helps others understand what you are thinking.  Wireframing is critical to all lean departments and especially technology start-ups.

How does wireframing save you money?  Simple, it ensures that you have the right workflows up front. In this hypothetical, imagine if you omitted an essential feature on a page that was pushed to production.  To find the bug  for this feature, you have paid for:

  • UI Design (8 hours)
  • UI Implementation (8 hours)
  • Backend Implementation (12 hours)
  • Quality Assurance  (4 hours)
  • Total=32 hours

If you had wireframe the issue, the bug would have cost you

  • Wireframe (2 hours)
  • Total=2 hours

Stealing off of NASA’s slides and making some slight modifications, the blue arrow indicates where wireframing is in the bug detection value stack.  Used early, it is an awesome tool.

 

Value of catching bugs in wireframes.

NASA value of catching bugs in wireframes.

If you are a startup, every dollar you is extremely expensive and must be spent wisely.  Why focus on fixing bugs in production when you can solve most of your problem in the first two weeks?

To read more about NASA and bugs, check out.

Too Many Wireframe Tools… Which One Should I use?

There are many tools on the market. We have used all of them. I could write pages upon pages of why some systems are better, but here (in no particular order) are some of the tools that are best.

MyBalsamiq – The desktop was by far the best user experience, but its ability to not sync with an online version make this not as usable because customers and team members email different versions of the application. Because we work in a distributed environment, this didn’t work for Bytelion.

Gliffy’s integration with Atlassian’s JIRA + Confluence suite makes this tool amazing.  However, it is so inflexible that maintaining a working wireframe falls apart.   Sorry Atlassian, I still love you.

Azure – Bytelion loved the framework, and it was our primary for years, but found the product confining regarding our on online integration needs.  It slowly came out of favor and was replaced by…. our new go to.

Pidoco – Yes, this is the wireframe company that you probably didn’t hear of.  We didn’t either until we scoured the internet and tested everything we could.  This tool is our new standard.  There are three simple reasons by we love it:

  • Single Page App (SPA) is super fast and responsive.
  • Extremely flexible Workflow System…. THIS IS THE BIG ONE….  If you want to change a workflow, you can configure a workflow in a few minutes and keep different versions of the workflow.  This is ideal for rapidly testing different UX interactions.
  • Pages can be templated.  If a designer changed the header in one location, the header modified for the entire app.

Note, we have no association with the Pidoco company at all.  They did, however, chose to engineer their product well and didn’t take shortcuts.  We respect that and think that they will come out on top of they can build enough market share.

Selecting Red Routes First

Now that you know what tool you are going to use after testing them all :- ) you have to build your wireframes.  For an application, you have different use cases for what a user needs to do.  For example, if you are creating a recipe app, you would need a user to do the following:

  • A user needs to create an online profile
  • The user needs to buy other recipes from other people.
  • User needs to be able to generate their custom avatar online
  • The user needs to be able to post recipes to their Facebook account.

Of these use cases, you only want to select the most critical to making the application work. We call these red routes. In our scenario, we would only want to use these:

  • The user needs to be able to post to their Facebook account.
  • The user needs to buy ABC product.
  • A user needs to create an online profile
  • User needs to be able to generate their custom avatar online

We keep it simple and only wireframe the stuff we need.

Don’t be Lazy – Keep Your  Wireframes Current!

Once you create a set of wireframes that accurately reflect what you are trying to do, it is critical to keep it.  These wireframes will come up over and over. For example, if you are designing an aspect of a project that you have not touched in 6 months, having your wireframes current with the design make this is a snap.  Thankfully, Pidoco makes this easy to do.    It takes discipline to do this… keep up the discipline.   It is cheaper, better, and more fulfilling for you in the long run!

wireframes_keep_current_v2