Thought Scribbles: Skills I care about as a software engineer
I write a lot – in random scribbles and notes on my phone, computer, or wherever. But then I don't have the time normally to extract that into a complete, perfect thing. Still, I decided that if I find such notes and they're relevant enough, I'm gonna post them here to practice being comfortable with expressing stuff that may be less-than-perfect. I'm gonna call them Thought Scribbles.
This one I found I wrote in July 2017 in Notes!!!, so around a year and a half ago. I don't remember why I wrote it. I think I was just trying to articulate what I found important for myself.
As a Software Engineer, I care about:
- risk taking and not being attached to code or technology
- Understanding and learning
- Differentiating between important shifts in paradigms, vs a trend
- Exposing yourself to different paradigms and patterns
- Refreshing my knowledge on things I lack
- Teaching and mentoring others
- Learning from others
- Openness in questions and communication
- Finding the right tools for the job even if it's something you're not familiar with
- Documentation, versioning
- SDLC processes and collaboration
- Innate enthusiasm for difficult problems
- Balancing simplicity!!!, scalability, modularity, maintainability, extensibility
- UI/UX
- Attention to detail
- Internals and under the hood understanding
- Welcoming feedback
- Anticipating problems
- automated testing
- pushing for high quality but not destructive perfectionism
- your process & codebases are a product that directly impacts anyone interacting with your application
- Reducing debt
- Refactoring when needed (timing is important)
- Alternatives to refactoring when not possible
- standards and conventions when they don't exist
- don't be afraid of learning new things! or asking "why"
- debugging instincts and skills -- know that software in development is "debug-first" instead of happy-path first
- Helpful logs!
- Giving credit
- security in all layers
- performance in all layers
- code hygiene takes discipline but do it now than later
- don't let the perfect be the enemy of the good
- but also if you build good foundations, everything else becomes easier
- the little things add up! both good and bad things
As an employee and/or a teammate, I care about:
- my team as individuals
- my team as a cohesive team (being on the same page & communicating)
- leadership also means knowing when to defer to others and delegate (i.e. trust)
- avoid analysis paralysis
- observing and learning first before speaking - understand the problem first
- learning from mistakes
- collaborating and identifying others' strengths
- celebrating accomplishments and learning to recognize them
- avoiding the xy problem, identifying when one is being asked
- Taking pride in my work, allowing others to do the same
- accountability and responsibility does not mean blame
- being candid but kind
- actively asking for feedback
- Not being prescriptive when delegating work
- Fair recognition
- Communication
- Mentoring and learning
- Knowledge sharing
- Minimizing debt
- Minimizing tribal knowledge/silos
- understanding people's roles
- Be the change you want to be/be an example
- Being able to say 'no' in a way that is fair and understandable
- Planning for the future
- Being pragmatic
- Listening to all voices, not just loud ones
- humanizing your teammates and coworkers!
- ability to learn and debug > already knowing things
(N/B: Looking back, I was able to use this brainstorming of mine to write up a charter for my team and identify together what our core values should be for a specific project.)
This is a copypasta from my notepad with a few typos fixed and missing words added. It might be a good prompt for you though!
In only five minutes and in points -- what do you think is important for you as a developer and a teammate?