Thursday 31 August 2017

why DevOps transformations succeed where ITSM so often doesn't


I've consulted on many ITSM initiatives and it always seemd a struggle to effect improvement: all stick and no carrot; dragging horses to the river with no interest in drinking. My DevOps consulting these days is a different experience - of happy horses following willingly and drinking their fill. The difference between ITIL and DevOps is that DevOps works.
ITIL books always struck me as empty of people: a sterile cheerless place like a deserted hospital.
They start from process and metrics not humanity and emotion. I'm sure that ITIL authors and philosophers will disagree with me and say that ITIL speaks to culture change, but I don't feel that that is the reality which comes through in the books or in its application in organisations. ITSM has suffered from "binder-droppers" who push process rather than cultural change.
DevOps is very much a human-centric approach, in fact it is downright happy at times. It starts with cultural change, and sees practice and technology improvements flowing from that. It preaches trusting and empowering people and getting controls out of their way.
Likewise ITIL is in principle based around a service lifecycle, but in practice the books are about separate silos and every process is a separate silo optimised almost independently of the others. Therefore applying ITIL drives siloed thinking within an organisation, creating local optima which often degrade the overall value stream flow. Change management is everybody's favourite example of being good at managing risk and not very good at helping work get done. But many controls are applied in such a way as to make the control look effective yet not assist the value stream.
DevOps on the other hand is based on taking a holistic systems view, ensuring that optimisation is end to end and not in individual siloes, and that moving work down the value stream is top priority.
These are the two fundamental differences that makes DevOps transformations more successful than Service Management transformations have been in the past:
starting from people and culture;
and starting from systems and flow.

Tuesday 22 August 2017

Virtual Hacking Lab setup For Pentesting, Check list for Fresher /Beginners !

 
                      
Happy Hacking.
Hello  my dear budding hackers. Everyone that is new to hacking will eventually realize that they need a medium where they can work in and practice. Just like any other profession, you will become a better a better hacker by more and more practice.
For all those beginners, today we will show you how to create a virtual pentesting laboraoty and start practicing:

Step 1: Download VMware Workstation or Player

Virtual machines and a virtual network are the safest and  best bet when it comes to  setting  up a hacking lab. There are many virtualization systems out there, which include CitrixKVM, Microsoft’s Virtual PC,Oracle’s VirtualBox, and Hyper-V, and VMware’s WorkstationVMware Player and ESXi. For creating a laboratory environment, I strongly recommend VMware’s Workstation or Player. Workstation is commercial product which costs under $200, while the Player is free. You can also get a free 30-day trial of Workstation.
Player is very limited and just useful to play VMs , while Workstation on the other side can create and play VMs. Let’s download VMware’s Player or Workstation here.

Download Kali VMware Images

Once you have downloaded and installed your virtualization system, our next step is to download the VMware images of Kali provided by Offensive Security. With these images, you won’t have to create the virtual machine, but simply run it from Workstation or Player—Offensive Security has already created this image for you. This means that once you have downloaded the VM of Kali, you can then use it in either Workstation or Player.

Open VMware Image

Once all your files are unzipped, our next step is to open this new virtual machine. Make note of the location where you have unzipped those virtual machine image. Then, go to either VMware Workstation or Player and go to File -> Open like in the screenshot below.

Unzip Images

Once you have completed the download, you will need to unzip the files. There are many zip utilities available for free including like example,7-ZipWinZipWinArchiver, etc. Download and install one and unzip the files. In the screenshot below.

This will now open a window just like that in the screenshot below. You can see that my Kali image was stored under documents, so I would now browse there and double-click on the folder.
When you do so, VMware will start your virtual machine and greet you with a screen like below.
You are done with setting up your virtual lab. 

Monday 21 August 2017

Java EE is going Open Sourced by Oracle



The statement came before of Java EE 8’s announcement this fall when Oracle appears poised to declare to whom Java EE development will be proffered.
The Java EE (Enterprise Edition) project is a combination of APIs for the Java platform that was definitely built to help developers create enterprise-scale Solutions.
Oracle to withdraw from a leadership role
The project, simultaneously with Java SE (Standard Edition) were now managed in a semi-open-source fashion.
Up until now, Oracle has embraced the support of the open-source community with proposals and plans on how to improve the Java SE and EE platforms but has always kept a head role over Java SE and EE’s future forever has the final say in all matters.
According to a report from David Delabassee, Java Evangelist at Oracle, the business plans to retire from its leadership role for the Java EE platform.
“We believe that driving Java EE technologies including source implementations and test adaptability kit to an open source organization may be the right next step, in line to adopt more agile processes, achieve more flexible licensing, and change the governance process,” said Delabassee.
“We plan on investigating this possibility with the community, our licensees, and several competitor foundations to see if we can run Java EE forward in this direction,” he added.
Apache and Eclipse frameworks are main favorites
The Apache Foundation and the Eclipse Foundation are the prime candidates for taking over Java EE. Both lead a slew of Java-based designs and Oracle has previously off-placed other tools in their laps.
For example, Oracle dropped the NetBeans IDE and the OpenOffice app suite to the Apache Foundation, and the Hudson server to Eclipse.
Oracle said it will remain to provide feedback for Java EE development, but not from a direct role. The company did not announce a similar plan for Java SE.
Take your time to comment on this article.

Sunday 20 August 2017

System Administrator Role


Introduction:

The system administrator role is a true workhorse in the IT department. I have spent a good chunk of my career in this role and I have found that even in different environments the system administrator's role will remain the same, to provide a stable and secure network environment for the business.
This doesn't always make you the most popular guy in the room, because you will at times have to make stands even against your own boss to keep the network running smoothly. Though you must remember that the IT department is there to support the business unit so make sure that you clearly understand what the business needs from IT to be successful.

Usually someone in this role has paid his dues in desktop support/helpdesk roles and has worked his way up into this greater position of responsibility.

This is usually done by having an aptitude for the work, and also by taking training outside the normal responsibilities of the desktop role. Unfortunately not all companies will pay/provide for this kind of progression, so be prepared to be willing to pay and invest time in your own career growth.

Become the server and desktop expert that companies need today.

Today’s IT pro needs to deliver crucial services for organizations and their end users. This path offers system administrator training in security, desktop support, Amazon Web Services, Linux, virtualization, and more.


System Administrator Responsibilities
The system administrator can wear a lot of hats depending on the size of the organization you are working in. I have worked in shops where there were only two of us at this level, and we had full responsibility for all the Wintel servers in our datacenter and all aspect from backups to hardware.

The main key of course would be servers, you are going to be working on them a lot and in today's networks you will find some diversity. Even in our Wintel shop I worked on Novel and *nix servers, so it is important to be well rounded.

In larger organizations the system administrators are sometimes organized into teams with specific responsibilities, some of these include the following:

Installation/Hardware
Backups
Operations
The installation/hardware teams generally build images and spec out the hardware for specific solutions. They will put the server image on the hardware and rack it up for the other teams in the datacenter.

The operation teams will handle day to day workload on the servers managing users and performance of the servers online. They would also handle escalated helpdesk issues that require greater security or server knowledge.

The backup teams will manage and coordinate the backup strategy for the servers and applications.

They will check the integrity of the backups and status of the jobs making sure to fix any problems that may arise. Restores are also done by this team for user and application data as needed.

System Administrator Training
As of today most Microsoft administrators are at a cross roads for training between Server 2003 and 2008.

There are plenty of shops that continue to use Windows Server 2003 and will for the near future so learning that skill puts you in a good position to get a job at a large percentage of shops.

Those opting for Server 2008 training are "future proofing" their skill set. Even though in the short term they may find positions harder to come by at first, they are well positioned for migration work as companies look to move platforms.

When companies start their migration work, they will start hiring consultants to bring their staff up to speed and help plan. If you are an established expert, it is a great time to work high paying consulting jobs and then settle in with a company you fit well with as a full time administrator.

Train Signal has options to cover either situation you want to work in as they have outstanding training for both Server 2003 and Server 2008.

Microsoft Certifications
For the system administrator role Microsoft currently has two options because of the different versions of Windows Server.

For Server 2003 you will be looking at the MCSA (Microsoft Certified Systems Administrator) and you can get identifiers for either Messaging or Security.

For Server 2008 you can look at MCITP (Microsoft Certified Technology Specialist) Server Administrator.

Both of these certifications take multiple exams to pass so don't think you are going to knock it out in a month or two.

Certification
Many systems administration professionals obtain professional certification that can give them an advantage over other applicants in their job search. The main IT certification exams are through Microsoft, Cisco, CompTIA and Redhat. Most of these exams test the applicant's skills in regards to administration of UNIX or Windows servers, including knowledge of RAID (redundant array of independent disks), systems recovery, command-line tools, and troubleshooting malfunctioning networks.

Server administrators usually require at least an associate's degree in a related field. They may be required to obtain specific certification for the software or system they manage. The median annual salary for these positions is about $78,000.

System Administrator Role Pay Scale
As always this section varies by geographic location, size of the company, and also your experience.

According to the salary surveys, system administrators come in around 65K on average. I know of positions for those with experience who can get over 100K, though expect to have to specialize in a discipline like messaging to command those rates.

What most beginning administrators will see is low to mid 50K as these guys usually get promoted from a desktop support role so the pay bump isn't as great in the same company.

Once they get experience they will see that they can get a greater jump in pay by moving companies in most cases.

Finding System Administrator Jobs
Much like desktop support roles you can usually find a good number of these positions being advertised on the big job boards.

I will reiterate though that if you are moving up into this role from a desktop support role 99% of the time it will be easier to get promoted from your current position in the same company.

Not many companies will want to take on an unproven system administrator even with certifications, though if you have proven yourself to the right people at your current company they would be more willing to take a chance.

The best job boards for finding System Administrator positions are:

Craigslist.com
Computerjobs.com
Dice.com
Monster.com
Carreerbuilder.com
Never underestimate the power of networking for these positions. Get involved in your local user groups or even the newsgroups and forums.

You will be surprised how many people know of open positions somewhere that might not be advertised yet.

Parting Thoughts
The system administrator role is critical to keeping the IT department running day to day, and some people never aspire to go beyond this role as it is very challenging.

Depending on your company you can work in different things almost every day. The downside of this position is that sometimes you can get placed on a team and never get to go beyond those responsibilities and it can stunt your career.

Always make sure to keep up your skill set either on your own or through other opportunities in your company.



How to Get a Software Testing Job as a Fresher?


What is Software Testing?

Software Testing is a process of verifying a computer system/program to decide whether it meets the specified requirements and produces the desired results. As a result, you identify bugs in software product/project.
Software Testing is indispensable to provide a quality product without any bug or issue.

Skills required to become a Software Tester

Following skills are essential to becoming a good software tester. Compare your skill set against the following checklist to determine whether Software Testing is a really for you-
  • Analytical skills: A good software tester should have sharp analytical skills. Analytical skills will help break up a complex software system into smaller units to gain a better understanding and create test cases. Not sure that you have good analytical skills - Refer this link - if, if you can solve atleast ONE problem you have excellent analytical skills.
  • Communication skill: A good software tester must have good verbal and written communication skill. Testing artifacts (like test cases/plans, test strategies, bug reports, etc.) created by the software tester should be easy to read and comprehend. Dealing with developers (in the event of bugs or any other issue) will require a shade of discreetness and diplomacy.
  • Time Management & Organization Skills: Testing at times could be a demanding job especially during the release of code. A software tester must efficiently manage workload, have high productivity, exhibit optimal time management, and organization skills
  • GREAT Attitude: To be a good software tester you must have a GREAT attitude. An attitude to 'test to break', detail orientation, willingness to learn and suggest process improvements. In the software industry, technologies evolve with an overwhelming speed, and a good software tester should upgrade his/her technical skills with the changing technologies. Your attitude must reflect a certain degree of independence where you take ownership of the task allocated and complete it without much direct supervision.
  • Passion: To Excel in any profession or job, one must have a significant degree of the passion for it. A software tester must have a passion for his / her field. BUT how do you determine whether you have a passion for software testing if you have never tested before? Simple TRY it out and if software testing does not excite you switch to something else that holds your interest.

Technical Skills

This list is long so; please bear with us
  • Basic knowledge of Database/SQL is a must: Software Systems have a large amount of data in the background. This data is stored in different types of databases like Oracle, MySQL, etc. in the backend. So, there will be situations when this data needs to be validated. In that case, simple/complex SQL queries can be used to check whether proper data is stored in the backend databases.
  • Basic knowledge of Linux commands:Most of the applications like Web-Services, Databases, Application Servers are deployed on Linux machines.So it is crucial for testers to have knowledge about Linux commands.
  • Knowledge and hands-on experience of Automation tool:Below tools can be used for Automate testing of applications –
    • Selenium
    • HP UFT / QTP
    • Performance testing tools like Jmeter, Loadrunner, etc.
    • ETL testing tools like Abinitio, Informatica, etc.
This list is just to give you a basic idea of the popular tools used in the industry, but there are many more tools available.
The key point here is if you see yourself as an "Automation tester" after a couple of years working on manual testing, then you must master a tool and get in-depth, hands-on knowledge of tools.
Note - Only knowledge of any Automation tool is not sufficient to crack the interview, you must have good hands-on experience, so practice the tool of your choice to achieve mastery.
If you are looking for a job in QTP/UFT, then you must know VBScript language.
For Selenium, you should know Java programming.
There is also a lot of scope for performance testing tools because applications need to be tested for their performance which is a part of non-functional testing.
  • Knowledge of any scripting language will be a plus point:Knowledge of any scripting language like VBScript, JavaScript, C# is always helpful as a tester if you are looking for a job into automation. Few companies also use Shell/Perl scripting, and there is a lot of demand for testers having knowledge of the same. Again, it will depend on the company and which tools are used by that company.
  • Knowledge and hands-on experience of a Test Management Tool:Test Managementis an important aspect of Software testing. Without proper test management techniques, software testing process will fail. Test management is nothing but managing your testing related artifacts.
    For example - A tool like Testlink can be used for tracking all the test cases written by your team.
    There are other tools available that can be utilized for Test Management. So, it is important to have knowledge and working experience of such tools because they are used in most of the companies.
  • Knowledge and hands-on experience of any Defect Tracking tool- Defect Tracking and Defect life cycle are key aspects of software testing. It is extremely critical to managing defects properly and track them in a systematic manner. Defect tracking becomes necessary because the entire team should know about the defect including managers, developers, and testers. Several tools are used to lock defects including QC, Bugzilla, Jira, etc.
That's it to technical knowledge. Please note you do not need ALL The technical skills. The technical skill sets required the Job Role and company Processes. So million dollar question… Which Technical Skills should I Learn? We have covered it here

Academic Background

Academic background of a software tester should be in Computer Science.
A BTech/ B.E., MCA, BCA, BSc- Computers, will land you a job quickly.
If you do not hold any of these degrees, then you must complete a software testing certification like ISTQB and CSTE which help you learn Software Development/ Test Life Cycle and other testing methodologies.

Remuneration

Compensation of a software tester varies from company to company. Average salary range of a software tester in the US is $45,993 - $74,935. Average salary range of a software tester in India is Rs 247,315 - Rs 449,111.
Also, a software tester is also given health insurance, bonuses, gratuity and other perks.

Typical Workday

On any typical work day, you will be busy understanding requirement documents, creating test cases, executing test cases, reporting and re-testing bugs, attending review meetings and other team building activities.

Career Progression

Your career progression as a software tester (QA Analyst) in typical CMMI level 5 company will look like following but will vary from company to company
QA Analyst (Fresher) => Sr. QA Analyst (2-3 years' experience) => QA Team Coordinator(5-6 years' experience> =>Test Manager (8-11 years' experience) => Senior Test Manager (14+ experience)
Alternate Career Tracks as a Software Tester
Once you have got yours hand dirty in manual testing, you can pursue following specializations
  • Automation Testing: As an Automation Test Engineer, you will be responsible for automating manual test case execution which otherwise could be time-consuming. Tools used IBM Rational Robot, Silk performer, and QTP
  • Performance Testing: As a performance test engineer, you will be responsible for checking application responsiveness (time is taken to load, maximum load application can handle), etc. Tools used WEBLoad, Loadrunner.
  • Business Analyst: A major advantages Testers have over Developers is that they have an end to end business knowledge. An obvious career progression for testers is to become a Business Analyst. As a Business Analyst, you will be responsible to analyze and assess your company's business model and workflows, and especially how they integrate with technology. Based on your observation you will suggest and drive process improvements.

Common Myths

Software Testing as a Career pays Less Developers are more respected as compared to Testers
Contrary to popular belief, Software Testers (better known as QA professionals) are paid and treated at par with Software Developers in all "aspiring" companies. A career in Software Testing should never be considered as "second rated."
Software Testing is Boring
Software Testing could actually "test" your nerves since you need to make sense of Business Requirements and draft test cases based on your understanding. Software testing is not boring. What is boring is doing the same set of tasks repeatedly. The key is to try new things. For that matter, have you ever spoken to a software developer with more than 3 years' experience? He will tell you how boring his job has become off-lately.

Okay, I am interested, where to begin?

For a complete newbie, here is our suggested approach to learning Software Testing

You start with learning Basic principles of Software Testing. Once done you apply for freelancing jobs. This will help you gain practical knowledge and will fortify the testing concepts you have learned.
Next, you proceed to Selenium - Automation tool, then Jemeter - Performance Testing tool and finally TestLink - Test Management Tool. All the while you are learning, we suggest you apply for freelancing jobs (apart from other benefits you will make some moolah too!).
Once you are through with all the tools, you may consider taking a certification. We recommend ISTQB. But this is optional.
Certification Exams -
ISTQB Foundation level is the basic certification in Testing field.
It is not mandatory, but it will help increase your chances of getting the job. Most of the companies have this criterion.
A software tester with ISTQB cleared will be given more priority as compared to others.
After this, when you apply for permanent jobs in big corporations you will have many skills to offer as well some practical freelancing experience which may be of value and will increase your chances of being selected.

Links: -
  • Freelancing Jobs – UpWork or Freelancer
  • Permanent Jobs - Any major job portal like monster.com or naukri.com
Hope to see you in a QA conference some Day! :-)

Are you fresher, How to start Android app development for complete beginners , Tips for you ...



Introduction :

So you have a killer app idea and you’re ready to turn it into a reality and take it to market. No doubt you’re itching to start getting your first downloads, reviews and profits… But there’s just one problem: you don’t have a clue where to start!

Learning to code is difficult enough on its own but with Android development it can be more complicated. Not only do you need to understand Java, you also need to install all the Android-specific software and learn all of the unique quirks of Android app development.

In general, creating an Android app requires the SDK (Software Development Kit), an IDE (Integrated Development Environment) like Android Studio or Eclipse, the Java Software Development Kit (JDK) and a virtual device to test on. All this takes work to set up, and that’s before you’ve even started looking into things like Google Play Services, screen sizes, API levels…

It’s just such a dense amount of information and it’s enough to put an awful lot of people off before they even begin. My aim with this article then, is to provide an approachable guide to try and make the whole prospect of creating an app a little less daunting… I’ll explain the bits you need to know and gloss over the rest and by the end you should have a basic app that you can start iterating on and experimenting with.

Go and make yourself a cup of tea first though, this may take a while…


Step 1: Download Android Studio
To program in most languages, you need a piece of software called an IDE or ‘Integrated Development Environment’. The most common IDE for Android development is Android Studio, which comes direct from Google itself. You can get it here.

An IDE is what gives you the main UI where you’ll enter your code (you can’t just start typing into notepad). It also highlights things you get wrong, offers suggestions and lets you run and test your creations conveniently. It creates the files you need, it provides basic layouts and generally it saves you a lot of time and effort.


What’s great about Android Studio is that it is designed specifically for Android development (unlike the second most popular option, Eclipse). This means that when you download the software, you’ll also get a lot of the other bits you need including the Android SDK (a selection of tools including the Android platform itself) and the Android Virtual Device, which is an emulator you can test your apps on. When you go through the installation, make sure you leave the boxes ticked to confirm that you want these additional components. You could manually add them later, but this will just complicate matters.

As mentioned, there are some alternatives to Android Studio. Eclipse is an older IDE that can be used for developing other things too (such as iOS apps) and that is a bit more flexible overall. It’s also a much more fiddly to get started with though and not nearly as beginner-friendly. Another personal favorite of mine is Basic4Android. Basic4Android is an IDE that lets you code Android apps with the BASIC programming language. It makes things easier in a number of other ways too and is focused on ‘rapid development’.

There are other options too, such as Unity3D and numerous app builders, each of which has specific strengths and weaknesses depending on what you’re planning on building. For the sake of simplicity though, we’re focusing on Android Studio because it has become the ‘main’ way to build basic apps and pretty much the industry standard. If you think you might ever sell your business, if you want to give yourself the most flexibility and control possible, or if you’d like to become a professional app developer, you’ll need this tool.

That said, if you read through all this and you find it too much still, you might want to consider Basic4Android as a simpler approach and I’ll be covering that in a future post.

Okay, just to recap: we now have Android Studio downloaded and installed. But, don’t run it until you  read step two! So far so good… What could possibly go wrong?

Step 2: Setting Up Android Studio
Now you have Android Studio installed you’ve taken your first, bold step toward becoming a developer! A lot of people only manage it this far and then leave the software installed on their computer for months on end, feeling guilty every time they see it in the Start Menu. Eventually they end deleting it to make space for the next AAA title on Steam and so ends the whole sorry affair… Don’t end up like them – it’s time for some more affirmative action!

Before you can get started, you also need to install Java on your machine to use Android Studio. Specifically, you’re going to need install the Java Development Kit (JDK). Java is the programming language you’re going to be using to build your apps in this instance and you need to install the JDK in order for Android Studio to be able to interpret and compile your code (compiling means turning the source into something that is understood by the CPU – machine code). You’ll find the Java Development Kit here. Just download and follow the instructions to install.

Now you can click on Android Studio to launch it. Once it opens up, you’ll be presented with a menu where you’ll be able to get started or configure some options. The great thing is that everything is handled for you at this point, though you may want to familiarize yourself with the SDK Manager (Configure > SDK Manager) which is where you’ll update your Android SDK to support newer versions, as well as download things like code samples or support for Google Glass. But don’t worry about that now but if Android Studio says you’re missing something, this is where you’ll probably need to go to find it.

So really there are three main things interacting when you use Android Studio to create your apps.

Android Studio itself, which is an IDE that provides you with a nice interface for coding.
The code you write in Java, which you installed a moment ago…
And the Android SDK which you’ll access through your Java code in order to do Android-type things
If you find this all a bit complicated and daunting then… well, you don’t know you’re born. This used to be way worse.

Maybe that offers some consolation…

Step 3: Starting a New Project
Once you’ve installed your samples, you can go back to the first page you saw when you loaded up Android Studio. Now you want to choose Start a new Android Studio Project – it’s finally happening!

Enter the name you want for your application and your ‘company domain’. Together these elements will be used to create your package name with the following format:

com.companyname.appname

The package will be the compiled file or APK (‘Android Package File’) that you’ll eventually upload to the Google Play Store. There are ways that people can see this, so if you’re planning on making something you’ll eventually release, try to stay away from using ‘funny words’.


The last field to enter is the directory where you want to save all the files pertaining to your app. I like to save in DropBox to make sure I always have a backup of my code. Click Next again and guess what… More options! Huzzah! Don’t worry, we’re nearly there…

Next you need to decide what type of device you’re going to be developing for and in this case we’ll start with the Phone and Tablet option. Other options are TV, Wear and Glass. It’s fine if you want to develop for a myriad of platforms in the future – that’s one of the wonders of Android – but let’s start with something a bit more straightforward to begin with, okay?

The other choice you have to make at this stage is the ‘Minimum SDK’. This is the lowest version of Android you want to support. Why not just enter the latest version of Android in here? Well, because relatively few people actually have the latest version of Android installed on their device at any given time. You want to support phones that are still running older versions in order to reach the largest possible audience – especially overseas.

Why not just go with Android 1.1? Well, apart from this not being an option (Froyo is as low as you can go), that would also prevent you from using any of the fancy new features from the latest updates.

The best bet at this stage is to go with the default option, so just leave this field as it is. On the next page, you’ll be given the option to pick the way you want your app to look at the start. This will be the look of your main ‘Activity Module’ which is basically the main page of your app. Think of these like templates; do you want to have the title of your app along the top of the screen, or do you want your UI to fill the whole display? Do you want to start off with some elements ready-designed for you? Is your app primarily going to use Google Maps (don’t go here for a bit, things get more complicated with Google Play Services).


Bear in mind that an app can have multiple activities that act like separate pages on a website. You might have a ‘settings’ activity for instance and a ‘main’ activity. So the activity isn’t the app per say but rather one stand-alone page of your app.

For your first creation though, you’ll probably do best to make something really simple that just displays a single, basic activity. Select ‘Basic Activity’ to keep things as simple as possible and for all intents and purposes, this will now be your app. Click Next again you get the last few options.

Now you get to pick the name for your activity and the layout name (if you chose ‘Basic Activity’ you’ll also have the title option and the ‘menu_resource’ name). The activity name is how you’ll refer to your activities in your code, so call it something logical (good advice for coding generally) like ‘MainActivity’. Creative, I know.

The layout name meanwhile describes a file that determines the layout of an activity. This is a separate piece of code that runs in concert with the main activity code to define where elements like images and menus go and what fonts you’ll use. This is actually not Java but XML – or Extensible Markup Language if you want to impress your friends.

For anyone with a background in web development, your XML is going to work a little like HTML or a CSS style sheet. The Java code for the activity meanwhile says what the elements on the screen do when pressed etc. It’s fine to leave the default name here as ‘activity_main’. Lastly, choose a name for the menu and for the title. Pick something nice for the title, as your users will be able to see this at some points. Click next… and now you get to see your app!

Your blank, useless app… All that just to get started! You see why people give up? But really we can break it down into the following very basic steps:

Download and install Android Studio, making sure to include the Android SDK
Install Java SDK
Start a new project and select the basic details
So it’s really not that bad… And remember: once you’ve done all this once, you can forget about it forever and focus on the fun stuff: creating apps! Your tea is probably cold at this point, so the next very important step, is to get more.

Step 4: Making an Actual Thing
Once your app opens, you should see a directory tree on the left with all the different files and folders that make up your app and a picture of a phone displaying ‘Hello World!’ in the center. Well, hello to you as well!

(A basic app that displays ‘Hello World’ is what most new developers make first when they learn to program in a new language. Android Studio cheats though, because it does it for you!)

You might notice that the open tab (along the top) is ‘activity_main.xml’, which is what the big phone is showing on its display. You may recall that activity_main.xml is the XML code that defines the layout instructions for your main activity.

If you selected ‘Basic Activity’ when you started your project, then you’ll see a second XML file too called ‘content_main.xml’. For the most part, these two do the same thing but the ‘acitvity_main.xml’ contains the basic layout that Android Studio created for you when you selected ‘Basic Activity’. The stuff you want to edit is in content_main.xml, so open that up and don’t worry about it for now.

(If this isn’t what is open to start, then use the directory on the left to open it by choosing: app > res > content_main.xml.)

The Layout

Android Studio is not showing the XML code itself here but rather a rendering of how the layout will appear on the screen. This is a visual editor a bit like Dreamweaver for web design and it makes life a little easier for us developers.

You also have a bunch of options called ‘widgets’ down the left that you can add to your app. This is your basic app stuff; so for instance, if you want to add a button saying ‘OK’ to your activity, you can simply drag it over to the screen and drop it anywhere you like. Go ahead and dump an ‘OK’ button right underneath the ‘Hello World’.

Something else you’ll find is that you can click on either of these elements in order to change the text and the ‘ID’. The ID is how you’re refer to each element (called a ‘view’) in your Java code, while the text is of course what you display to the user.

Delete the ‘Hello World’ widget (or view) and change the text on the button to ‘Hello?’. Likewise, change the ‘id’ on the button to ‘button1’.

I am now stealthily getting you to write a little program… Notice as well that when you select a view, you get options in the bottom right to change the text color and size etc. You can play around with these variables if you like to change the look of your button. We’re coming back here in a minute though so make a mental note!

Now open up your MainActivity.java. The tab will be along the top but in case it isn’t, find it under: App > Java.

This is the code that defines the behavior of your app. At this stage, you’re going to add in a little passage of code:

JAVA  Code 

public void buttonOnClick(View v) {
Button button1 = (Button) v;
((Button) v).setText("Hello!");
}

This is going to go right underneath the first lone closed bracket ‘}’, just before the “@Override, Public Boolean”. It should look like this:


What does it all mean? Well basically, anything following “void buttonOnClick” will be carried out when someone clicks on the button. We’re then finding the button with the “Button button1 = (Button) v;” code and then changing the text.

Yes, there are other ways you could achieve the same thing but I feel like this keeps it nice and simple and thus easy to understand. Spend some time reading it and try to get your head around what is doing what…

At the top of the page is the word ‘import…’. Click on that to expand it and make sure that somewhere there is the line: “import android.widget.Button;”. It should have appeared on its own when you typed out the last bit (Android Studio is smart like that) but you can add it yourself if it didn’t.


(Notice as we type that lines end in “;”. This is basic Java formatting and if you forget one, it will throw up an error. Get used to searching around for them!)

Now go back to your content_main.xml and click on the button. In the right corner, where you have your parameters for the button, you should be able to find an option called ‘onClick’. Click on this and then select the ‘onClick’ line of code you just wrote from the drop down menu. What you’ve just done, is told Android Studio that you want to associate the section of code with the button you created (because you’ll have lots of buttons in future).


Now all that’s left to do is run the app you just made. Simple go to ‘run’ along the top and then select ‘run app’ from the drop down menu. You should already have your AVD (Android Virtual Device) installed but if not, you can go to: tools > Android > AVD Manager > + Create Virtual Device. Don’t forget you also need to install an Android version onto the device.

Basic hello appFollow the steps to launch the emulator running your app. Be patient, it can sometimes take an age to load up… If it never loads up, you can consider ‘packaging’ the app in order to create an APK. Drag this onto your Android device and double click on it to install and run it.

Once it’s finally up and running you can have a go with this fun, fun app. What you should find is that when you click the button, the text from ‘Hello?’ to ‘Hello!’. We’re going to be rich…

(If it doesn’t work… something has gone wrong. It wasn’t me, my one works! Look for red text in your code and hover your mouse over it to get suggestions from Android Studio.)

Step 5: How to Get Better At App Development
Okay, so that was a lie. We’re probably not going to be rich. At the moment the app we’ve made is pretty lame. You can try and sell it sure but you probably won’t get that many good reviews.

The reason I talked you through this basic app creation though is because it teaches you the very fundamentals of programming. You have an action and a reaction – pressing on a button does something. Throw in some variables and some math, add some pretty images and a useful function and that’s genuinely enough to make a very basic app.

So where do we go from here? There’s so much more to learn: we haven’t looked at the Android Manifest yet, we haven’t talked about your private keysign (or how fun it is when you lose that) and we haven’t even studied the Android app ‘lifecycle’ (nothing to do with The Lion King). There’s issues with supporting different screen sizes and there’s just so much more to learn.

Unfortunately, it would take an entire book to teach you the entirety of Android app development. So that’s a good place to start: buy a book!

But more important is just to play around and try things. Don’t set out to make your world-changing app on day one. Instead, focus on making something simple and straightforward and then build on that. Try changing the layout of the text and try adding in more buttons and more rules to make your app actually useful.

Eventually, you’ll find there’s something you want to do that you can’t figure out on your own. Maybe you want a sound to play when someone clicks on your button, for example. This is where the real learning starts. Now all you need to do is search in Google: “How to play sound onClick Android”

You’ll find a bunch of complicated answers but eventually someone, probably on Stack Overflow, will break down the answer simply for you. Then what you do is you copy that code and you paste it into your app, making a few changes as you go.

Likewise, try out some of the code samples available through Android studio. See how they work, try changing things and just experiment. Things will go wrong and error messages will come up but for the most part, if you just follow the instructions, it’s easy enough to handle. Don’t panic! And that’s pretty much how you learn to make apps. A lot of it boils down to reverse engineering and copying and pasting. Once you have the main program in place, the rest you pick up as you go.

If you want the absolute easiest way to start, then just find some sample code that’s close to what you make and change it. No one is going to be able to explain all this to you in a way that makes any sense and if you worry about not grasping everything to begin with, you’ll never get anywhere.

So instead, dive in, get your hands dirty and learn on the job. It’s complicated and it’s frustrating but ultimately it’s highly rewarding and more than worth the initial effort.

Saturday 19 August 2017

Native , Web or Hybrid Mobile Apps Development , Are your Freshers / Investors , Check list for you !!!


The moment you consider Developing  / Investingin a mobile app, you’re immediately faced with a barrage of terminology. What’s the difference between iOS and Android? What are web, hybrid and native apps? More importantly, which is most appropriate for you and your app?
One of the first decisions you will face is which type of app to build. And there is no definitive answer. Your choice will depend on a bunch of competing factors, including your budget and your deadline.
The aim of this article is to give you a sound understanding of the different types of apps available and to aid your decision as to what technology you should use to build your app.

The Basics

When talking about app development, we are usually talking about developing for mobile devices. This includes smartphones, phablets, and tablets. There are also apps for the web and wearables like smartwatches, but for the purposes of this article, we’ll stay within the bounds of mobile devices like phones and tablets.

iOS and Android

For the most part, mobile devices run one of two operating systems: iOS and Android. As of Q3 2016, Android controls about 88% of the mobile device market worldwide, and Apple owns most of the rest. But that doesn’t mean you should develop for Android first. We will discuss this later in the article.
iOS is developed and supported by Apple and is used only on their own iPhones and iPads. In other words, in the Apple universe, they control both the hardware and the software.
Android is developed and supported by Google, often considered a more open platform compared to Apple. In fact, Android is an open source operating system, which means that anyone can use their code to run a device. Google sells a few devices of its own, but Android normally runs on devices built by other companies like Samsung, Huawei, LG, HTC, etc.
There isn’t any overlap between the apps of each of these devices, that is, native iPhone apps won’t run on Android phones and vice versa. Even though you see Snapchat, for example, running on both phones and looking very similar, they were actually built entirely separately.
First, let’s define web, native, and mobile apps.

Web Apps

According to Wikipedia, a web app “is an application that is accessed via a web browser over a network such as the Internet.” So how is this different to a web site?
The difference is subjective, but most would agree that a web site will generally just be informational and a web app provides functionality. For example, Wikipedia is a website; it provides information. Facebook is a web app.
Don’t let the word “app” confuse you, though. Web apps don’t need to be downloaded like mobile apps do. Web apps load in browsers like Chrome, Safari, or Firefox and they don’t take up any memory or storage on the user’s device.

How are they built?

The vast majority are built in JavaScript, CSS, and HTML5. Unlike an iOS or Android app, there is no software development kit (SDK) for a developer to work with. There are templates and frameworks like Angular, React, and Vue.js you can use to get a quick start. As opposed to mobile apps, developing a web app can be simple and quick. However, their simplicity is also their downside. It’s often a good way to test out an idea before investing in a mobile app.

Progressive web apps

Until recently, web apps lacked the functionality of native apps, like the ability to send push notifications, work offline, and load on the homescreen. However, there have been a few improvements to browsers and web apps that offer these features. Apps that take advantage of these features are called progressive web apps.
There are a few steps you need to take in order to make your web app into a progressive web app. They go beyond the scope of this article, but you can find a comprehensive guide here.
Are progressive web apps the way to go? It depends what your goal is. They only work on Google Chrome which is fairly limiting. If your goal is to cover an audience on Android and iOS, then progressive web apps are probably not for you. In that sense, they are not a substitute for a mobile app but they can be a way to quickly get a mobile-app-like web app into people’s hands. If you were considering converting your web app into a progressive web app, consider instead using a solution like Canvas to make your web app into a mobile app. It’s really easy!

Mobile Apps

There are two kinds of mobile apps: native and hybrid. When we talk about mobile apps in this article, we’re talking about apps you download from an app store. We’ll go into native and hybrid in more detail below.

Why build an app vs a web app?

The simple answer to this question is that an app store presence is really important for your company. People search for new apps frequently and you want yours to be there. With a mobile app in the app store, you’re encouraging potential customers to install it and put your icon on their coveted home screen.

Push notifications

Getting users to your product the first time is easy. Getting them to return can be a challenge. Only mobile apps give you the opportunity to send well timed push notifications to re-engage users. Push notifications will be extremely important for any serious app. According to data from Localytics, when a user opts in to receive push notifications, they will launch your app 88% more than a user who doesn’t receive them.

Sharing

Another key to growing your app is getting people to share the app itself or content within it to their friends. This can be done on a web app, but it’s best done on a mobile app. As an app user, you can quickly share to any app (Email, WhatsApp, Messenger, Facebook, etc) in a much easier way compared to a browser.

Time

Users spend a lot more on apps than they do on the web. The popularity of apps has increased enormously and is continuing to rise. According to eMarketer, the average user “will spend 3 hours 15 minutes per day using apps. Time spent on mobile browser activities will hold steady at 51 minutes”.

Ad Revenue

One more advantage to building a mobile app over a web app is ad revenue. CPM for ads in mobile apps are generally higher than in web apps. Many people also use ad blockers for their web browsers which can lower your revenue. This isn’t possible in mobile apps.
Does this mean you should always build an app vs a web app or simply a mobile site? Not really! As a good rule of thumb, if you can imagine a good portion of your users accessing your service or content once daily, then an app will probably make sense. If what you provide is generally used once and never again, then don’t invest in an app and focus instead on a good mobile optimised web presence.
Now let’s go through the two kinds of mobile apps: native and hybrid.

Native Apps

Native apps are what you would normally think about when you think about apps. The majority of the apps on your mobile device are native apps. Unlike web apps that are written primarily in Javascript, native apps are written in languages that the platform accepts. For example, Swift or Objective-C is used to write native iOS apps, Java is used to write native Android apps, and C# for the most part for Windows Phone apps.
Apple and Google offer app developers their own development tools, interface elements and standardised SDK; Xcode and Android Studio. This allows any professional developer to develop a native app relatively easily.

Advantages of native apps

So why are most apps native? The reason is that native apps have a number of significant advantages over the alternatives:
  • They offer the fastest, most reliable and most responsive experience to users. This is unlikely to change in favor of web apps.
  • It is easier to tap into the wider functionality of the device including the camera, microphone, compass, accelerometer and swipe gestures. It’s still possible using the alternatives, but it’s easiest on native.
  • Native apps can make use of push-notifications, alerting users when their attention is required in the app. You get the opportunity to continually bring your audience back for more which is key to a successful app.
  • You’re more likely to please your users due to the way you can match each app’s UI/UX to the platform conventions. There are dozens of UI/UX differences that make users feel at home. By building native, you don’t have to compromise with UI/UX that you hope will be user-friendly for all platforms.

Disadvantages of native mobile apps

  • You’ll have to manage a codebase for each platform you launch on.
  • iOS apps will not run on Android and vice versa.
  • Most developers specialize in one platform ( Android or iOS), so to create an app on both platforms will require two separate developers (or teams).
  • Native apps generally cost more to make than hybrid apps.

Examples of Native Apps

A large number of the most popular apps out there like Pokemon Go, Twitter, and Waze, are fully native. It’s become trickier, however, to distinguish who’s using purely native code on Swift, Objective C and Java and who’s relying on hybrid solutions or cross-platform SDKs.

Building Cross-platform Native Apps

As we said, the main disadvantage of native apps is having to develop apps separately for each platform you want to cover. That’s still true if you want to stick to the native SDKs provided by Apple and Google, but in the last few years, several alternatives have become available to reap the benefits of cross-platform development without sacrificing the user experience or access to native APIs. Two of such platforms are Xamarin and React Native, both worth a look.

Xamarin

Made by Microsoft, Xamarin is a platform that lets developers build one app that works on multiple platforms in C#. They also provide free tools to build, test, distribute, and learn from your apps. Xamarin seems like a more complete development environment than PhoneGap and Titanium, even offering a test environment where you can test your app on thousands of virtual devices before launching (this is crucial for cross-platform apps). Xamarin also offers a few prebuilt apps you can use to get a quick start. Some companies that have built apps with Xamarin include Slack, Pinterest, and Honeywell.

React Native

Not wanting to be left out of the fight, Facebook recently open-sourced a project of theirs called React Native which lets you build real, native iOS and Android apps with one codebase. It’s not a  “mobile web app”, an “HTML5 app”, or a “hybrid app”. You build a real mobile app that’s indistinguishable from an app built using Objective-C or Java. You just use JavaScript and React to put it together. Check out these stats from Instagram. They show that for the features they built with React Native the amount of code shared between iOS and Android was over 90%!
While React Native doesn’t give you access to all the device’s functionality, you can weave in native code if you need to. There are some pretty heavy-hitters using React Native, including Facebook, Walmart, Tesla, and Airbnb. You can check out some React Native apps here.

Titanium

Titanium, in its latest version, is similar to React Native in that apps are written in Javascript but produce a native app, bridging native APIs to Javascript with its own set of APIs. It no longer relies on webviews and this results in a more “native” look and feel for your app. Titanium has a great showcase of apps built with their technology on their website. Some of the more well-known apps are: eBay, ZipCar, PayPal, Khan Academy

Hybrid Apps

If a native app and a web app got married and had a kid, it would be a hybrid app. You install it like a native app, but it’s actually a web app on the inside. Hybrid apps, like web apps, are built with Javascript, HTML, and CSS and run in something called Webview, a simplified browser within your app.

Why Hybrid?

Say you have an idea for an app and you don’t know if people will like it or not. Your goal is to put something usable into their hands as quickly as possible. In the startup world, this is called an MVP, or minimum viable product. You’re short on resources so you need to create a simple version of your product that still provides value. Building a web app might be the truly minimal option, but won’t really allow you to test whether people will download and use an app on their device.

Advantages of Hybrid Apps

All the advantages of hybrid apps stem from the fact that instead of building two apps, you’re building one app and tweaking it a bit so it works on both platforms. Now you only have one codebase to manage. This will probably require half the number of developers two native apps would have required. Or, with the same number of developers, a hybrid app could be published in half the time.
  • Developers for hybrid apps are often less expensive than native developers.
  • Hybrid apps are easier to scale to another platform. Once you’ve built for one platform, you can launch on another like Windows Mobile.
  • You retain the same ability to access device features as with native apps, thanks to solutions like Phonegap that act like a bridge between the native SDK and the webview in which the app runs.
Bottom line: Hybrid apps save you time and money.

Disadvantages of Hybrid Apps

  • Performance is probably the biggest disadvantage of hybrid apps. Because hybrid apps load in a browser-like component called webview, they are only as good as the webview. Webview is responsible for displaying the UI and for running Javascript code. In the early days of mobile, Google and Apple didn’t give webview the same engines used by their mobile browsers, Chrome and Safari. Since then, webview has vastly improved but it hasn’t reached native performance yet. We will get deeper into different aspects of performance later in the article.
  • Getting your hybrid app to run appropriately on each platform generally takes substantial work. In some situations, the total cost might become comparable to that of fully native apps, rendering the cost benefits negligible. It all depends on how close you want to get to the “native user experience” or how simple your app is.
  • The UX of the app will suffer. iOS and Android users tend to be very loyal to their platforms, and since they’ve been using them for years, they’re used to how things work in native apps. The differences are subtle but can be frustrating for your users. By building a hybrid app, you won’t be able to please both camps. Try too hard to customize the app based on the platform and it may end up costing the same as two native apps. There are some ways you can do this which we will discuss shortly.

Hybrid App Platforms

PhoneGap/Cordova

PhoneGap is probably the most well known among hybrid app platforms and probably the easiest to begin with for a web developer. Cordova is the open source foundation and engine of PhoneGap. It’s backed by Adobe and is completely open source. It lets you create cross-browser mobile applications with Javascript, HTML, and CSS. These apps run in a WebView and are then wrapped in native code. PhoneGap then offers native plugins that allow you to use all of the device’s functionality including accelerometer, camera, compass, file system, microphone, media, networks, notifications, geolocation, and storage. Apps need to be packaged into binary files which will include a webview wrapper and your app’s HTML files, normally loaded locally on the device. Check out these examples: TripcaseUntappd.

Canvas

Our own take on the hybrid app, Canvas is a service offering anyone with a mobile web app or responsive site the ability to build a mobile app for it, with no development work. As with our News solution, it’s offered as a service, meaning we will build, publish and maintain your apps for you. Technically, Canvas relies on our own native codebase for iOS and Android, including native elements for navigation such as a tab bar, a push notifications inbox, content preloading for your pages, caching, and offline support. The app is designed to rely on a remote web app or mobile site which you control – any change on your mobile site is immediately reflected in the app.

Can you convert a web app into a hybrid app?

If you’re building an app for an existing site or you have a mobile web app ready that does exactly what your app should do, but only misses what a native app generally provides (app store presence, push notifications, home screen icon, offline use), then turning your site or web app into a native app can be both quick and economical.
You won’t have to manage two platforms (iOS/Android) separately. You’ll have a single web app  that covers the mobile web and the two major mobile platforms with your apps. This is what we built our latest Canvas platform for!

How to make a web or hybrid app feel native

The ultimate goal of a hybrid app is to feel native. Here’s what you can do to make your hybrid app look and feel like it’s coded in native.
  1. Use a splash screen, so that the app loads to a fully loaded app.
  2. Add a back button to the UI, to make sure users can navigate intuitively. Android already includes a back button in the system interface or in the device, but iOS needs your app to allow users to navigate back as they move around.
  3. If you’re building an app from scratch, use a UI library like Onsen UI. It will not only speed up development time, it will make design decisions much easier. UX and design is based on conventions or what the user is used to. A library like Onsen UI has already made all the mobile components according to conventions.
  4. Get rid of the 300ms delay. All browsers, including webviews would normally add a 300ms delay when users tap on an element. Why? It’s because it’s waiting for a second tap. 300ms may not seem long, but it’s enough to make an interface feel sluggish.
  5. Where possible, follow the style guides. If you’re designing your app from scratch, have your developer and designer read the guidelines created by Apple and Google.
  6. Make wait times seem shorter. If you can’t avoid having a screen delay, show a loading icon or progress bar. Any delays longer than 0.1s are significant enough to warrant a loader, in order to warn a user the app is alive and loading.
Canvas already does most of this for you, so if you’re looking for a quicker way, give it a try!

How to choose?

We’ve given you a list of pros and cons for web, native and hybrid apps. But how do you decide which one is best for you? The following is a list of factors that should help you decide what kind of app to build.

User Experience

UX is the overall experience a user has when using your product, especially in terms of how easy or pleasing it is. A user interface is like a joke. If you have to explain it, it’s not that good. And if your app has bad UX, people will stop using it.
Needless to say, you need to invest in UX. The best possible thing you can do for UX is to write two separate native apps. Like we mentioned earlier, there are differences between the two operating systems and people have gotten used to them. If you hand an Android phone to a loyal iPhone user, chances are they’ll stumble a bit.

Time to market and cost

How much does building an app cost? There’s obviously a large range here. Prices will vary based on complexity, features, and platforms.
A quick way to get an estimate is to use this tool created by the fine people at Crew.  It asks a number of questions and gives you an estimate of how much your app will cost. 
But essentially, your app development cost can be determined by just 2 factors: hours required and hourly cost. The hourly cost will stay mostly the same and is easy to determine, but the number of hours the app requires depends on what you need the app to do. Some of the major features you might need are covered in the tool created by Crew.
The best data about app development costs comes, unsurprisingly, from app development agencies. One such agency is The Nine Hertz. In 2016, they released this handy inforgraphic.
There are a few important data points here so let’s go through them.

The cost of hiring native app developers

If you’re building two (or more) native apps, you’re going to be paying an iOS and Android (and possibly Windows) developers. You might think that because Android is the more popular operating system it would be cheaper to develop for. That’s actually not the case, at least according to this article by Infinum. They found that Android apps contained 40% more code and took 30% more time to develop.
According to the infographic, mobile developers in North America cost an average of about $150 per hour. This price decreases drastically if you hire developers in India or Eastern Europe where average costs are about $30-50 an hour.

Time required to build a native app

According to the same infographic, it takes an average of 18 weeks to build a standard native mobile app; 10 weeks for the back-end and 8 for the front end. Keep in mind though that not all apps have a backend and some may use a back-end as a service to reduce development time and complexity. Your actual timeframe will vary widely from this average, but this is still a good reference if you’re new to the world of app development.
For more information on the breakdown of these and other steps, check out this link.
App TypeTime in hoursiOS Cost ($150 per hour)Android Cost ($168 per hour)
Simple Apps300$45 000$50 400
Moderate Apps500$75 000$84 000
Multifaceted Apps750$112 500$126 000
Highly Multifaceted Apps900+$135 000$151 200
  • This table is based on North American developers
  • App type is somewhat arbitrary

How should time to market affect your decision?

If your app seems like it would be a good fit for hybrid, this can considerably reduce your time to market. However, by doing this, you may be sacrificing something that will be hard to gain in the future. There’s an important term “technical debt” that applies here. Assuming your app does really well, you will eventually have to face some of the technology decisions you made earlier. In general, technical debt is costlier in the future than it is now.
On the other hand, your job isn’t to write great code, it’s to ship products, so technical debt is okay! As Joel Spolsky says in his blog post The Duct Tape Programmer, “A 50%-good solution that people actually have solves more problems and survives longer than a 99% solution that nobody has because it’s in your lab where you’re endlessly polishing the damn thing.” And he would know. Joel Spolsky is the CEO and co-founder of Stack Overflow and also founded Trello, FogBugz, and Gomix.

The cost of hiring hybrid app developers

Since most hybrid apps are built in Javascript, hybrid app developers are essentially web developers with a more specific skill set. The average hourly rate for web developers is about $50 in the US, but hybrid app developers might be able to charge a bit more due to their mobile expertise.
The cost of building a hybrid app that can run on both Android and iOS is generally lower than building one native app. However, there are a few caveats:
  1. Because these aren’t native apps, you will have to invest a considerable amount of money into making it feel native. There are ways to do this, but it’s not as easy as if it was native. This could bring the cost up to the equivalent of 2 native apps.
  2. Apple has a fairly strict app submission process where real people use your app to check that it fits their guidelines. If hybrid apps don’t feel like iOS apps, they might be rejected which could delay the launch (costing more money to fix the app).

Using Device Features

Depending on the complexity of your app, you may want to tap into the various features the device itself has like the accelerometer or camera. Once again, the best way to get access to these things is by building fully native apps . But, if you build your app in PhoneGap, you can use PhoneGap plugins to access those features. You can search for anything you need here. Using plugins means relying on someone else’s code or possibly writing your own plugin if you can’t find something that fits your needs.

Performance

If there’s one word that sums up what your user cares about, it’s performance. If they don’t like the performance of your app, they will simply find another one.
Native apps have the best overall performance, period. In the early days of the Facebook mobile app, the company took a bet on HTML5 apps. Later, Mark Zuckerberg said that was one of the biggest mistakes the company ever made, as the technology was way too young at the time to provide the experience users expected.
Let’s dive into the various areas of app performance.
Since hybrid apps are basically just browsers, they’re good at showing apps that mimic the experience you would get in a browser on a computer, namely pages. If you app is just a series of pages and doesn’t have impressive graphics, a hybrid app may be just fine for you. However, building a game or an app with lots of animation would not be a good fit for a hybrid app.

Gestures

Apps are supposed to “feel” right. If you swipe an element in a certain direction, you expect it to react immediately and according to your wishes. This is easy in native apps. Not so much in hybrid apps. Though developers could try an external library like Hammer.js to get native-like gestures.

Data processing needs

Many of the most popular apps today are very CPU (processor) heavy. Think about Snapchat which applies filters to video. Things of this nature would simply not be possible in hybrid apps. The app has an extra step in Javascript it has to step through before executing the native code. You’ll be much better off building a native app if this seems like it will be a problem.

Finding Developers

You have a few options for finding the right developer. The classic options are hiring someone full-time to work with you, hiring a freelancer, or hiring an agency. In an extreme case, you might find yourself learning to code in order to build an app.
The process for finding developers for native and hybrid apps is more or less the same except for one major difference. If you decide to build two native apps, you will likely need 2 developers as most specialize in only one platform.
Having said that, finding a quality developer to hire as a freelance or employ, is really, really hard.
So you might find the option of hiring a single developer who can build your app for two or even more platforms; a much more feasible endeavour than building a small team of native app developers. Trust me, costs will add up pretty quickly if you’re building natively and hiring different people for it.

So, how do you find developers?

Finding decent iOS developers can actually be really difficult because they’re in high demand. Android developers, however, can be a bit easier to find.
Here are a few things you can do to try and find a developer:
Search freelance websites
Freelance sites like Upwork have a very wide range of developers in terms of quality. You’ll have to vet their skills for yourself – expect to pay $35-$100/hour for a good mobile developer. Sites like Crew or Toptal have pre-vetted developers available for hire, though generally more expensive ($50-$200 per hour).
Attend meetups
To find developers, you have to hang out where they hang out. Often, that’s in-person at meetups. They go to hear about the latest technologies and how to use them. The most popular site for tech meetups is meetup.com. The added benefit of meeting developers at these meetups is that you know they’re keeping up with the latest development methods and technologies.
Approach app agencies
There are thousands of digital agencies worldwide that build websites and mobile apps for other companies. The advantage with hiring an app agency is that you will get a lot more than if you just hire a freelance developer. An app agency will have in-house designers and marketers who can help develop your app.

Case Study – Building a News app

Say you want to build a news app. How would you go about it? We made a list earlier of some of the considerations that go into the hybrid vs. native decision so let’s go through each one as it applies to a news app.
Overall Complexity
News apps don’t seem very complex. For the most part, they deliver information in text or video form. Your news app will probably be very similar to other news apps from major publishers, like the BBC, Huffington Post, Reuters, The Times.
For example,  a news app would simply consist of sections, articles, pages and comments. Once you add push notifications, options for users to select what alerts they want to receive, comments and  sharing, you’ve done it.
Sounds simple? It may be, but once you consider you’ll need to integrate it with your CMS of choice (where the content comes from), you’re still looking at several weeks of work for each platform if you’re building native. And how about triggering notifications for new content? Well, now you need a backend too.
UX
The best experience you can give a user for a text-based app is an uncluttered page with text that is easy to read. Navigation is important, but most users will spend their time reading articles- not flipping between different sections.
Since you won’t have to invest a lot of time in the UX, it’s worth going native.
Performance
Poor app performance is one of the biggest attributors to people leaving an app. But in the case of a news app, that’s unlikely to be the case unless it’s really bad. It shouldn’t be hard to create a news app that performs just as well in hybrid form as it does in native. It’s just pages of text.
Time to Market
For a news app, the fastest time to market is a week, and that’s for a native app! How is this possible?
As we’ve established, native apps can be expensive, especially if you’re looking to build a custom app from scratch, not to mention time-consuming (when you have to build for multiple platforms). What if you could get an affordable native app? 
Unlike other “app builders”, we focus on doing one thing and doing it well. Publishers and bloggers get plenty of customisation options — including colour scheme, style and branding. Plus all of the advantages of native apps, on both iOS and Android. We provide these features at a fraction of the price a developer would charge.
If you’re using WordPress, MobiLoud is a simple, effective and professional way to launch your own mobile apps.
Summary
You need a spectacular app, and can get there by building it native from scratch, but it will cost you. You can build it hybrid and save time and money, but you won’t get the native experience. The timeframe for both of these solutions is months.
Or you can get native apps in a week using MobiLoud News. It gives you a fully native app, with all the UX and design details you’d expect from a professional news app, without the cost and time required to build. How? By focusing on the WordPress publishers niche we can provide a great product that offers a professional result at a fraction of the cost. And your app is live in a week, not months.

Case Study – Building a Social Network App

Overall Complexity
Although social networks seem complex due to their size, the complexity of the app for each individual user isn’t off the charts. 

This shouldn’t require a native app. Hybrid apps can handle this with relative ease.
UX
The user’s experience in a social network app is quite important. Social networks work because they form a “network effect”, which means the app gets more valuable the more people are on it. Would having Facebook be fun if you were the only one using it? No, so in a social network app, you need to encourage people to invite their friends. This is no easy task. It can be scary to invite people to a new app. What if they don’t like it? A great UX and UI can often be the thing that makes it easier to sending out invitations. You can absolutely achieve great UX in a hybrid app, but because the goal of a social network is to keep growing, you may find yourself needing to build a native app in the future. Maybe it’s worth building it from the start?
Performance
While social networks used to be mostly profiles and photos, today they’re using more live video, recorded video, and messaging. For complex features like live video, native is best, but hybrid can cope with everything else.
Time to Market
Building a new social network app from scratch is a lot of work and you’ll only find out if it’s successful months after launching it. As an owner/CEO, your job is to minimize the time and cost for you to test whether your idea can be successful. Therefore, a sacrifice of going hybrid in favor of a quicker time to market may be useful. You also have the option of turning your Buddypress theme directly into a native app using Canvas.
Summary
Social networks need to wow users in order to get them to invite all their friends. If the app isn’t impressive or better than apps they’ve used before, there’s simply a lower chance that they will share the app. Keep that in mind when choosing your app technology.

What’s Best?

There are many different directions in which you can take your app, all of which have their pros and cons. There will always be some kind of limitation of time or money that will push you to make a certain decision about your app.
What’s important is to spend enough time thinking and calculating before you start building. Apps are expensive enough that you may only have one go at getting it right. Read as much as you can about the different kinds of apps and the development stages. If you can, get in touch with people that have gone through the process of building each of these kinds of apps. They will be able to give you the best opinions.What is clear, though, is that commercial success of smartphones and tablets isn’t showing any signs of slowing down. While it may seem like everyone around you has a smartphone, there are only about 2 billion smartphone users worldwide. So in the next few years, you can expect billions of people around the world to be getting their first smartphone. The opportunity to get your app into the app store and into the hands of millions (or even billions) of people is still growing.

THE PROS AND CONS OF NATIVE VS HYBRID MOBILE APP DEVELOPMENT


Native:
Ever since there was even an App store to begin with, Native application development has been the standard in mobile. Native applications are written specifically for mobile operating systems such as iOS and Android.

Pros:
  • Due to all of the app’s elements being included in a single native package, native applications tend to have fast graphics with fluid animations built in.
  • Native applications can access exclusive native APIs in the phone’s operating system such as push notifications, camera, and in-app purchases, which would otherwise be prohibited, or provided in a cumbersome manner on a mobile web application.
  • If you’re developing a native application for iPhone, they have many resources, development tools, and reading material to help you out.
  • Apple definitely wants to push their brand whenever possible, so they have provided UI components from their UI libraries to make development a little less painful.

Cons:
  • If you intend to also publish your app to a different app store, your application will need to be rewritten in order to be a native app on another mobile OS. This usually delays features for the next platform in development. For example Snapchat implemented features such as reverse video a lot later on Android than on the Snapchat app for iOS. This is not to do with any one platform being better than another. However, Snapchat was released on iOS first, so it usually receives new features first.
  • It is a time consuming process to create a native app for both iOS and Android, so it will cost you.
  • Native platforms define their own rules and frameworks and inherit little from other disciplines, requiring more investment. For many businesses with existing development (ie. web, desktop app, etc) personnel, they would be unable to utilize these existing resources towards a native mobile application.
  • Native applications typically require you to define phones and tablets separately, or define individual layouts. While this step is available and repeated on the web with CSS media queries, it’s usually a single layout and multiple stylesheets. The effort for native is non-transferable between iOS, Android and others since each operating system is locked into proprietary tooling.
Hybrid:
Hybrid application development can do everything HTML5 does except it also has some features of Native applications. They do this by deploying a native harness or wrapper to act as a bridge between platforms and access native features. This wrapper can either be created manually or generated by a program.

Pros:
  • Hybrid mobile apps don’t have that “mobile web” browser look because they can include native hardware features.
  • The content of a hybrid app is portable and just requires a native harness to run it.
  • Since software like Ionic or React provides frameworks to make a webpage act like a native application, they can be distributed on the App Store.
  • Developers have the option to package the app locally or through a server, which provides access both online and offline.

Cons:
  • Since hybrid applications are relatively new in the mobile development space, automatic generation may not work on all devices, which can get especially complicated when trying to accommodate to different Android phones.
  • Since hybrid app development is still new there is not as much support for any troubleshooting for unprecedented problems that may occur.
  • Several vendors have started offering build-platforms for hybrid frameworks, simplifying the build knowledge that was previously required for multi-platform. Just be prepared to pay for it.
  • If the App Store is able to recognize that your application is not truly native, it may be denied from the App Store.
  • If your app can’t be published on the App Store, then that would reduce your monetization and distribution potential since purchase price or in-app purchases are native features.
  • Since most hybrid apps are written in HTML5, they rely on the system’s browser to support the wrapper for running the application, which presents a supplantable resource that external parties could exploit beyond the normal security afforded to a native application. This heavily hitches behavior to a system component that could be replaced on customized/rooted devices, creating very difficult situations to isolate and support for errors or exploits.
  • When a new iOS version is released, hybrid developers would have to rely on a third party before they are able to design hybrid applications on the new OS.
  • Lack of the pure UI assets of iOS or Android may result in a slower performance of the app in general. It may not look like a mobile website, but it may feel like it at certain points.
  • Phonegap, Cordova and others generate native by-products, meaning you still have to support and manage the individual packages in the app-stores. Keeping versions in sync across platforms while addressing individual bugs can be more difficult than a pure native approach.
So which one is better?
There is no absolute better, it depends on what is best for you and your company and venture. Weighing this with the pros and cons, native development sounds like the right choice. But you’re smarter than that, and you realize that a method that works for one app may not apply to another. Some may remain skeptical about hybrid development summed up by Java’s “Write once, debug everywhere” phrase.

It all depends on what type of app you’re trying to build.
 the choice varies from client to client. We make sure that the client uses the app development method that’s best for them and their budget. With Twilio’s Owl Air app, they use a variety of native features such as Voiceover IP and touch identification as you can see above, which is more difficult to translate to hybrid development.

MOBILE GAMES – If you’re building a mobile game, native development usually works best. If you REALLY want to make it a cross platform release you can use game engine programs like Unity or Buildbox to build your games.

ENTERPRISE APPLICATIONS – For enterprise applications where having one codebase is critical and where sexy interfaces are not as important, then cross-platform apps may be the right choice because you want to make the app accessible to ALL platforms.

Takeaways
Most of the flaws in hybrid are usually due to its adolescence in the mobile development space. With the large room for growth in hybrid mobile development, its critics may eventually view it as the better choice in the future. Perhaps a developer wanted iOS App Store distribution to be guaranteed, so they opt for native app development. And that’s perfectly fine. Just remember, if you plan to have your app on both platforms, it will take more resources to make a version for iOS and Android since they both require separate builds.

 if you like/share our post !