Have you ever looked over your job responsibilities? Here is an example
listing of some responsibilities of a software engineering position:
Responsibilities:
- Application design from concept through development and implementation
- Provide technical leadership and guidance to your team members
- Establish a solid project framework and excellent development
processes - Consistently deliver quality software and services
- Work with internal and external teams to co-ordinate parallel development
efforts into single releases
Lot of stuff in there, but if you filter out all the buzz words and business
speak you really only have one responsibility, the most important rule for any
project: GET THINGS DONE. This may seem obvious, but it is so easy to get
bogged down in the implementation of something that you lose sight of this
goal. Look at some important coding practices:
- Code makes sense to people reading it after you (consistent style, clear
function/variable names, obvious segregation of tasks). - Code is free of extraneous variables, function calls, bad comments.
- Your algorithms are as time and space efficient as can be.
But what is that list missing:
- Code must work.
It does not matter how efficient, clean, nice your code is. If your code
does not work you fail, do not pass go, do not collect $200, go to jail. Sure,
try and follow all these goals while you are working. In fact a good engineer
would actively be following them all the time. But, that said we live in world
with time tables and deadlines. No one and I mean absolutely no one cares about
anything else if your code does not work when they need it to. It is the same
concept when working on building something physical. Stop getting held up on
getting things perfect, do the best you can in a reasonable amount of time and
move on. Perfection is for finished working things, not for projects in
progress.