What need to know and learn before starting developing software.

in development •  7 years ago 
  • Write code regularly. Do not rust your coding fingers, even when you're in design phase. Make it a point that you code daily. The only way you can become a good coder is by coding more.

  • Follow best practices. If I see a badly written code which I have to review, I will rip your soul apart. Right from the choice of names for variables, methods to your low level design, consistency, performance, optimisation, scope, modularity. A basic checklist of best practices is followed by the tribe of programmers. Either follow that or modify it with a datapoint. Don't write shitty code. Respect the tribe.

  • Stack Overflow, Be an ardent visitor of this website. Know how to search effectively. Do not ask a new question before analyzing the existing repository. Upvote an answer if it solves your question. Chose a best answer if you’ve asked a question. If you've found out a better solution, elucidate the same.

  • Document, a lot. This ranges from the javadocs/scaladocs at the code level to your requiremets/High level design/ Low level design/ Basic UML diagrams etc. I'm not a big fan of comments in code. Your code should be legible enough. I use them only if the logic is very complex or non intuitive.

  • Test, without any failures. Write unit tests for every testable business logic you have in your code. Don't try to hit high numbers of coverage. That's a terrible approach to testing. I can cover all the lines of code with multiple unrelated unit tests and still have a code that fails on a simple usecase. Test a business logic or any usecase you might think of which a new developer might not consider when you're in some other team 2 years later. The goal is to understand all the usecases of the code using the unit tests and if anyone who is not familiar with the codebase makes a change that was against the previous use cases, the tests should fail.

  • Learn, always. Computer Science is broad domain and there are tons of materials available online that will make you a master in no time. Broadly, you can give a shot at competitive programming, data science & open source development to begin with. These intrigue me a lot. That said, have short term and long term learning goals. It keeps you motivated. My short term goal is to become a novice in Apache Spark by September and long term goal is to learn the entire Python stack for data science and develop the habit of solving one good topcoder problem everyday by April 2018.

  • Know what you're building. This is one essential point which people forget when they get engrossed into development. Have a one pager that clearly documents the technical expectations of the product and the assumptions it makes. Get a sign off from the business folks or your clients per se. This will be useful for two reasons. Every small design change you make, you can validate your hypotheses against the document. If your client points out a bug which was against your understanding of the product, you can always rely on this document to be the ground truth. This is not the business requirements document I am speaking of. That's at high level. I am speaking of a document that should be made by the developer after the design phase when the requirements are well versed by the technical team.

  • Measure the impact of your product. Any feature or enhancements you make to the product, ask your clients about how would they measure the effectiveness of the change. What are the success measures? What kind of metrics needs to be published and tracked to rollout flawlessly? This will also help you put down a point in your resume against every project you worked on. For eg : Increased the click through rate of the ‘show recommendations’ button by 43 % by showing a pop-over of a default recommendation.

  • Know that Computer Science is a very tough and interesting field that needs a lot of patience and determination. You will be tired and frustrated at times and sometimes you'll be the king of the world. Oh, there's no better feeling than to learn the language of computers and speak to them, understand them and make them do what you want.

I am a 5 and a half years old programmer. My views might be niche and naive, sorry for that.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

I have 35 years at the code face now and still learning. All your points are valid :)
I would add

  • Learn other languages from other paradigms such as functional. Each language will give you new ways to do things.
  • Try peer programming if you can. Two people one PC. One coding the other watching and thinking about the big picture. Swapping places every once in a while. Again new ways of learning.
  • Build fast but refactor aggressively as you go
  • Never duplicate code, it creates more work when fixing bugs

:)

Peer programming is such a great way to learn programming faster, I can recommend that to anyone. Also if you can't find someone who can spare the time to program together, even just asking for code reviews is a great way to improve.

You have really much more experience nice to meet you sir. Are you I discord...@woz.software if yes send me link

I don't tend to use systems like discord.

This post has received a 0.81 % upvote from @bellyrub thanks to: @steemerhrn.