A friend of mine recently started their first job as a software engineer and asked me for some advice on getting started well. I thought about it — and think I’ll share here too :)
Three tenants:
A. Always work upstream
- When you work on hard problems, you learn more, they are often fun, and as a result you get them done well. When this happens, you get even harder problems, and the virtuous cycle continues on. Now, imagine the opposite — you work on less hard problems, do them badly as they are unrewarding, and get even less fun problems. Always aim to do an excellent job and take on what the hardest problems are — do not shy away from them
B. Think beyond the job description, think as an owner and a craftsman
- You can be a normal software engineer, you can be someone who: A. cares about their customers, is not afraid to wear the PM / designer / CEO hat when needed. However, as a software engineer, you also take pride in doing things well — this means pragmatism — getting things done, combined with constant improvement of both the codebase and the product
C. Surround yourself with the best — go where the knowledge is
- You only know what is possible based on who you talk too. Make sure you admire your co-workers, and the people you work with. If you need to learn something, go where the source is
- One way to surround yourself with great people is also through the web — i.e reading https://www.joelonsoftware.com/ — hit the new developer and rock-star developer sections, and read top!
A friend of mine recently started their first job as a software engineer and asked me for some advice on getting started well. I thought about it — and think I’ll share here too :)
Three tenants:
A. Always work upstream
- When you work on hard problems, you learn more, they are often fun, and as a result you get them done well. When this happens, you get even harder problems, and the virtuous cycle continues on. Now, imagine the opposite — you work on less hard problems, do them badly as they are unrewarding, and get even less fun problems. Always aim to do an excellent job and take on what the hardest problems are — do not shy away from them
B. Think beyond the job description, think as an owner and a craftsman
- You can be a normal software engineer, you can be someone who: A. cares about their customers, is not afraid to wear the PM / designer / CEO hat when needed. However, as a software engineer, you also take pride in doing things well — this means pragmatism — getting things done, combined with constant improvement of both the codebase and the product
C. Surround yourself with the best — go where the knowledge is
- You only know what is possible based on who you talk too. Make sure you admire your co-workers, and the people you work with. If you need to learn something, go where the source is
- One way to surround yourself with great people is also through the web — i.e reading https://www.joelonsoftware.com/ — hit the new developer and rock-star developer sections, and read top!
`