Wednesday, 1 February 2017

Things I Wish I Would Have Known When I Started My Software Development Career

I well started my career in ICT over 7+ years ago.

The experience and change of specialization has taught me alot. As a software engineer (what i believe i am) i have come to know that 

1.There is no “right way” in software development

Most Developers fresh from university will argue that this-way-that-way is the best approach. Patterns and the logic -which is which-, collections vs array list ,when to implement threads vs asynchronous io et al.

i have spent time trying to convince my workmates that my approach is good but i have come to learn that the circumstances determine the "right way" to develop a software solution.
There is no best practice that is universal.The academically defined best practice are to guide in solution implementation but not actual implementation.

The practical approach gives a better development and implementation than wasting time in trying to do it the "right way".

2.Reading books cover to cover not the best way to learn

I have done a number of programming languages and most i have learnt on the job.Books and videos have been helpful but i haven't read the books completely. Skimming was what i was doing

the best way i have found to learn a now software development is to immerse myself into a project and learn the language as i design a solution.This has helped me in my learning curve of the language.

i am taking my 1st steps in reverse engineering and its not as i thought

There are smart ways to become smart, and then there are dumb ways to become smart. 

3. The Software development community

Talking and socializing is not my strong points. I have found myself needing the software communities and interacting with different groups on different devt platform.

Local meetups and online meetups and forums are very essential in a software developer life.The communities help members when they have an issue an you get to learn allot on different implementation techniques of a solution.

You might be a member of a coding community already, but you just haven’t realized it yet. For example, those who’re learning Python, Java or Ruby (for example), might find that they’re often using sites that have – already – built a community around itself. The absolute best example of this would be Codecademy, and their learning to program platform.

Communities like the ones in our chart provide “room” for asking the right questions, and more often than not, people will be eager to help you, offer advice and different perspectives on how-to tackle your bugs. The key element to these communities is to research your questions before you ask them!

What else?
  1. Up-to-date information and problem solving.
  2. Insightful answers, new perspectives.
  3. Tips and tricks for all-level programmers.
  4. Links to resources, talks and research papers.
  5. Meeting new friends, code buddies, potential partners.
I’d rather have real programmers throw stones at me, than to wait in line for an answer from the poor webmaster who’s already so caught up in his own projects, that he instantly regrets the idea of starting his own community in the first place. I’ve been there, I should know.

The chart above tries to display the programming communities that you’re going to find in list by their popularity , and it is the order that I feel is the most appropriate, personal preferences will differ and please don’t let your opinion discourage you.

Massive amount of online communities at once might seem like an overkill, but try to browse these few websites at least a couple of times, in the worst case scenario it will engrave the history in your Google searches, and make it easier to find content (answers) that way.

and the journey continues...

These are just a few of the things that I wish I had known when I first started my software development career, but there are many more and lots of other things that I did do right from the beginning.

By attempting and doing it the wrong way i got to learn the best way to do things like implementing classes,linked list,dynamic loading and the simplicity in designing a simple software.complexity doesn't make a software good.the user using it does.