Learn the basics deeply

Learn the basics deeply.
Review the complex shallowly.

By learning the basics of development and programming languages deeply it will give you the foundation needed to create well formed solid software.  By reviewing many complex theories shallowly you know what is possible, expanding your toolkit and general knowledge base.

A person only has so much brain power.  We learn new things every day.  Old concepts and skills slowly degrade when not used.  We fill the space that is created when our old skills disappear with new knowledge.  Spending time carefully choosing what that new knowledge will be is an important part of our development as software engineers.

Spend your time focusing on truly deeply understanding the basic fundamentals of the tools and languages you use on a daily basis.  Learn to build a small piece of simple software properly with clean code, unit tests, proper documentation, and a simple clean user interface. Being able to do this will help a person better in the long run than being able to use a single piece of complexity that they will never need again.

Instead of trying to learn a complex piece of information completely, take the time to skim over many different complex pieces of information only studying them as deeply as is needed to understand why they are out there.  This helps you to build up a toolkit to understand what is possible and what has already been done.

When the time finally does come that you need to understand the complex. Make sure you understand the basics of what it is before you try to use it.  Really understand its purpose.

Questions to get answered when interviewing for a job.

When it comes time to look for a new job here is a few questions that will be good to find out.

Good characteristics in a new company:

  • Ability to offer dependability and stability to an employee looking for a place to stay for the long term.
  • Financially stable.

Development enviroment:

  • SDLC
  • What software and/or tools are used?
  • What version control system is used?
  • What kind of project manangement structure is used and what tools are used to maintain it?
  • How do you ensure the quality of your products?

Development team:

  • How big is the team?
  • What skill levels are people at?
  • Where would you fit into the team?
  • What was the turnover in your team and company in the last year? Why did people leave?
  • How often and for what reasons is a person expected to work overtime?
  • What kind of development environment does the company have? Flexible, ridgid, laid back, etc.
  • Will my personal work practices be acceptable or will I be expected to conform to the rest of the team?
  • What does the team do for learning new skills? Training? Education? Shows? Conferences?
  • What was the last training that the company invested in for their developers?
  • How is conflict between developers handled?
  • How is conflict between developers and business users handled?

Joel test:

  • Ask the questions and find out what they will admit to.
  • If you can find an employee or former employee ask them to take the Joel test for the company.