Join Our Team –> JavaScript/React and PHP Developers Wanted

Our team is looking for well qualified, WordPress JavaScript/React and PHP Developers to join our remote team.

If you enjoy working with WordPress, OOP PHP, or JavaScript and React, then you’ll find yourself right at home with the Event Espresso team. Our WordPress plugin powers tens of thousands of event websites throughout the world, that also sell hundreds of millions of tickets a year, and is built using the latest Object-Oriented Programming practices.

Along with contributing to many WordPress projects, such as the REST API, Gutenberg, Multi-site, Twenty Nineteen Theme, and more, many members of the Event Espresso team have been working on the project together for over seven years of Event Espresso’s ten-year existence. With some of them leaving to create businesses of their own, landing that dream job, or going to work at Automattic.

JavaScript and PHP developers wanted. Apply now to join our team!

The daily activities:

Your primary responsibility will be developing and modifying the presentation layer of our library of WordPress plugins and web applications according to specifications outlined and defined by a Lead Engineer.

You’ll be working as part of a team, alongside Engineers, Managers, and other team members during the entire development life-cycle of a plugin, as well as a supporting that plugin after it ships.

Here are some technologies you’ll be working with:

  • S.O.L.I.D. PHP
  • WordPress Gutenberg
  • Javascript, React, Node, NPM, etc.
  • PHP Unit, Codeception, Jest
  • Git (Version Control)

Qualities that matter to our team:

  • A positive attitude, a good work ethic, and enjoy helping others.
  • Not afraid to ask for help, teachable, a quick study, and have the ability to be flexible when “stuff happens.”
  • Detail-oriented and can complete a variety of tasks throughout the week.
  • Excited about contributing back to open-source technologies.
  • Comfortable communicating via Slack and participating in video calls with their team while working remotely.

Responsibilities:

  • Assist engineers with the server-side web application data while following Event Espresso Code Standards.
  • Meet documented feature specs and complete tasks in accordance to project milestones.
  • Work directly with Lead Engineers on feature development and code reviews.
  • Communicate the status of your work to Project Managers and participate in a development and support team discussions.
  • Able to work remotely, with a strong emphasis on communication and organizational skills.

Required Skills:

  • You have 2+ years of professional experience as a PHP or JavaScript developer.
  • You have a strong grasp of WordPress plugin and theme structure, template tags, custom post meta, internationalization, and escaping/sanitization of data.
  • You have a strong understanding of Git version control and branching strategies.
  • You have a strong comprehension of PHP and object-oriented programming (OOP) practices.
  • Experience with MySQL.
  • Experience JavaScript, React, and jQuery.

Preferred Skills:

  • Experience with accessibility standards.
  • Solid understanding of date-times and time-zones in PHP and JS.
  • Experience using the terminal/command line.
  • Experience creating unit and functionality testing.
  • You are knowledgeable about writing performant data queries.

Join our amazing company!

Being part of the Event Espresso team means more than just having a job. We strive to foster passion, creativity, innovation, and pride in what we accomplish every day. We look at our team to show us where they really shine and put each individual’s skills and interests at the forefront of our projects, as well as any WordPress projects they feel like contributing to during their Innovation, Contribution and Education (ICE) time, where our team members are given paid time to contribute to other open-source projects, like WordPress core.

We could not accomplish what we do daily without our employees and the wonderful jobs they perform. They are our most valuable resource. We recognize that when you love what you do, your best self-shines through.

*No third parties or outsourcing agencies will be considered.

The deadline to apply is Friday, August 23, 2019. We will then review applications and follow up with qualified candidates through email.

Apply Now

Related Articles

2 thoughts on “Join Our Team –> JavaScript/React and PHP Developers Wanted

  1. I have near 9 years of experience as developer, today mostly working with React but during this years I have been working with differents languages and frameworks for different projects and clients.
    Most of the time I’ve been working as a Freelance but also did time with some companies.

    I have lot of experience working as a web developer.

Share a Reply or Comment

Your email address will not be published.

Need help with Event Espresso? Create a support post in our support forums

Event Espresso
[gravityform id=116 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_116' ><form method='post' enctype='multipart/form-data' id='gform_116' action='/2019/07/javascript-react-php-developers-wanted-join-our-team/' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_116' class='gform_fields top_label form_sublabel_below description_below'><li id="field_116_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_below gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >What is your first name?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_116_5'> <span id='input_116_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_116_5_3' value='' aria-required='true' placeholder='First name' /> <label for='input_116_5_3' class='hidden_sub_label screen-reader-text'>First name</label> </span> </div></li><li id="field_116_1" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_1' >What is your email address so we can follow up with you?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_116_1' type='text' value='' class='medium' placeholder='hello@example.com' aria-required="true" aria-invalid="false" /> </div></li><li id="field_116_2" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_2' >Tell us about your concerns below<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_2' id='input_116_2' class='textarea medium' placeholder='What kind of events are you planning?' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id="field_116_6" class="gfield field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >GDPR Agreement</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_116_6'><li class='gchoice gchoice_116_6_1'> <input class='gfield-choice-input' name='input_6.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_116_6_1' /> <label for='choice_116_6_1' id='label_116_6_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id="field_116_3" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_3' id='input_116_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></li><li id="field_116_4" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_4' id='input_116_4' type='hidden' class='gform_hidden' aria-invalid="false" value='https://eventespresso.com/2019/07/javascript-react-php-developers-wanted-join-our-team/' /></div></li><li id="field_116_7" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_7' >Phone</label><div class='ginput_container'><input name='input_7' id='input_116_7' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_116_7'>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_116' class='gform_button button' value='Send my message' onclick='if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} jQuery("#gform_116").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_116' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='116' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_116' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_116' id='gform_target_page_number_116' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_116' id='gform_source_page_number_116' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="167"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>