- Tram Ho
Application development on mobile, requires a lot of skills and knowledge. At first glance, we can easily be mistaken for a simpler mobile application that is easier to write on a large computer because it is too small to write less code. But on the contrary, mobile application development is a creative world in it. And more amazing, that world fits on the palm of your hand
This article aims to share the “core” content of mobile programming, mobile application development so that you can see as a manual, or check-list to train your internal strength. aiming to become a professional mobile application developer. The content of the article is general or highly integrated, the sections that go into the technology will not be presented.
In the process of learning and teaching, I was fortunate to be able to travel to many countries, so many teachers should look forward to sharing knowledge, what I have learned for you to help you save time. My precious time.
|Shot in front of the Vatican, Italy|
|Take with Professor Adrian Perrig, director of ETHZ NetSec Group, Switzerland, former director of CMU CyLab|
|Shoot with GS Kueng and Prof. Mayerhofer, JKU University, Linz|
|Shoot with TS. Francesco Ciari, IVT Institute, ETHZ, Switzerland|
I. Hundreds of flowers bloom – Where do I go? Come back to yourself!
If you search Google for “mobile programming”, “android programming”, “mobile programming”, and so on, there will be a lot of results that make you puzzled about which to follow. Actually this problem is not outside, it is within you. There is an excerpt that I really enjoyed in the story Alice lost in Wonderland . At this time Alice was lost, thankfully she met the cat by the road and asked:
– Cat, please show me which way to go?
The cat replied:
– It depends on where you want to go?
– I don’t really care.
The cat replied:
– Then it doesn’t matter which way you go!
[Alice’s Adventures in Wonderland, Chapter 6]
This is very philosophical: even the most knowledgeable people give their best when pointing the way to a person without knowing where their destination is.
In mobile programming, too, it is a vast world in which: developing utility applications such as calculator, notebook, .. or Games application, or high-scientific applications such as: image processing mode, or applications for controlling robots outside, smarthome control, …. But that is only secondary. The first thing to determine is what do you want to study mobile programming for ?
- To make life beautiful.
- To meet the dream of creativity.
- To find a job with a high salary.
- To turn your ideas into sellable applications.
- To start a business.
- .. and many other reasons.
All the reasons are reasonable. “Making money” is nothing bad, not making money is the cause of many bad things! You see money as a reward for service. The more people you serve, the more rewarded it will be. So focus on creating the product so that as many people can use it, the bigger the reward.
That’s why I advise you to “Come home to yourself”. Determine what I study for? Once the goal is achieved, the next step is to achieve that goal. At that time, you will see more clearly the way to go.
In this article, I focus on the object that you want to train your skills to be able to find a good job, or you want to create your own app and better yet, you can posting to the app store goes to the user.
II. Knowledge is too wide, how much is it to learn?
I am also a swordsman of Kim Dung. In his series of novels, there is a character “Mo Dung Phuc”, a young man who is good at martial arts and extraordinary learning ability. He has the aptitude for martial arts and the desire to learn all the martial arts of the galaxy to serve the nation. The only drawback is that he doesn’t know which situation to use, so when fighting, if someone points to the outside to use this and that to neutralize or attack, then he is really sharp, if not then he is easily defeated.
Knowledge is the same as you guys. There is no way we can learn all of human knowledge. In the field of mobile alone, there are hundreds of programming manuals. Manuals are available free of charge and available.
What you need is the spirit of advancement, discipline and luck, there is a good teacher / friend / boss / coach. The role of teachers today is very different. In the past, teachers were people who held a lot of knowledge and passed on to students what they knew. Today, knowledge is provided free of charge and overwhelming. Learners can access knowledge at any time. The teacher plays the role of instructor and selects knowledge which is suitable for each pupil. Because each person has different strengths, shortcomings, different qualities, different levels of learning.
Each content knowledge, there are certain “output standards”. Once you have met those output standards. Show that you have learned all that is needed in that standard and can step into your real projects. The most important thing is to constantly train and improve your knowledge. At that time, you are your teacher.
III. Eleven critical content for creating mobile apps
These are 11 content I refine in the process of teaching and training for many creative groups. Just like the student groups are doing topics with me. It may not cover every area, but it’s enough for you to be confident . Also, remember, we cannot learn everything ?
1. Get ideas and designs
Many people think that when learning mobile programming, we force us to go into coding. But no, first we should start by describing our ideas and imagining what features, features and shapes will make our app.
|A typical example of Mockup|
Building Mockup can use specialized software, but paper and pencil can also be used. Here, you will convey your imagination to the page, so that you can have a better view of the project you will be doing.
This stage is very exciting and very important. It accounts for more than 50% of the success of the project. Because you will be hard to develop software that you cannot imagine yourself.
|This is a funny picture of software development from concept to reality|
2. Understand and promote all the features of the system we are developing:
In the army, there are verses, knowing who knows us, hundreds of hundred wins. If you know the advantages of the phone you’re planning to write the app for, what capabilities it offers, you’ll be better able to write the app. There is no one-time application for all mobile phones, including cross-platform applications. Because each phone configuration is different, produced by different companies, there are different programming support libraries. Even the same company, but different lives, different series also make it difficult to program. Even in the same life different versions of the operating system have certain differences
3. Event & context programming – Event & context driven programming
A mobile phone is a device with an extremely diverse work environment that people often advertise “anytime, anywhere”. The events that take place on the phone are diverse: such as a clicked button, users interact in different locations on the phone, click on the different buttons. When these events take place, we must respond to those events as quickly as possible to make the app responsive to attract users.
Moreover, your application can be paused or interrupted by many events such as: low battery, incoming call, network connection or network disconnection, user horizontally / vertically The phone, the user is moving at high speed, or even the user cannot stare at the screen because they are busy driving or doing other important things, and many other events. Your application must “pay attention to” those factors.
The biggest difference of mobile apps is that you have a lot of sensors to make the application smarter: such as a GPS sensor, it tells you where your phone is to help you find a better route; or accelerometer accelerometer sensor indicates whether the phone is vibrating or rotating in any direction. Taking advantage of the information used to describe the state of the phone is called contextual, your app will become smarter.
With the above three content, here you can write simple apps such as pocket calculator, word guessing game, magic hat, traffic law study, …
4. Database & file storage – SQLite Database, file storage, JSON
A common need is to store, exchange data and query data. This is a content that programmers need to grasp. For long-term data storage. You can immediately think of writing to a file on the system.
On Android phones there are 2 places to store long-term data that is on the internal memory of the phone, on the SDCard, while on the iOS phone, it only allows storage on the phone memory, this is the difference which you need to know (except for Android phones that have been rooted and jailbroken iOS phones)
Storing on files can be done easily. However, at that time, it is very difficult to access and query data according to different conditions. So you need to have knowledge of SQLite to make archiving structured and query easier. SQLite is a mobile database. It has many advantages for storage and queries on mobile.
5. Cloud computing for mobile – Mobile Cloud
Our phone has huge limitations that are difficult to overcome: limited storage capacity, limited computing capacity. However, it is a great support of the technology development that has recently been cloud computing. Virtual server services, web services – webservices, have contributed to enhancing the strength of mobile.
Mobile can be programmed to provide data on the cloud to calculate and receive returned results only. This makes mobile phones more powerful than ever.
The knowledge you need to grasp is knowledge of building and consuming 1 web service.
Exchange data standards such as XML, or JSON to help applications exchange information between mobile and cloud
6. Network programming & multithreading programming – Network programming & Multi-thread programming
These in-depth content helps the app to exchange information across the network in general. The knowledge that is needed is socket programming, TCP / IP programming.
Today, mobile devices are equipped with multi-core CPUs, taking advantage of multiple CPU cores will make your application more robust and faster to respond.
Moreover, for those cases that want to increase the response of the program, we need to take tasks that have long time to complete or have to wait for another thread to make the program not “stuck” again. when a task is not completed. This technique is called multi-thread programming.
7. Graphic & multimedia programming
The phone today has very high graphics and multimedia capabilities. If you want your application to be colorful, vivid, the techniques of image processing, sound, animation, effects, need to be promoted. This is particularly important in Game, entertainment or foreign language teaching and interactive applications.
8. User Experience – User Experience – UX
UX user experience is the process of enhancing customer satisfaction and application preferences by enhancing the usability, ease of use and satisfaction brought about by interaction between users and products. UX is a more advanced step UI – more user interface.
A successful application is an application that has a well-built UX.
To gain this skill, you must practice and learn a lot.
9. Mobile testing & Security coding.
It is especially important to test your application before reaching the user. The more you test, the more powerful the application becomes. It is very bad if the product comes to the user and there are many errors. Writing tests while coding is also a skill to practice.
In addition, any application, always find hidden errors that are hard to detect during program construction. That makes the application open to other vulnerabilities that can be exploited. Therefore, complying with safety programming rules can reduce somewhat of security errors later.
10. Publish the app to the app-store
Congratulations on reading this step. This is the last step to bring products to consumers. However, this is no less complicated.
You must understand the rules of the appstore (Apple, Google Playstore) must design user guides, product descriptions, shooting screens – screenshot of the application so that customers can see in advance. Or even an application description video.
11. The 11th principle: forget all the principles above and use your imagination .
The core of the 11th principle is that once you have mastered the principles of 1-10, don’t be constrained by them anymore but be more creative when necessary. The rules and regulations sometimes will be your creative barrier.
IV. Three trees bunched up so high mountains – Teamwork
The way to learn mobile programming is very difficult. It requires you to have high determination and conquering spirit to succeed. In addition, 11 key contents I listed in section III are rare. So a good app is usually the product of a team, a group.
Someone who is familiar with graphics, who likes graphics, who is a graphic designer, who has experience in UX, does UX. Therefore, finding a companion is indispensable. Having a companion to grow will go further.
So soft skills, teamwork skills must be trained in parallel with knowledge, then you can succeed later. Rarely does a company employ employees who cannot work with anyone. Communication, teamwork is also a learned skill.
The above just presents the key points in developing mobile applications. It helps you understand how the road will go. Those who have experienced it, if they find themselves lacking anywhere can slowly supplement to improve more. Because programming skills are a process, it takes time to mature.
In addition, for the purpose of teaching mobile programming, and surveying people’s learning needs, I have made a survey form.
If you want to study mobile programming or need a career-related mobile advice, please join the survey: [ Click here ].
Books and references
Here are some references (I will update continuously) to help you learn on your own. I divided by the content:
UI design & user experience – UI & UX
- Jakob Nielsen, Raluca Budiu, Mobile Usability 1st Edition , Link
- Adrian Mendoza, Mobile User Experience: Patterns to Make Sense of it All , Link
- Polar Luke Wroblewski, Mobile & Multi-Device Design Lessons Learned Building , Link
- Eric Reiss, Usable Usability: Simple Steps for Making Stuff Better 1st Edition , Link
- Luke Wroblewski, Mobile First , Link
- And many more documents:
- Reto Meier, Professional Android 4 Application Development , Link
- Coursera, https://www.coursera.org/learn/android-programming
- And of course the Android developer page, developer.android.com
- CHRISTIAN KEUR AND AARON HILLEGASS, iPhone Programming: The Big Nerd Ranch Guide. Link
- Erik Buck, Donald Yacktman, Cocoa Design Patterns 1st Edition, Link
- Apple Developer page: https://developer.apple.com/
- And many more books:
ITZone via tuanubicom