Software Engineering Career Tips

By Ryan McKenna

Software Engineering Career

Basic Skills

Here is a list of many of the key areas of knowledge a Software Engineer must bring together holistically to form a strong approach to engineering and an effective workflow to solve problems quickly.

  1. Bring all your knowledge to every situation.
    1. Deep knowledge of at least 1 high-level language like python and 1 lower level language like c/c++.
    2. Algorithms and Data structures
    3. Mathematics
    4. Rember to profile code, perform code coverage, use complexity metric tools and generate documentation.
    5. Architecture and design knowledge
    6. Programming principles and guidelines
      1. Principles of Software Engineering: https://www.d.umn.edu/~gshute/softeng/principles.html
      2. SOLID
    7. Refactoring
      1. Once you understand what the code you are refactoring is trying to do you can write tests to drive the creation of the refactored code
      2. So that even the refactoring process is test-driven
    8. Test-driven development
    9. Behaviour driven development
    10. Gathering Requirements and creating use cases
      1. Discussions and meeting notes
      2. Lexical analysis: nouns, adjectives, verbs
      3. Use cases: actors, attributes, actions
      4. Touch base with client/stake holder to access correctness
      5. Build prototype very quickly that mimics the interface for the user and nothing else with dummy interactions
      6. Return to previous sections according to feedback or begin development for real.
  2. For any area of software development see the roadmaps https://roadmap.sh/
    1. They can efficiently explain any area of the subjects, be it frontend, backend or otherwise.
    2. Roadmaps are a great reference and means of finding the right information fast.

Machine Learning Specific

  1. Understand the data and the problem. This will determine what type of model is best suited.
  2. Clean, prepare and transform data as required.
  3. Define model and hyper parameters (epochs, learning rate, batch-size, layer sizes , etc).
  4. Define loss function, back propagation.
  5. Iterate, evaluate how different variables weigh against variance in results.
Share: Twitter Facebook LinkedIn