Android Development: Difference between revisions

From Secure Group Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
The Java and Kotlin programming languages are the basis for developing applications for Android. Therefore, it is very important that the Android developers have the dominance of these languages, mainly focused on Object Orientation, data types, and asynchronous executions, because all this knowledge will be transferred to the Android platform.
The Java and Kotlin programming languages are the basis for developing applications for Android. Therefore, it is very important that the Android developers have the dominance of these languages, mainly focused on Object Orientation, data types, and asynchronous executions, because all this knowledge will be transferred to the Android platform.


In addition, it is important that the Android developers know the libraries and the ecosystem of the Android platform. After all, if the features are not performing accordingly, the application could have several problems.
In addition, it is important that Android developers know the libraries and the ecosystem of the Android platform. After all, if the features are not performing accordingly, the application could have several problems.


When we speak about Android development, the need for testing is huge because of the application environment's variations, such as the various versions of Android and different screen sizes. Because of that, there are several techniques such as unit tests, integration tests, and interface tests that our Android developers will be required to execute.
When we speak about Android development, the need for testing is huge because of the application environment's variations, such as the various versions of Android and different screen sizes. Because of that, there are several techniques such as unit tests, integration tests, and interface tests that our Android developers will be required to execute.


So if you are interested in coding in an Agile environment while developing hard skills and soft skills, your progress in our Career Journey would be:
In order to progress in our development path and Level Up or Step Up, our Android Developers must:</br>
 
* Meet the criteria of the Level & Step Chart for the chosen path ([[How_we_ensure_people%E2%80%99s_growth#Individual_Contributors_Path|Individual Contributors Path]] or [[How_we_ensure_people%E2%80%99s_growth#Management_Path|Management Path]])
Level 1: Android Developer </br>
*  Score at least a grade 4 in the [[KAI]] of the position in order to reach Level 3.</br>
Level 2: Senior Android Developer </br>
Level 3: Android Software Engineer </br>
Level 4: Senior Android Software Engineer </br>
Level 5: Android System Architect </br>
Level 6: Senior Android System Architect</br>
</br>
</br>


=== Introduction ===
= [[KAI]] of the position =
In order to achieve the best of their performance, we will introduce the list of requirements and concepts our Android Developers should focus on to succeed in our business, as well as their remuneration.</br>
In order to progress in our Career Journey, they need to:
 
* Meet the criterias of the [https://careers.securegroup.com/wiki/Career_Journey#General_ICs_Job_Level_Chart General ICs Job Level Chart] & [https://careers.securegroup.com/wiki/Career_Journey#General_ICs_Job_Step_Chart General ICs Job Step Chart]
* Meet the specific criterias of the Android Development framework regarding:
- [[#General_Knowledge|General Knowledge]] a list of indispensable softwares, tools, platforms and more, for '''Secure Group''', that they need to know (it can be a little bit out of the scope of their position).</br>
- [[#Specific_Knowledge|Specific Knowledge]]: a list of concepts, tools, software and etc, that are indispensable for them to develop under the scope of their position.</br>
- [[#Secure_Group_Knowledge|Secure Group Knowledge]]: a list of products, company profile and features that they need to know in order to succeed in '''Secure Group'''.</br>
- [[#Basic_IT_Concepts|Basic IT Concepts]]: a list of essential concepts that we consider to be basic for our Frameworks and that we expect employees to master.</br>
 
''Observation: if there's any requirement that is repeated in the following tables but with different grades, the higher requested proficiency will prevail in the Performance Evaluation.''
 
=== General Knowledge ===
To be able to reach Level 3 in our Career Journey there is some General knowledge regarding a variety of subjects that we request from our Android Developers. This means that considering the [[KAI]] grades of proficiency, they will need to score from 4 to 6 in the following items:


<!-- JOB FRAMEWORK -->
<div class="grid two-columns">
<div class="">
  <div class="box-header center">
== General Knowledge ==
  </div>
  <div class="box-content framework">
    <div class="center">
{| class="wikitable"
{| class="wikitable"
!colspan="6"|General Knowledge
|-
!rowspan="2"|'''Concepts'''
!rowspan="2"|'''Concepts'''
|[https://en.wikipedia.org/wiki/Balanced_scorecard Balanced Scorecard]
|[https://en.wikipedia.org/wiki/Balanced_scorecard Balanced Scorecard]
Line 106: Line 93:
|Advanced English
|Advanced English
|}
|}
  </div>
</div>
</div>


=== Specific Knowledge ===
<!-- JOB FRAMEWORK -->
To be able to reach Level 3 in our Career Journey there is some technical knowledge we request from our Android Developers. This means that, considering the [[KAI]] grades of proficiency,they will need to score from 4 to 6 in the following items:
<div class="">
 
  <div class="box-header center">
== Specific Knowledge ==
  </div>
  <div class="box-content framework">
    <div class="center">
{| class="wikitable"
{| class="wikitable"
!colspan="6"|Specific Knowledge
|-
!rowspan="12"|'''Concepts'''
!rowspan="12"|'''Concepts'''
|Activities, Services, Content Providers and Broadcast Receivers, EventBus
|Activities, Services, Content Providers and Broadcast Receivers, EventBus
Line 199: Line 191:
|[https://en.wikipedia.org/wiki/Android_Studio Android Studio]
|[https://en.wikipedia.org/wiki/Android_Studio Android Studio]
|}
|}
  </div>
  </div>
</div>
</div>


=== Secure Group Knowledge ===
<!-- JOB FRAMEWORK -->
To be able to reach Level 3 in our Career Journey there is some specific knowledge from our company that we request from our Android Developers. This means that considering the [[KAI]] grades, they will need to score a minimum proficiency considering Secure Group Knowledge in a Documentation level in the following perspectives:
<div class="">
  <div class="box-header center">
== IT Knowledge ==
  </div>
  <div class="box-content framework center">
    <div class="">
{| class="wikitable"
!System Administration
|-
!System Administration - Day to Day Ops
|-
!Networking concepts
|}
</div>
</div>
</div> <!-- grid -->


<!-- JOB FRAMEWORK -->
<div class="">
  <div class="box-header center">
== Secure Group Knowledge ==
  </div>
  <div class="box-content framework">
    <div class="center">
{| class="wikitable"
{| class="wikitable"
!colspan="1"|Secure Group Knowledge
!colspan="1"|Secure Group Knowledge
Line 317: Line 335:
|}
|}


=== Basic IT Concepts ===
= Salary Grid =
To be able to reach Level 3 in our Career Journey there are some basic IT concepts we expect the Android Developers to master. This means that considering the [[KAI]] grades of proficiency, they will need to score from 4 to 6 in the following items:
 
{| class="wikitable"
!colspan="3"|Basic IT Concepts
|-
!rowspan="1"|'''Category'''
!rowspan="1"|'''Concept'''
!rowspan="1"|'''Description'''
|-
!rowspan="17"|'''System Administration'''
|Linux server set up
|
* How to install a Linux server/workstation distribution
* How to prepare a coding environment on a workstation
|-
|Remote servers with SSH connection
|
* How to set up SSH
* How to connect to a server
* How to use a key to connect to SSH
|-
|Users management
|
* How to create, remove and modify users on a Unix system
* How groups work
|-
|File permissions
|
* How to grant/remove different levels of access to different parts of the file system with chmod and chown.
* How to read files permission
|-
|Init systems
|
* How to configure Init system to start/stop processes at specified run levels
* How to start and stop services
|-
|Firewall configuration
|
* Understand the need for a firewall
* How to limit inbound network traffic to specific ports
|-
|Basic monitoring
|
* Understand the free memory, disk usage, load average and other metrics for server performance
|-
|Package manager
|
* How to install software packages and how to update them
|-
|Web Server
|
* How to set up a static web server
* How to Set up a LAMP server
|-
|Static file deployment
|
* Understand some automated method of updating: using rsync to keep the files up to date or similar
|-
|Basic Docker management
|
* What is Docker engine and what is a docker controller
* How to set up a basic docker environment on a workstation
* How to create, RUN, Pause, Unpause, Start, Stop Restart, Kill container
|-
|Active Directory
|
* What are the major features in Active Directory Domain Services (trees, trust, forest)
* How to create a user, add a mailbox, etc
* How to create a Group policy and how to enforce it
* How to troubleshoot and configure Windows 2008 R2 - 2012 R2
* How to use the administration tools (Active Directory, DNS etc)
|-
|Storage
|
* What is NFS, ISCSI, Samba
* How to share folders in windows
* What is a Security Descriptor
* What is Access Control List (ACL)
* What is a parent directory and a child directory
|-
|Email Server
|
* What's the difference between a transaction e-mail and an email API
* What's the relation between Simple Mail Transfer Protocol (SMTP), Mail Transfer Agent (MTA), Domain Name System (DNS), Mail Exchanger (MX), Post Office Protocol (POP),  Internet Message Access Protocol (IMAP)
* What are the SPAM rules and how to use SPAM engines
|-
|PKI
|
* What's a PGP universal server
* What is a Certificate and a Certificate Authority
* What's the difference between a Public Key and a Private Key and what are they used for
* How to configure a web server certificate with SSL (port443)
* How digital signatures work and how it's related to the authentication
* What's SSL, TLS, PGP, OTR, OMEMO
|-
|Reading logs
|
* What are the basic network events: Intrusion detection, packet blocked or allowed, access log
* How to read the MSexchange tracking log and understand an event
* How to read the PGP server log and understand an event
* How to read Apache PHP log and understand an event
* How to read, request and identify the problem in the Web Server or API server log
|-
|Virtualization
|
* What is VMware Server/Desktop application and how it works
* How to replicate VMs
* How to restart VMs
|-
!rowspan="4"|System Administration - Day to Day Ops
|-
|Day to Day Ops
|
* How to set up a network printer and put it in the correct driver into a print server
* How to set up a working station and advanced drivers configuration
* How to set up a network printer and put it and the correct driver into a print server
|-
|Commands
|
* What are the universal keyboard commands for operating systems
* What is a command line
* What are the most common CMD commands and what are they used for (Ipconfig, Ping, Dir, Nslookup, Tracert)
* What are the most common PowerShell commands and what are they used for
|-
|Hardware
|
* Understand advanced hardware: terminology, troubleshoot and the relation between them
|-
!rowspan="4"|'''Networking concepts'''
|Network concepts
|
* What's the OSI model and how to use it
* What is DHCP
* What is DNS and the type of records as well as how to edit and check them
* What are the differences and relations between Internal DNS and External DNS
* What is a VLAN (from a VERY high level)
* What is TCP and IP
* What are the differences between UDP and TCP and when to use each one of them
|-
|Basic firewall concept
|
* What are the NAT rules
* What is Port forwarding used for
* How to set up port forwarding
|-
|Basic Traffic Sniffing
|
* How to set up Wireshark on a workstation and connect to a device
* How to use a proxy to intercept traffic
|-
|Basic Networking Command
|
* What are the most common CMD commands and what are they used for (Ipconfig, Ping, Dir, Nslookup, Tracert)
* How to use web tools: mxtools, visual trace route, dnstools, etc…
|}
 
=== Salary Grid ===
{| class="wikitable"
{| class="wikitable"
!colspan="3"|Android Development
!colspan="3"|Android Development

Revision as of 13:07, 21 January 2020

The Java and Kotlin programming languages are the basis for developing applications for Android. Therefore, it is very important that the Android developers have the dominance of these languages, mainly focused on Object Orientation, data types, and asynchronous executions, because all this knowledge will be transferred to the Android platform.

In addition, it is important that Android developers know the libraries and the ecosystem of the Android platform. After all, if the features are not performing accordingly, the application could have several problems.

When we speak about Android development, the need for testing is huge because of the application environment's variations, such as the various versions of Android and different screen sizes. Because of that, there are several techniques such as unit tests, integration tests, and interface tests that our Android developers will be required to execute.

In order to progress in our development path and Level Up or Step Up, our Android Developers must:


KAI of the position

Specific Knowledge

Concepts Activities, Services, Content Providers and Broadcast Receivers, EventBus
Algorithm design
API concepts
Database
Design Patterns: MVP, MVVM, MVC
Responsive Designs
RxJava/RxAndroid
Data store
TDD
Unit testing
User input
Version Control via Git
Frameworks Android Components
JUnit
The Android SDK
Languages Command Line
Gradle
Kotlin
SQL
XML
Libraries Dagger
Jake Wharton Butter Knife
Linphone
Microsoft Exchange web services (EWS)
Mockito, Espresso
Picasso, Glide, Fresco, Imageloader
Retrofitting
SMACK
WoodSolutions Timber
Zetetic SQL Cipher
Protocols SIP protocol
XMPP
Softwares/Tools/Platforms - Configuration Atlassian Bamboo
Android Studio
Apache Tomcat
Softwares/Tools/Platforms - Usage Atlassian Bamboo
Android Studio
Appium
Softwares/Tools/Platforms - Server Administration Android Studio

IT Knowledge

System Administration
System Administration - Day to Day Ops
Networking concepts

Secure Group Knowledge

Secure Group Knowledge What's Expected Impact Product Minimum Grade
User Documentation Good, user-level knowledge regarding the product and its functionalities. From the user documentation, all employees across the company are required to be well aware of our solutions’ core features and functions such as the Password Advisor or how to send an automatic crash report. This knowledge helps us facilitate a user-centric approach internally, which we believe is essential to develop our business and solutions. The user documentation helps team members understand user behavior and needs more thoroughly and feel the impact of their everyday efforts. Secure OS 4
SAS 4
Secure Chat 4
Secure Email 4
Secure Vault 4
Secure Manager 4
Sales Documentation Employees should gain significant knowledge regarding the business side of Secure Group. They need to be aware of commonly used concepts in our day-to-day activities such as our business and distribution model, value proposition, selling prices, key selling points, and target audience. The information in the Sales Documentation supports employees in their daily routine. It conveys the overall business vision within the company. This documentation contributes to making employees aware of how our solutions are distributed, who are our key partners and target market to know exactly the people towards whom team members’ efforts should be aimed. Alignment on company-wide priorities is also achieved through clear communication of our value proposition and key selling points, helping everyone understand the things that matter most. Secure OS 3
SAS 3
Secure Chat 3
Secure Email 3
Secure Vault 3
Secure Manager 3
Support Documentation People within the company need to be aware of commonly occurring problems with our solutions. From the Support Documentation, employees should also extract general level knowledge regarding support processes, the issues that we’re currently having product-wise, and the approach to troubleshooting them. o The Support Documentation helps employees understand short-term priorities more clearly and communicate more openly why they’re needed. It also gives them general knowledge of how to spot and report a problem, which helps us facilitate a company-wide contribution to product development. Last but by no means least, it helps team members understand customers pains and behavioral patterns to strengthen our user-centric approach. Secure OS 3
SAS 3
Secure Chat 3
Secure Email 3
Secure Vault 3
Secure Manager 3
Functional Documentation Through the Functional Documentation, employees should get a thorough understanding of the solutions and their multiple features. People that work closely with the products must understand exactly how they function, how users interact with them, how to configure different settings, and what’s the expected behavior of different software solutions. o The information in the Functional Documentation helps employees whose work is closely connected with our solutions, to gain significant in-depth knowledge into their functionalities that far exceeds users‘ understanding. Such thorough product expertise helps us remain objective, evaluate market data more adequately, and constantly increase our internal expertise. Secure OS 4
SAS 4
Secure Chat 4
Secure Email 4
Secure Vault 4
Secure Manager 4
Technical Documentation Employees concerned with the Technical Documentation and more concretely - software development, must gain complete mastery over all solutions. Such people are regarded as technical experts and need to be well aware of data structures, relational databases, algorithms, programming languages, models, etc. The Technical Documentation is used to make sure people that are technically involved in product development have the required knowledge to perform their day-to-day tasks, optimize our solutions more easily, and support other teams with their in-depth expertise. Secure OS 4
SAS 4
Secure Chat 4
Secure Email 4
Secure Vault 4
Secure Manager 4

Salary Grid

Android Development Step
Level
Individual Contributor Path Management Path 1 2 3 4
1: Android Developer - 4.500 lv 4.650 lv 4.800 lv 4.950 lv
2: Sr. Android Developer - 5.500 lv 5.650 lv 5.800 lv 5.950 lv
3: Android Software Engineer Manager 6.500 lv 6.550 lv 6.800 lv 6.950 lv
4: Sr. Android Software Engineer Sr. Manager 7.500 lv 7.650 lv 7.800 lv 7.950 lv
5: Android System Architect Head of 8.500 lv 8.650 lv 8.800 lv 8.950 lv
6: Sr. Android System Architect Director 9.500 lv 9.650 lv 9.800 lv 9.950 lv
- Sr. Director 10.500 lv 10.900 lv 11.300 lv 11.700 lv
- Chief of 12.700 lv 13.100 lv 13.500 lv 13.900 lv
- VP 14.900 lv 15.300 lv 15.700 lv 16.100 lv