My experience as a professional Developer
Tags: beginners, programming, productivity, community
Published: 2022-12-10 13:07:44

I am also learning !! This is just a note from my observations. Excited to hear form you... do comment.

The meaning around being an efficient developer or analyst or any other entry or median level tech role always changes based on the organisation / team you work in. But based on working with local and offshore teams for last 5yrs. I understood few basic expectations that teams have when you want to work with them.

**General:**
1. Have an **open mind**. Do not be judgemental. This will help you to think in all angles.
2. Do **not multi-task**. It will never end good.
3. Learn to **say no** humbly. Else no one will know your limits, even you. Can end up taking more work or responsibility than you can handle.
4. **Share** learnings and short comings as much as possible. Both organisation wise and team wise. This will promote team culture.
5. **Ownership** - you must be able to understand how your code / solution works. The full flow from program / server start to end.
6. Ability to **learn** - There is nothing wrong in not knowing anything, after all Software field is widening in all verticals every day. Difficult to always stay on top. But should be eager to know and learn about it.
7. **Communication** - Ability to communicate the solution to all levels of the organisation (Team, Leads, Managers and Management).

**Coding:**
1. Follow and enforce the latest **standards** in code.
2. Follow up and stay in sync with the **latest** changes and upgrades in the programming language you are working.
3. Always analyse the **impacts** before coding. Understand the whole picture both feature wise and code wise.
   - Can create sequence diagrams.
   - Note down knowns and unknowns in an excel and explore.
4. Always add **test** cases and mockups. Cannot stress enough about this. Because by adding just unit test's you can easily notice the gaps and come up with some innovative ideas to improve existing code.
5. Always watch out for more improvements and have a plan to tackle them.
6. **Prioritise** - Split the work efficiently and reorganise based on priority.
7. **Ask for help** or co-work as much as possible (Don't hesitate)
8. Every piece of code you write should be **production ready**.

Apart from this if you are **senior**. Then there is added expectations like below,

1. **Team culture** - Share all discussion with the team. Be transparent as much as possible.
2. Involve the whole team in any decision making. It will increase the team morale.
3. Delegate work - **Plan and share** work as much as possible with team. Try to ensure everyone in the team get to work in all parts of the program as much as possible so it's both exciting and relaxing for all.
4. Be **available** to all in the team. It will help others in the team to move without waiting.
5. Consistently **review** work and give feedback actively.
6. Receive **feedbacks** regularly and adapt accordingly.
7. **High level thinking** - Having an eye on next upcoming work and organising them appropriately. So the team can take it up without any major hiccups.
8. Actively participate in **product level discussions** and mention improvements or concerns.
9. Ability to quickly switch from high level work like building CI/CD, new microservice architectures, etc to coding a feature and raising PRs.
10. Need to learn **high level tech concepts and strategies**. Actively suggest the same with the team and stakeholders.
Ex: Using deployment automation using terraform and Github workflows.
11. Actively **collaborate** with other seniors or teams in the organisation. Everyone can share and learn.

Phew !! 😰 It might me overwhelming at first but biggest learning for me was to keep clam and enjoy the process. No need to rush. Everyone have their own unique way to handing things.