The Software Engineer

Tags
Software Engineer
Updated at
Feb 16, 2022 3:26 PM
Published at
July 9, 2019

Software Engineering as a discipline

A software engineer is a software developer that embraces the task like a discipline. And as any discipline, like martial art, the various aspects get decomposed and trained individually.

As I didn’t find much literature, because I didn’t search to be honest, on the practice. This is my attempt at doing just that. Look at all the things that I have learned in isolation and try to describe them the best that I can.

Unstructured thoughts

Keep a software journal of your activities

This has a lot of benefits:

  • context-switching becomes easier.
  • the content can easily be extracted into a blog post.
  • management relations; it’s good to be able to refer back to the work you did when asking for a raise or being evaluated.
  • reading it later is useful to find meta patterns to your work

If you hit a difficult spot, step away from the computer!

The worse thing you can do is start filling your brain with other stuff like HackerNews / Twitter.

Use a paper notebook to write things down while away from the computer.

Being bored is the source of all creativity. Go for a walk, do some house chores that can be done on autopilot like the dishes.

Use bisect debugging

Bisect Debugging

Learn things in depth

Don’t become a slave of StackOverflow.

There is a loooot to learn though. Pace yourself.

Write some code every day

Like any skill, it stays shaped when trained regularly.

Read code every day

Learning is also reading what other people are doing. Study the masters.

V2

This article is for me and is more of a brain dump for now.

Is it possible to decompose software development as a discipline?

Communication

Learning how to describe issues, communicate with management, is an integral part of the discipline.

Learn English very well

Having the vocabulary to name variables accurately and precisely is important to convey what your code will do.

Being able to read fluently helps immensely to acquire new knowledge.

Learn how to talk to the business people

I like to take the Socratic approach and ask a lot of questions. Questions are rarely unwelcome in my opinion because they show interest.

Being able to accurately convey the state of the code base is crucial to get management buy-in for addressing code debts.

Reduce frictions

Being aware of frictions in the daily workflow and addressing them creates a positive productivity loop.

Reduce complexity as much as possible

Code has a mass. The less code you have, the easier it is to change it.

Learn how to type

Learn how to type faster than your train of thought.

Brain stuff

How much context can you hold into your brain at the same time? It would be interesting to know if this is a fix-sized limit or if it can be increased. What I know for sure is that the lack of sleep reduces that space dramatically.

Walk away from the computer

Thinking is best done away from the computer.

Stop when you are tired

I find that it’s hard to know when I stopped being productive.

I noticed that video games that require

Health stuff

Necessary to keep the brain in shape.

  • exercise
  • drink water
  • healthy diet, whatever that is

ALWAYS get a good night of sleep!!!

This is so important. Sleep is an interesting subject.

One common misconception is that if you miss 1 hour of sleep one day, it’s enough to sleep another hour more the next day. This is completely false! It takes a long time to recover from a lack of sleep. Some scientists believe that we never entirely recover.

A lack of sleep has an impact on every part of the body: * more cancers * fewer muscles * less energy * less brain activity * fat storage

Move your body

30min of walk every day

Fighting procrastination

A big topic right there

Programming techniques

Obviously, software design patterns are important.

problem-solving and core coding skills.

Other Topics

Maintaining Open SourceThe Git staging area

TODO