How To Deal With Mistakes IT Engineer

Let me Share some light on a simple strategy, which will help you deal with your mistakes in a responsible and efficient way.

Mindset

First and foremost, you should understand this fact:

There is no experience without failure.

Give it some time to settle in your head.

Done? Ok.

Now the next fact:

It is not a real problem if you have made a mistake.
It is a problem if you have not fixed the consequences.

Are you ok with that idea?

Then, here is the third one:

It is you who is in charge for fixing negative effects you have caused.

This is actually what distinguish a responsible person – she can deal with unforeseen events and respond to them in a sane way.

So what should I do?

Obviously, you should fix the problem.

Also, you should try to keep all the “involved parties” happy.
And here is a general overview of the things you need to do:

  • Do not wait for a command to fix everything. Fix it!
    Be proactive, but let everybody know that there is a problem.
  • Inform all your involved colleagues that your are dealing with the problem. This will add some certainty and calm people down.
  • Inform the affected users that there is a problem and you are solving it.
    This helps to build good relationships with end users.
    Do not be afraid to show the problem – people love openness and they tend to forgive soon.
  • Ask others for help of guidance if you are in doubt!
    Do not make things worse if you are not sure what to do.
  • Escalate the problem, if you cannot make a decision!
    If you manager will bark at you – then he is just a motherfucker (or simply had a bad mood). You will deal with that later.
    The foremost target is to fix the problem, so that people do not suffer.
  • Analyze the cause of the mistake.
    Do you understand how does your system work?
    Did you have all the necessary knowledge?
    How to prevent the same issue from happening again?

What do I start with?

If you are not building something really tiny and throw-away, then you need these things:

  1. Modular structure for your project.I personally would prefer Component-based architecture. It is applicable to various frameworks.Also, consider some extreme cases, like BOT or Elm Architecture or re-frame or CycleJS.
  2. Module loader/bundler (RequireJS, Browserify, Webpack, ComponentJS, SystemJS)These things will help you keep your javascript (or components) separated and manageable.
  3. Package manager (npm, jspm, bower).I’d prefer npm to any other all the time – its a de-facto standard in javascript and nodejs world. And I consider bower to be a hack – its a nice way to download the assets, but it is not really as powerful as npm in managing components and dependencies. YMMV.
  4. Automated asset/compilation/build pipeline (grunt/gulp/brunch/broccoli).Because, you know, live is to short to do the same stuff again and again and again.
  5. CSS preprocessors (jss/stylus/sass/css-modules) and postprocessors (csso, autoprefixer, postcss)This tools will make CSS a bit better and remove some burden of managing cross-browser issues. Yes, I know that it is 2016, but anyway, its still pain in the ass.
  6. Markup framework (Bootstrap, Zurb Foundation, Elemental UI, Material Lite)This things incorporate tons of lnowledge and 1000 years of suffering of web developers. They would help you deal with basic markup and styles.Though, you may consider build your own solution, if you feel like markup hero and frontend expert. Or you need to establish a design dictionary for your company.In this case, I’d suggest you to pick up the methodology (BEM, OOCSS) as soon as possible. It would save your time.I personally prefer BEM naming scheme and custom workflow. You can find some thoughts behind this in the styleguide for Brainly.com which I help to build.

    If you do not where to start building your custom markup methodology, have a look at HTML5 Boilerplate

  7. Test runner (jasmine, karma, mocha, tape, intern).Everyone need tests. No exceptions.
  8. Code quality assurance tools (eslint, husky, editorconfig).You do not want your code become a mess, do you?
  9. Any community to get help from (chats, IRC, meetups, twitter).

Also Read : Language Checklist

 

Language Checklist

When you have answered those high-level questions, it’s a good time to talk to your teammates and pick up a language!

Because there are more things than this insane javascript, which you can consider.

Silvrback blog image

  1. Do you have a team of JS-developers?Consider using ES6 (with babel).
    It will make your life a bit easier.
  2. Do you prefer typed languages? Are you fellows ok with types?Consider typescript.
  3. Are you all OK with functional programming?You can start small with ES6 and libraries like lo-dash or ramda. There is a couple of good tutorials and books to help you get started on this cool journey!
  4. Have you tried functional JS and wanna get more nice things?Try elm. It’s awesome!
  5. Are you more like a full stack guys?Try clojurescript. It’s awesome too!
  6. Do you like Scala already?Try scalaJs.
  7. Do you know and like Haskell?Try purescript. No idea how cool it is :)
  8. Wanna go crazy?Here is a list of languages that compile to javascript. Pick anything and have fun.

Also Read : Framework Checklist

Framework Checklist

Silvrback blog image

  1. Do you need just a basic working app?
    No time for “complex stuff”?

    Try angular. Start looking for help immediately.

  2. Do you need to prototype fast and often?
    Are you ok with some maintainability problems in the future?

    Try angular. Get ready for problems.

  3. Are you backend guys trying to build some frontend cause there’s no choice?

    Try angular. Start looking for a frontend developer.

  4. Do you need to start fast and build fast, but with some missing features you need to bring with you?

    Try ampersand/backbone + (pick your libraries to fit the context)

  5. The same settings, medium to large app?

    Add marionette/chaplin to your backbone and consider using ReactJs

  6. Do you have some time for experiments, but with later performance gain?

    Try mithril/knockout/aurelia + (pick your libraries to fit the context)

  7. Do you have good frontend experience in general and basic familiarity with Functional Programming?

    Try ReactJS + redux + ImmutableJS + (pick your libraries to fit the context)

  8. More functional programming skillz? Or crazily interactive app?

    Add reactive streams (bacon, rxJS) or try Cycle.js (!experimental)

    Note 0: it may be a good idea to add streams anyway and teach others to use it.
    Note 1: please, do not confuse reactive streams with FRP.

  9. Do you want to use rigid rules and common best practices?
    Your app will grow big?
    You plan to grow your team, possibly with jr. devs?
    You have some time to invest in learning?

    Invest some time in EmberJS. It’s a good investment!

  10. Do you need to have the “desktop-like” app?
    Your app will have tables, charts, other analytical stuff?
    Are you building enterprise stuff?

    Try ExtJS.

  11. Are you a studio building things for other people?

    You should have a preferred toolset already.

    Anyway, build your own stuff based on your most common use cases.

  12. Are you a freelancer building some stuff for others?

    Adapt to their choice/requirements.

    Try angular. It will not hurt so much. Let other people suffer if they want.

    Note: You cannot change your customer if he does not pay you for that!

  13. Are you trying to build an appealing custom product, that will be used by other people?

    Tailor the framework for the precise needs starting with anything from the list above.

  14. You have a precise knowledge of the app you want to get (e.g. mobile app with 10 screens)

    Get two weeks experimenting with specialized stuff (ionic, famous, Sencha Touch)