Developers I'd like to work with (1)
2024. 07. 29.
When looking for someone to develop architecture-related algorithms with my team, the following abilities would be invaluable:
- Implementation skills: The ability to turn ideas into code. In other words, when faced with a problem, they can dive in and solve it through any means necessary. I refer to people with good implementation skills as having "strength."
- Learning ability: If they can't implement something, they should be able to learn from others' implementations and solve the same problem when encountered again. Even if they succeed in implementing something, they should be able to absorb underlying ideas if they find better implementation methods.
- Explanation skills: If they've implemented something, they should be able to explain how it works and why they implemented it that way. This includes adding detailed comments to code, keeping references used for implementation, and documenting content. Explanation skills can also be seen as communication skills for a broader audience.
- Communication or collaboration skills: Working as a team means creating results through synergy that couldn't be achieved alone. For this synergy to occur, good communication is essential. This includes understanding what needs to be created, familiarizing oneself with team tools and communication methods, reporting on assigned work progress, and reporting issues that might affect schedules. In essence, communication is the process of 1) recognizing information I need and 2) sharing information that only I know but other team members should know, for efficient use of team resources.
Let's set aside communication skills for now, as they're not easily improved through solo projects and are difficult to prove or verify. The remaining three abilities - implementation skills, learning ability, and explanation skills - can be developed individually and are not hard to demonstrate. The best approach is to implement something, continuously seek out new techniques to learn while implementing, and consistently document both the results and the implementation process.
If you're struggling to come up with something to implement, I recommend solving algorithm problems. In my case, when I need to use a new language, I improve my implementation skills by solving at least one problem a day from Baekjoon Online Judge (acmicpc.net) with that language, gradually becoming more familiar with it. For those new to development, it's not a bad idea to improve explanation skills by leaving detailed comments while solving algorithm problems. It's also good to make a habit of continuously recording what you've learned, whether you're solving problems or working on small projects.
Using git during this process is really beneficial... I'll explain more about git in another post.