How to become a great developer
Photo credit: @dylanferreira at unsplash-TT5HB9mF07U

How to become a great developer

"Build healthy habits. Flee from temptation". Here's what that means for those working in the software industry.

A great developer has a production mindset, is useful and others enjoy working with.

1. Enterprise production mindset

The most valuable, and the hardest to find people, are those who have the skills and mindset for working in production environments using enterprise tools and systems. Most workers within enterprises are relegated to small aspects of systems, even though job descriptions "require" broad experience.

Having experience with the entire lifecycle (from design to production) of a whole system (development, operations, support, licensing, accounting, etc.) equips you to be a leader (ultimately the CTO or CIO).

Don't just focus on learning all the elegant coding tricks, but on also all the tools and techniques that help you debug quickly, such as linters, logging, tracing, test mocks, test fakes, etc. Technical processes to master include version control (Git and code reviews in GitHub), code re-formatters by Git hooks, testing (BDD, xUnit, Selenium, and integration testing tools), and DevSecOps (parsers, vulnerability scanners, hashing, signing, API managers, etc.).

IDEA: Work with open-source projects while volunteering at non-profits. But do so to apply (in production) best practices for security and team productivity as habits applied to dev work as well as production work.

2. Keep scanning for employers and vendors

Identify ideal employers for your preferences. Glassdoor.com lists companies employees like the most. But your priority may be geographical (to be near family and friends) or industry preference. Buying property in a growing community can build more equity over time than money in the bank.

Get alerts from LinkedIn, Indeed.com, StackOverflow jobs, and other job sites to get an idea of what skills employers are looking for.

Research companies and vendors that you have not heard about. Which companies within each industry has the highest PE ratio (investors' prediction for stock price future growth).

3. Target?

Target the programming languages you learn for what your target employers need. All organizations have two businesses: the one that is making money today and the one that will make them money in the future.

People are still needed to support legacy systems. You can learn from code others wrote.

Write programs to access APIs from target employers. You'll learn professional coding patterns and ancillary techniques such as OpenID, GraphQL, structuring code.

So don't just focus on the next hot thing. Today that is Severless, IoT, AI, Knative, Istio, etc. In a year it will be something else. Pick wisely so that you become an expert at something rather than being superficial. Sequence deep focus over time so you can learn to pass exams to get certifications. That means diving into vendor?documentation, not just video courses on Pluralsight, ACloud.guru, Udemy, EdX, etc. Watch them instead of watching TV. Audios enable you to learn during otherwise wasted time doing chores, commuting, etc. Early mornings are the best times to focus, so don't squander it just hanging out late at night.

A balance between old and new is needed.?Schedule time for each.

4. Take initiative to contribute

When you land on a GitHub repo that is of interest, reach out to contributors with something of value, not just a compliment. Perhaps an ICYMI news article, and an offer of specific help.

Salespeople are trained to "Always be Closing" or "Always be Negotiating". Similarly, when you read something and see a typo, file a pull request or post an email.

5. Get fast - keyboard aliases, vim editor, automation

Experiment with ways to get things done without taking your eyes off the screen or reaching for the mouse.?That means using operating system aliases, Vim editor, and forcing yourself to perform key combinations accurately without looking (like soldiers assembling rifles in the dark).

Get fast at rebuilding your laptop and servers from scratch by mastering Bash scripting and use of package managers. Then get comfortable with the complexities of using Ansible or Terraform to control Docker running in Kubernetes within AWS, Azure, or GCP clouds.

To become productive quickly, build your "bag of tricks" of code functions and libraries you can reuse. Use pre-assembled Docker images on DockerHub from people who have maintained them over time.

Get to know what each package you install or library included in your Python requirements, Gem file, etc. You'll soon have to play version matchmaker to overcome security vulnerabilities or upgrade incompatibilities.

End each working session with code that has been tested as working. This is especially important if you're developing as part of a team. The fastest moving teams can commit straight to production only when developers always keep code production-worthy. When you begin each day with a detailed plan for the set of changes that you could safely commit in a day, you get better with estimating over time and with defending why you need extra time.

6. Collaborate with others

If your priority is geographical, if there isn't a meetup on a topic, form one. Build communities. That's how people overcome "Impostor Syndrome".

Different people have different preferences for how they communicate. Some prefer Slack over emails. Google Hangouts or Skype over Zoom. Some prefer Google Docs over Box for real-time collaborative editing of files. Others are only comfortable with markdown files in GitHub.

The more you use a tool, the more you identify little tricks.

If you see a neat trick, Google it and write a blog article about it if no one else has.

One can always contribute by taking notes about action items from each meeting, and maintaining an index of where assets are.

7. Practice proper etiquette

Don't save passwords in GitHub. Always code to use Vault or other secret repository.

Use a scheduler to take backups and test recoverability.

Show up early. Follow-up quickly. Control your temper. Don't interrupt. Build a habit for always choosing words that seek to heal rather than hurt. Schedule regular one-on-ones with those important to you.

In other words, a great developer has a production mindset that their sponsors find useful and enjoy working with.

Now, go do it.

And let me know what could be added or removed from the above list.

Biswajit Ghosh

Generative AI, AI-MLOps LowCode Platform | Engineering Excellence, Developer Productivity, Digital Transformation, Platform Engineering , DevSecOps, SRE, Cloud Adoption

4 年

Superb WilriteUp, #2 is awesome ??

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了