Upgrade to Pro — share decks privately, control downloads, hide ads and more …

So you can code, now what

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Emma Fabre Emma Fabre
September 28, 2015

So you can code, now what

How to be a good programmer beyond making good code

Avatar for Emma Fabre

Emma Fabre

September 28, 2015
Tweet

More Decks by Emma Fabre

Other Decks in Programming

Transcript

  1. Maxime Fabre • 25 years old • Software Engineer at

    Madewithlove since 2013 • I take pics and do music and stuff
  2. // Administration if((isset($_SESSION['pseudo']) && isset($_SESSION['mdp'])) && (($_SESSION['pseudo'] == 'admin') &&

    ($_SESSION['mdp'] == 'admin'))) { if(!isset($_GET['admin'])) echo '<p>Identifiants corrects, bienvenue sur l\'�cran d\'administration</p>'; //############################# //# COMMANDES, INSERTIONS ET MODIFICATIONS //############################# if(isset($_GET['admin'])) { if($_GET['admin'] == 'seq') { echo '<h1>Gestion des s�quences</h1>'; //############################# // AJOUT, MODIFICATION ETC //############################# // Suppression s�quence if(isset($_GET['delete'])) { mysql_query('DELETE FROM ovap_seq WHERE id=' .$_GET['delete']) or die(mysql_error()); echo '<p>S�quence supprim�e.</p>'; } if(isset($_POST['num']) && isset($_POST['lieu']) && isset($_POST['images'])) { // Modification s�quence if(isset($_POST['id'])) { mysql_query('UPDATE ovap_seq SET num="' .$_POST['num']. '", lieu="' .addslashes($_POST['lieu']). '", images="' .$_POST['images']. '", news="' .$_POST['news']. '" WHERE id=' .$_POST['id']) or die(mysql_error()); echo '<p>Entr�e modifi�e.</p>'; } // Ajout s�quence elseif(!isset($_POST['id'])) { mysql_query('INSERT INTO ovap_seq VALUES("", "' .$_POST['num']. '", "' .$_POST['lieu']. '", "' .$_POST['images']. '", "' .$_POST['news']. '", "' .time(). '")') or die(mysql_error()); require('rss.php'); rebuild_rss(); $fichier_pause = fopen('pause', 'r+'); fseek($fichier_pause, 0); // On remet le curseur au d�but du fichier fputs($fichier_pause, $_GET['pause']); // On �crit le nouveau nombre de pages vues fclose($fichier_pause); echo '<p>Entr�e ajout�e.</p>';
  3. Venn diagram of my experience in 2009 Things you should

    do in PHP Things I was doing in PHP
  4. 17 % 58 % 25 % Coding Important stuff Slice

    of cheese What is a programmer?
  5. 17 % 58 % 25 % Coding Important stuff Slice

    of cheese What is a programmer? mr piechart i love wordpress
  6. Act like you can’t code • Code review all the

    things • Compare against the best
  7. Act like you can’t code • Code review all the

    things • Compare against the best • If my code were public, would I be scared?
  8. Act like you know nothing • We all know 10%

    • Read things that don’t interest you
  9. Act like you know nothing • We all know 10%

    • Read things that don’t interest you • Read people hating the things you love
  10. Act like you know nothing • We all know 10%

    • Read things that don’t interest you • Read people hating the things you love • Read about stuff that seem unrelated
  11. We work in a fast and furious 7 industry React

    Laravel Angular Backbone Grunt Gulp Webpack
  12. “Oh no you don’t have to learn everything” “Everybody knows

    what a repository is tho” story of a webdevelopper’s life
  13. Act like your future-self has the ability to go back

    in time,
 pick up a bat, and beat the shit out of you
  14. Act like your future-self has the ability to go back

    in time,
 pick up a bat, and beat the shit out of you SHOULD HAVE LEARNED ES6, YOU IDIOT dolan pls
  15. 67 % 33 % Things I have time to talk

    about Thing I don't have time to talk about don’t forget to bring a towel
  16. The past is everyone behind you • Look at your

    old code • Be wary of perceived progress
  17. The past is everyone behind you • Look at your

    old code • Be wary of perceived progress • Consider your past self
  18. “Just Heroku a Docker container over AWS and load balance

    the queue” “It’s simple, just use Webpack and Node the Ruby over the command bus”
  19. “Just Heroku a Docker container over AWS and load balance

    the queue” “It’s simple, just use Webpack and Node the Ruby over the command bus” “Just Google it”
  20. import React, {PropTypes} from 'react'; import AbstractSubstep from './AbstractSubstep'; import

    './Story.scss'; export default class Story extends AbstractSubstep { static propTypes = { contents: PropTypes.string, label: PropTypes.string, placeholder: PropTypes.string, setStory: PropTypes.func.isRequired, }; static defaultProps = { placeholder: 'Write description...', }; /** * Set the story for this step */ setStory() { this.props.setStory( this.refs.story.value ); } render() { const attributes = { className: 'story--content-editable', value: this.props.contents, onChange: this.setStory.bind(this), placeholder: this.props.placeholder, ref: 'story', disabled: !this.state.editing, rows: 3, }; return ( <div className="form-group story"> <label className="control-label">{this.props.label}</label> {this.renderPencil()} <div className="col-ld-8"> <textarea {...attributes}></textarea> </div> </div> ); }
  21. import React, {PropTypes} from 'react'; import AbstractSubstep from './AbstractSubstep'; import

    './Story.scss'; export default class Story extends AbstractSubstep { static propTypes = { contents: PropTypes.string, label: PropTypes.string, placeholder: PropTypes.string, setStory: PropTypes.func.isRequired, }; static defaultProps = { placeholder: 'Write description...', }; /** * Set the story for this step */ setStory() { this.props.setStory( this.refs.story.value ); } render() { const attributes = { className: 'story--content-editable', value: this.props.contents, onChange: this.setStory.bind(this), placeholder: this.props.placeholder, ref: 'story', disabled: !this.state.editing, rows: 3, }; return ( <div className="form-group story"> <label className="control-label">{this.props.label}</label> {this.renderPencil()} <div className="col-ld-8"> <textarea {...attributes}></textarea> </div> </div> ); } AHAH THAT GUY IS STILL USING WEB COMPONENTS INSTEAD OF INTRAPROTOTYPED INHERITED JSXLF REPOSITORIES
  22. import React, {PropTypes} from 'react'; import AbstractSubstep from './AbstractSubstep'; import

    './Story.scss'; export default class Story extends AbstractSubstep { static propTypes = { contents: PropTypes.string, label: PropTypes.string, placeholder: PropTypes.string, setStory: PropTypes.func.isRequired, }; static defaultProps = { placeholder: 'Write description...', }; /** * Set the story for this step */ setStory() { this.props.setStory( this.refs.story.value ); } render() { const attributes = { className: 'story--content-editable', value: this.props.contents, onChange: this.setStory.bind(this), placeholder: this.props.placeholder, ref: 'story', disabled: !this.state.editing, rows: 3, }; return ( <div className="form-group story"> <label className="control-label">{this.props.label}</label> {this.renderPencil()} <div className="col-ld-8"> <textarea {...attributes}></textarea> </div> </div> ); } AHAH THAT GUY IS STILL USING WEB COMPONENTS INSTEAD OF INTRAPROTOTYPED INHERITED JSXLF REPOSITORIES
  23. import React, {PropTypes} from 'react'; import AbstractSubstep from './AbstractSubstep'; import

    './Story.scss'; export default class Story extends AbstractSubstep { static propTypes = { contents: PropTypes.string, label: PropTypes.string, placeholder: PropTypes.string, setStory: PropTypes.func.isRequired, }; static defaultProps = { placeholder: 'Write description...', }; /** * Set the story for this step */ setStory() { this.props.setStory( this.refs.story.value ); } render() { const attributes = { className: 'story--content-editable', value: this.props.contents, onChange: this.setStory.bind(this), placeholder: this.props.placeholder, ref: 'story', disabled: !this.state.editing, rows: 3, }; return ( <div className="form-group story"> <label className="control-label">{this.props.label}</label> {this.renderPencil()} <div className="col-ld-8"> <textarea {...attributes}></textarea> </div> </div> ); } AHAH THAT GUY IS STILL USING WEB COMPONENTS INSTEAD OF INTRAPROTOTYPED INHERITED JSXLF REPOSITORIES
  24. Evolution of my experience as a web developper ou should

    n 2011 Things you should do in 2012 Things you should do in 2013 Things you should do in 2014 Things you should do in 2015
  25. Either die a hero or live long enough to see

    yourself become a Joomla developper ;_; :( :( :(
  26. If you were sleeping, I said: • Stay on top

    of your game, learn new things
  27. If you were sleeping, I said: • Stay on top

    of your game, learn new things • Be prepared for radical changes in techniques, patterns and tools
  28. If you were sleeping, I said: • Stay on top

    of your game, learn new things • Be prepared for radical changes in techniques, patterns and tools • Keep your brain sharp
  29. If you were sleeping, I said: • Stay on top

    of your game, learn new things • Be prepared for radical changes in techniques, patterns and tools • Keep your brain sharp • Learn to stay focused and to compartmentalize your life
  30. If you were sleeping, I said: • Stay on top

    of your game, learn new things • Be prepared for radical changes in techniques, patterns and tools • Keep your brain sharp • Learn to stay focused and to compartmentalize your life • Remember your roots, be nice to newcomers, they could be better than you in 5 years
  31. If you were sleeping, I said: • Stay on top

    of your game, learn new things • Be prepared for radical changes in techniques, patterns and tools • Keep your brain sharp • Learn to stay focused and to compartmentalize your life • Remember your roots, be nice to newcomers, they could be better than you in 5 years • Don’t be afraid to learn everything from scratch
  32. thnk u • ◡• anahkiasen
 anahkiasen
 anahkiasen
 anahkiasen
 anahkiasen
 anahkiasen


    anahkiasen
 anahkiasen
 anahkiasen facebook.com/
 twitter.com/
 github.com/
 flickr.com/
 last.fm/user/
 steamcommunity.com/id/
 blogs.wefrag.com/
 soundcloud.com/
 trakt.tv/users/