Giter Club home page Giter Club logo

Summary

  • šŸ‘‹ Hi, Iā€™m @MagicShel
  • šŸ“† I have 24 years of experience
  • šŸ‘€ Iā€™m interested in Java, Spring, NodeJS
  • šŸŒ± Iā€™m currently learning cloud-specific concerns
  • šŸ“« How to reach me:

About Me

Currently

I'm a senior/lead software engineer with 24 years of experience. My current technical focus is on microservices with Java / Spring. I've also dabbled in .NET, NodeJS, a lot of front-end Javascript and CSS, though I'm a much bigger fan of TypeScript. I've largely stepped away from front-end and full-stack work to focus on architecture and back-end engineering.

Experience

I've been a contractor/consultant for most of my career. I've worked with city governments, federal government/military, hospitals, manufacturing/industrial, retail, property management, financial/banking, construction, and probably some fields I've forgotten.

I started out with Lotus (later IBM) Notes and transitioned to X-Pages (JSF) and from there to Java, which has been my primary focus for about 15 years now. I'm primarily self-taught through books, blogs, conferences, YouTube videos, and simple experimentation.

Interests

Architecture & Design

I've worked with a lot of bad code. In my early days, it was often mine. I'd write something I thought was particularly good and then turn around and find myself burdened by the limitations, and it took me years to figure out why. I had to discover SOLID principles, dependency injection / inversion of control, immutability, functional programming (specificially the concept of pure functions), separation of concerns, design patterns and unit testing. This is an area where I'm continuing to expand my knowledge and experience. I've learned the importance of expressing and understanding architectural intent to avoid getting caught in anti-patterns.

Maintainability

I like to create and use code that is well documented and unit-tested. Naming of things is very difficult, but also very important. There is a lot of precedent and guidance on best-practices out there for anyone who goes looking, but few do. Code should be easy to read. Things should be done in consistent patterns where possible and documented when established patterns are poorly-suited. Where readability and performance are at odds, it is important to separate / abstract that complexity so that it doesn't need to be thoroughly understood by every developer who touches the code. Instead, that complexity should be walled-off and well documented.

Usability

Just like user-facing applications must be useable, so much APIs and contracts. Limit the ways complexity can be interfaced with so that it can't be misused.

There is a school of thought that says if there is only one implementation of a contract, just create the class because it can easily be abstracted to an interface later if necessary. I disagree with that as an absolute philosophy. Sometimes the implementation class requires methods which should not be used 99% of the time. Sometimes you want to control the context under which a class is used, for example by exposing getters but not setters if an object is retrieved a certain way. That being said, it's not bad as a rule of thumb. Unnecessary complexity is a bad thing, but "necessity" is sometimes a perspective, not an absolute truth.

magicshel's Projects

aid-simple-context icon aid-simple-context

A simple set of commands to manage three levels of modified context and link world info where necessary.

linux icon linux

Collection of my notes on linux

novel-ai icon novel-ai

Scenarios, templates, and tools for NovelAI

public-api-lists icon public-api-lists

A collective list of free APIs for use in software and web development šŸš€

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.