• Posted on: Apr 06, 2022
  • Location: Kansas City, MO
  • Job ID: 4b345436
  • Type: Full Time
  • Posted on: Apr 06, 2022
  • Location: Kansas City, MO
  • Job ID: 4b345436
  • Type: Full Time

Submit Your Resume

Upload File

Drop files here Or click here to upload the files

Is this not the right job for you? Create a job alert to be notified when a job that matches your criteria is posted.

This is a perm/direct-hire role.  No C2C.  Candidates can live anywhere in the US But preference could be given to candidates regional to Kansas City.  Candidates MUST have experience with cross platform development. 

 

Awesome opportunity to truly put your stamp on a new application.  The role will be involved in developing proof of concepts and working with the business users to develop an end-user friendly application. 

 

What you’ll do: 

  • Use tools, languages, coding standards and best practices to develop new product features and maintain year over year product functionality and enhancements
  • Create and execute unit tests and addresses defects
  • Work closely with the QA, UX and other related teams to ensure consistent understanding of requirements and approach
  • Assist in planning and implementation of a strategic direction for the product
  • Identify product design features to support scalability, usability and better performance
  • Assist and drive technical design and code reviews for all new enhancements and maintenance work delivered by the development team
  • Understand complex business and functional requirements and produce technical specifications and product requirements
  • You’ll also mentor and coach other team members on the latest technological advances within the current technology used and establish consistent best practices



 Required Experience. 

  • 5+ years of development experience
  • Experience with Ionic
  • Experience with Angular V7/8 or higher
  • Comfortable working in Native code, importing and working with iOS/Android third party SDKs and building capacitor “bridging”
  • Native iOS Swift OR Native iOS Object C
  • Native Android Java OR Native Android Kotlin
  • Experience working on agile development teams involved in new product development
  • Experience developing hybrid mobile applications, with Ionic, react native, vue or similar technologies
  • Experience developing applications with HTML 5, JavaScript and other broadly used Web development technologies
  • Has delivered hybrid mobile applications that work on both Android and IOS using these technologies
  • Passionate about delivering high quality user experience on mobile devices. Has experience assisting with UX design for mobile
  • Extensive knowledge of mobile APIs and UI standards
FacebookTwitter
[gravityform id="7" title="false" description="false"]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_7' ><form method='post' enctype='multipart/form-data' id='gform_7' action='/surf_jobs/senior-software-developer-mobile-kansas-city-mo-4b345436/' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_7' class='gform_fields top_label form_sublabel_below description_below'><li id="field_7_7" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_7"><label class='gfield_label' for='input_7_7' >First name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_7' id='input_7_7' type='text' value='' class='large' aria-required="true" aria-invalid="false" /> </div></li><li id="field_7_8" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_8"><label class='gfield_label' for='input_7_8' >Last name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_8' id='input_7_8' type='text' value='' class='large' aria-required="true" aria-invalid="false" /> </div></li><li id="field_7_1" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_1"><label class='gfield_label' for='input_7_1' >Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_7_1' type='email' value='' class='medium' aria-required="true" aria-invalid="false" /> </div></li><li id="field_7_10" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_10"><label class='gfield_label' for='input_7_10' >Phone number<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_10' id='input_7_10' type='tel' value='' class='large' aria-required="true" aria-invalid="false" /></div></li><li id="field_7_11" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_11"><label class='gfield_label' for='input_7_11' >Which industry do you work in?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_11' id='input_7_11' type='text' value='' class='large' aria-required="true" aria-invalid="false" /> </div></li><li id="field_7_12" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_12"><label class='gfield_label' for='input_7_12' >Upload my resume<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_fileupload'><input type='hidden' name='MAX_FILE_SIZE' value='838860800' /><input name='input_12' id='input_7_12' type='file' class='large' aria-describedby="gfield_upload_rules_7_12" onchange='javascript:gformValidateFileSize( this, 838860800 );' /><span class='gform_fileupload_rules' id='gfield_upload_rules_7_12'>Max. file size: 800 MB.</span><div class='validation_message validation_message--hidden-on-empty' id='live_validation_message_7_12'></div></div></li><li id="field_7_13" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_7_13"><label class='gfield_label' for='input_7_13' >Comments</label><div class='ginput_container'><input name='input_13' id='input_7_13' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_7_13'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type="submit" id="gform_submit_button_7" class="gform_button button om-trigger-conversion" value="Submit" onclick='if(window["gf_submitting_7"]){return false;} if( !jQuery("#gform_7")[0].checkValidity || jQuery("#gform_7")[0].checkValidity()){window["gf_submitting_7"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_7"]){return false;} if( !jQuery("#gform_7")[0].checkValidity || jQuery("#gform_7")[0].checkValidity()){window["gf_submitting_7"]=true;} jQuery("#gform_7").trigger("submit",[true]); }'> <input type='hidden' class='gform_hidden' name='is_submit_7' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='7' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_7' value='WyJbXSIsIjYzZTkzNzhkY2Y1YmUzYzkyOTg0MmI4YmYyZWI5OGVkIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_7' id='gform_target_page_number_7' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_7' id='gform_source_page_number_7' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div>
["gf_submitting_3"]
["gf_submitting_3"]
[true]
[true]
[3, 1]
[3, 1]
[2, 1]
[2, 1]
["gf_submitting_3"]
["gf_submitting_3"]
[true]
[true]
[3, 1]
[3, 1]
["gf_submitting_3"]
["gf_submitting_3"]
[true]
[true]
[3, 1]
[3, 1]
["gf_submitting_3"]
["gf_submitting_3"]
[true]
[true]
[3, 1]
[3, 1]
["gf_submitting_3"]
["gf_submitting_3"]
[true]
[true]
[3, 1]
[3, 1]