How to work, 6 years ago

I wrote these personal notes almost 6 years ago in a document I’d titled How to work at Adxstudio. At the time, I had left Adxstudio and was working at CGI, and while away from the company and having had enough time to get some perspective, I was able to reach a deeply introspective mindset and started considering going to work at Adxstudio again. To help myself with the decision making process, I put into words what I thought was the best way to be an effective employee at Adxstudio based on my experience having worked on the services team that implemented projects for clients for 8.5 years, and the different experiences I was having working as a consultant at CGI.

Once I returned to Adxstudio, I had the idea of publishing these notes as an official guide for the rest of the services team’s developers who I was now leading, to read and adhere to. I remember showing these notes to my boss to get approval to do so, and while I think there was an appreciation for the idea and agreement on many items, there wasn’t complete consensus nor was it deemed appropriate for everyone on the team to follow such guidelines. The notes stayed silent in my personal files afterwards.

Every so often in the years since, I’ve looked back at the notes and thought they still had relevance to me and how I work today. For posterity sake I’m now going to publish these notes on my blog so that they can escape the confines of my personal files and reveal a little about myself and how I think and approach the world of software development.

The following are my own personal notes, and are not the views or opinions of my past or present employer. I wrote them in my own spare time outside of work.


How to do good work

  • Fully understand the problem at hand and find the best technical solution that solves the problem in a reasonable amount of time
  • Take the time to understand how things work, as much as is needed, to confidently get the job done. If you don’t understand how something works, you will likely do something wrong or take a long time to get it done right – research it or ask someone to help you
    • Understand the product, CRM, etc.
  • Work within the capabilities and confines of the products and technologies at hand; if something is proving difficult or challenging or overly time consuming to do, it is quite probably due to the wrong approach being used and that another different approach could get the job done better
  • Take notes when in meetings, and have others (client, manager, etc.) confirm the notes are accurate
  • Take pride in the work that you do – if you don’t, you probably could have done it better (or you’re not doing the right kind of work)
  • Make note of the work that you’ve done and your accomplishments, it helps to look back and reflect on what you’ve done and see how you’re progressing and contributing
  • If a requirement is vague, unclear, wrong, or missing, don’t make assumptions – get clarification or a decision from the client before proceeding

How to work well with others

  • Carefully listen to what people say, and read what people write, and make sure you fully understand the meaning of their communication
  • Don’t make direct personal attacks or criticisms
  • Do not take what may appear to be criticisms personally, even if you and others believe they really are just that. Instead, objectively understand the message contained within, and proceed based on satisfying the underlying need
  • Always have a positive attitude and communicate constructively; negativity is deconstructive to you and others and will/should not be tolerated
  • Be clear and to the point; state the facts
    • A fact could be that you don’t know something
  • When reading an email that evokes an emotional response within you, don’t reply immediately; take time to cool down and understand and respond objectively

How to lead others

  • Have an open door policy
  • Let people express themselves, understand what they’re saying
  • Get approval/acceptance from them on the work they’re being assigned
    • timelines
    • designs
  • Check on their progress regularly; ensure they’re on track and see if any complications have arisen
  • Be understanding
  • Make sure your expectations are known if they are important
  • Give people enough time to get their work done
  • You are responsible for others, understand what they’re doing and stay involved in their progress

How to be lead

  • Be respectful towards your superiors
    • They are ultimately responsible for you and your work
  • After discussing a problem and once given an instruction to follow, do it without further debate
  • Demonstrate your own capability and competence by doing what you’re told to do to the best of your ability
    • if done well, it will be recognized and appreciated
  • It isn’t necessary or desired for you to invent a new or ingenious solution; you will have the opportunity to do so once your abilities have been recognized and you’re entrusted with the responsibility

How the company works

  • the company, product, and services are all intricately tied together
  • change is necessary, in order to adapt to external events, to improve how things are done, and to grow
  • you can, and should, voice your opinion and ideas in a well thought out and constructive manner
  • when decisions are made that you do not agree with, that is OK, adapt and move on

Where the value is

  • the people you know and trust, and who know and trust you 
  • not having to build everything from scratch 
  • a solid and well designed starting point
    • having a clear path to follow, or options to choose from, when needing to create something new
  • everything you don’t have to do (as-is features, starting points to continue from, choices already made that don’t need to be debated or decided)
  • the problems you are working on are higher level concerns than you would get to work on if building from scratch 

Innovation

  • innovation happens by seeking out clients and projects with needs that do not have a pre existing solution, and solving the need in services work and/or the product
    • this often creates challenging work and situations, and can result in (seemingly) difficult to achieve deadlines. this is only natural, and if it bothers you, you have to make your concerns known to your superiors
  • after innovation has occurred, the new knowledge/technology is applied in future work where similar needs exist. this makes it possible to innovate even further
    • once a problem has been solved, that problem no longer occurs in the future because the solution is incorporated into regular practices and/or the product
  • continual innovation leads to ever increasingly complicated and rewarding work 

How to handle stress

  • stress is inevitable, and the only way to overcome it is to take steps to remove the stressful conditions
  • disassociate yourself from the situation and examine the problem with a clear point of view
  • identify the root cause(s) of the stress; once you have, you can start to address them
  • don’t try to solve every problem on your own; talk to others to get their opinions, suggestions, and help
  • other people can be a source of stress; if changing how they work so they’re not being a source of stress isn’t possible, you will have to adjust how you work with them, adjust your own expectations of them, or try to understand them better, so that you aren’t getting stressed by them anymore
  • when working overtime, don’t work past 11pm – you still need to get home, relax, and get a good night’s sleep so that you can work well the next day

How to be healthy

  • take regular breaks and take time to relax your mind and body
    • stand up, stretch, go for a walk, read a book, talk to someone, etc.
  • exercise regularly
  • eat healthily and regularly
  • go to bed at a reasonable time and get 7-8 hours of sleep every night
  • have things other than work be important to you (friends, family, hobbies, religion, charity, community, etc.)
  • don’t take work home with you – have separation between work and the rest of your life

How to develop

  • Implement a solution that satisfies the desired goal using the minimal effort and complexity needed
  • Modify existing code once its design is found to be inadequate or needing improvement
  • Reasons code should be changed (refactor/retrofit/repurpose)
    • difficult to understand or poorly organized
    • difficult to modify without causing unintended side effects
    • would like to repurpose and generalize it for use in other functionality
  • Coding is not a sprint – don’t rush to finish what you’re working on.
    • Coding is a marathon – it takes a concerted effort to implement the solution completely