Successful Developer

A successful software developer is a person who is able to write each line of code with passion. And passion cannot be obtained by any software engineering degree, it must come from you.

10 Steps to Become an Outstanding Java Developer
1. Have strong foundation and understanding on OO Principles
2. Master the core APIs
3. Keep coding
4. Subscribe to forums
5. Follow blogs and respond
6. Read open source frameworks source code
7. Know the technology trends
8. Keep commonly used code snippets/utilities handy
9. Know different development methodologies
10. Document/blog your thoughts on technology

Skills I should learn:
1. Problem Solving
2. Requirements gathering
3. Basic project management
4. Excellent Interpersonal skills
5. able to work from design phase to implementation phase
6. Design and Development of the Web Services
7. Working knowledge of Software Development Methodologies and UML
8. Sun certified Web Component Developer
9. Sun certified Business component Developer
10. Scrum framework for project management
11. Excellent English Communication Skills



1. Being A Developer:
1. Be passionate about the being a software developer: you should enjoy sitting in front of PC whole day and enjoy lines of code you write.
2. Don’t try to learn all the programming languages: what you need to know is the concepts.
3. When you face an error : always tell to yourself , “I’m NOT ALONE, someone in this world should have faced the same error before “. And Google exact error message. Chances are 99% you will find the answer.
4. Get involved in forums: Ask and answer the questions
5. When you see an application (Web application or windows), tell yourself. If this is an application. Then it’s technically possible for me to build a similar one.
6. When you see an application (Web application or windows), try to model it in your mind:
Always ask yourself, can you build a similar application yourself. if not try to find the place where you think you might get stuck. And try to Google and find how to do it.
7. If you get stuck in code logic for more than two hours; STOP your work; go out to have a tea or coffee, before trying it again.
8. Be Confident: Help others and ask from others. Different people will have different aspects to solve an issue.
9. Never be ashamed, when you find the bug as a single line of code

Usually most of the bugs can be corrected in a single line of code. What matters is , how hard you tried in different aspects to solve the issue.


2. Learn path for a language:

Step 1: Java Language
Step 2:  Java platform API’s
Step 3: JEE platform
Step 4: Application Design
Step 5: Distributed System Architecture
Step 6: Development Process (Project management, Management etc)

3. 4 Steps that will help you to become expert:
1. Learn it
2. Do it
3. Discuss it
4. Teach it
According to the book “Outliers” by Malcom Glad Well , it takes 10,000 hours on average to become a true expert.[10 hours per day for 3 years]




4. Always have the below questions in Mind:
1. A good way to find out what you should learn is to look at job ads.
2 .What tools and techniques are they requiring most often
3. Read software magazines online
4. What technologies are they talking most about?
5. Read forums
6. What technologies are people asking most questions about?
7. What technologies are people buzzing most about?
8. What will become hot tomorrow?

5. Knowing about Self
1. Self Confidence:  competence[possessing the needed skills]+self-assurance[having the ability to achieve it]
2. Self –Esteem: Appreciate yourself as a unique individual with your own set of skills , talents, and abilities. Maximum level of self-love.
3. Self- Efficacy: judgements about our own capabilities and what we believe we are or are not able to do with those capabilities.

Sources of building self-efficacy:
i. Mastery Experiences:
One we see ourselves succeed, we are more likely to believe that we can do it again.
ii. Social Models: we believe we can do something more readily if we see someone like us achieving it first.
ii. Social Persuasion: we believe we can do something more readily if we have other’s tell us that they believe we can do it.
iv. Emotional States:
we will judge ourselves based on our emotional reaction to a situation –we may see ourselves as vulnerable or weak if we are too emotional or stressed.
How Self-Efficacy affects Functioning:
There are four major psychological processes that are important when discussing the fact that how a person perceives their self-efficacy can have an impact on their ability to function, perform and achieve.
The 4 process are
i.                    cognitive process
ii.                   Motivational process
iii.                Affective process
iv.                Selection process
Cognitive Process:   We rehearse what will happen in a situation by thinking about it. We then compare the reality of what happens to how well we predicted it.
              Motivational Process:
                       Casual Attributions: those with high self-efficacy understand that their  failures are a result of                 low effort.
              Out come expectancies: if we have high-self efficacy we know that we know that we simply                 have to give right input to get the desired outcome, and will be motivated by that understanding.
Self-influence by goal setting: If we see the goal as simply a function of the right activity combination ,we will set it high when we have high self-efficacy because we will believe we can attain the goal. if we don’t have high self-efficacy then we will set low goals for ourselves.
            Effective Process: This element relates to how we perceive our own coping abilities. If we believe we have good coping skills, we actually cope with difficult situations better than if we lack self-efficacy in this area.
          Selection Process:  You want employees with a high level of self-efficacy because it is more likely that they will have actively chosen their current profession and so will be more enthusiastic about it.
Theories for Motivation:
Factors Effecting Job Attitudes
Leading to dissatisfaction
Leading to satisfaction[priority highest to Lowest]
Company policy
Achievement
Supervision
Recognition
Relationship with boss
Work itself
Work conditions
Responsibility
Salary
Advancement
Relationship with peers
Growth
·         There is one important distinction to notice when it comes to self-motivation and self-confidence. The factors that tend to bring us the most satisfaction at work, and so we assume , the most motivation , are the ones that we have some control over – and that are most related to our job performance. If we are focusing on our performance , we will achieve our goals and receive recognition .  if we do something we enjoy , that alone can provide satisfaction.  We also can see that taking on more responsibility , advancing and growth are all ways to be satisfied at work. We can volunteer for additional responsibility , look for ways to grow our skills , and discover what would be necessary in terms of our performance to take advantage of opportunities for advancement. We might not be able to control company policy or the other factors that can lead to dissatisfaction, but we can certainly control our own performance.
·         Motivation is directly linked to the expected outcome of any effort that is expended. Three variables that create the link
i.                    Expectancy
ii.                  Instrumentality
iii.                Valence
i. Expectancy : means you believe that the effort you put in can affect the performance that you deliver.
This factor effected by:
a. having the resources you need to do the job(time, money ,hardware and software)
b. havin the skills and knowledge to do the job.
c. having the support you need to get the job done(manager support, approval, and information)
ii. Instrumentality : refers to the belief that your performance will effect the outcome. You believe there is something in it if you perform well this believe will be effected by:
·         Having a clear understanding of what has to be achieved in order to receive a reward – what the ‘rules’ are for you to get rewarded for your effort.
·         Trusting the people who will decide whether or not you receive a reward for a corresponding level of outcome.
·         Transparency in the process that results in who gets what outcome and corresponding reward.
iii. Valance :  is the importance that a person places on the reward or expected outcome.
So in order for a person to be motivated by what they believe the outcome will be (the reward) , all of the following must be true
·         They must believe that their increased effort will increase their performance
·         They must believe their increased performance will increase their reward
·         They must value the reward being offered.
As individuals, we can apply this theory of motivation to any area of our lives where we need to be motivated by creating our own rewards for performance and goal achievement.
Hierarchy of Needs:
People have 5 levels of needs that they seek to meet. The more basic the need, the more motivated a person will be to fulfill it.
Level 1: psychological Needs: bottom or most important. These are the things which our  body needs in order to keep functioning.
Air, food, clothing, water, Shelter
Level 2: Safety Needs:
Once the physical needs are met individual focus on making sure that they are safe.
job security, projection from unilateral authority, Financial savings, Insurance policies, Reasonable accommodations for disabled
Level 3: belonging Needs
revolve around social interactions and the need to belong. These needs will be persuade once the lower needs are met. People will full fill this need by persuing individual relationships and by joining larger social organizations. These needs are emotionally based and full fill the need to be loved by, cared, for, and accepted by others.
if these are not met individuals become more at risk for depression, social awkwardness or anxiety or lonliness. In some cases of extreme peer pressure, individuals may actually sacrifice the lower levels of needs in order to fil in.
People may full fill this level of needs by different relationships, such as
·         Family
·         Friends
·         Intimate Relationships
·         Clubs or social organizations
·         Sports teams
·         Office culture
·         Religious groups
·         Professional organizations

Level 4: Ego status Needs : are belonging needs , but with one major difference. Whereas belonging needs refer to being a part of a group , ego-status needs refer more to how individual believes  she is seen by those groups. Our needs at this level revolve around us reinforcing our self-image and , by turn, the image others have of us.People strive to fill this need by such means as :
·         Status and achievement at work
·         The accumulation at work
·         The accumulation of status symbol(car,homes etc)
·         Recognition from others
·         Taking opportunities to lead others.
·         Associate people who have esteem of others
·         Personal achievements in areas  such as education, skills, and hobbies
·         Pride in the achievements of their family members
those with healthy self-esteem are those whose esteem is based on their own accomplishments and internal feelings.
The more self esteem based on external things , the more fragile it is.
Level 5: Self Actualization: need to become more and more of oneself, and to become more and more of what we are capable of becoming.
It is important to realize that this level of need is only achievable when the other four have been met.one must be physically nourished, not have to focus on safety , feel loved and a sense of belonging, and have a good level of self-esteem before he or she would seek this level of desire.
Two ways of understanding self-actualization
i.                    To cease caring about the good opinion of others
ii.                  To do things purely because you enjoy them- because they are the reason you are here on earth, not because of money, fame , or any other reason
If you no longer care about the other people think (generally) and you are doing things that you love, you are affirming your individuality and accepting yourself –faults and all


Methods for Improving Self Confidence:
10 tips for self-confidence:
i.Dress up:when you feel that you look your best, you are more likely to carry yourself with more confidence
ii. Step up the Pace: watch people walking by the next time you are at work. What does their walk communicate about them?walk about 25% faster than you normally would , with your head up and your energy flowing.you will start to feel more important and more confident
iii.Watch your posture:
Practice good posture to feel more alert, more confident, and more powerful.
iv. personal advertisement: A personal advertisement is a one minute or less speech that you write about yourself and all your strengths and abilities so you can refer to it whenever you need a confidence boos.
vi.practice gratitude:write down atleast five things every day that you are grateful for and you will be training yourself to stay focused on the positive in your life and about yourself.
vii.Pay people complements:focus on the positives in others by paying them complements . By looking the best in other people, you will bring out the best in yourself.
viii. Sit up Front :
ix. Speak up: feel free to speak in group discussions and feel confident in sharing your ideas in front of other pople.in fact, in time, you may even begin to be seen as a leader  by your peers and supervisors if you continue sharing and contributing to group discussions.
x.Excersise:
excellent way of feel better about your abilities.
xi.Focus on contributing : focusing on what you contribute will help to boost your self-confidence.
When you are collecting a paycheck or getting paid to do it.  That is the definition of being a professional in any field versus a talented amateur or hobbyist.

As to the skills to master it depends on the type of Java work you want to specialize in.  Everyone is a specialist nowadays.  Desktop applications aren't exactly an in-demand skill in Java today except in niche areas.  Most Java outside of mobile applications is enterprise/web/web services types work.  So rather than a desktop application, you'd be writing middleware or back-end code for an intranet web application to communicate with.  The web application itself may write using Java technologies or another stack entirely.

For enterprise work, I consider a working understanding of databases via JDBC, database frameworks, web services along with the associated XML, XML Schema, WSDL, JAXB, SOAP and REST technologies, a working understanding of Java web development at the core with Servlets/JSP and one or more web frameworks like Spring Web, JSF2, etc.  Bonus skills revolve around specialty needs but can include caching, NoSQL, cryptographic extensions, understanding of applied web and application security principles, etc.

Become Great Programmer:
1.       You MUST be passionate:
If you are not passionate about learning, thinking logically, and solving problems, then you simply can’t become a great programmer.
2.      Persistency : KEEP PUSHING
There are million things that can stop you at good level.But to keep going on you should keep pushing. Never give up , always keep reading new article, play around with new technologies, try out all cool stuff that you can find, and enhance your internal desire to discover and improve.
3.      Don’t just read/watch , COME DO IT!
3.1   embrace open source:
open a github.com account. Then start forking cool projects that you can think you'll like and keep improving them.  Submit a pull request, or simply ask the author if there's any bug/feature around that you can help fixing/implementing.  Make your hands dirty.  Yes, this is the price to pay for becoming great.
3.2   Be Brave ! No one is going to laugh at you
4.      Trust in Yourself ! Not everything is already invented.
More than a million times this thought will come to your mind that all great ideas in the world are already implemented or are being implemented by someone in a cool place of the world right now. NOT TRUE!  Google wasn't the first search engine.  Facebook came where there was many social networks around.  Twitter was nothing but a blogging service with an if limit on number of characters that you can post.  Dropbox wasn't the first file sharing system.  Slack (software)(they went from zero to $2,800,000,000 value in a year and half!) wasn't the first chat software.
Yes, You can be the next! Trust in yourself man.
Be someone that makes you happy.
No, you don't need a mentor!
You are your own mentor.  Just believe in yourself and go learn how to learn fishing.
First and foremost, you must read a book called Code: The Hidden Language of Computer Hardware and Software By Charles Petzold
Afterwards you should:
·         Build an 8-bit computer from scratch
This helps to implement what you know and will make you very passionate about a machine you have built from scratch. It will be reminiscent of Woz in the old days...or at least that's how I felt by building it.
How to Design, Program, and Build Your Own Working Computer System by P. Kenian
http://www.amazon.com/design-pro...
·         Program an Operating System
Program an OS for your newly built 8-bit wonderfully engineered machine! You will feel like a boss and your passion will be way way way up by this time.
How to Design, Program, and Build Your Own Working Computer System by P. Kenian
http://www.amazon.com/design-pro...
·         Build your own programming language
Okay. Maybe not an entire language on your own. But you can build a small dialect of Lisp in C with beginner level coding skills that will teach you an incredible amount about the C programming language. This is a seriously fun activity!
www.buildyourownlisp.com
·         Build a Server
I haven't exactly gotten to this step yet, but I am very excited to build it! I'm not sure what I'm going to learn from this little exercise, but I am most certainly positive it will just make me much more confident that I can do anything I set my mind to, especially computer science related.
http://www.techrepublic.com/blog...
·         Complete the MIT Computer Science degree plan from start to finish...FOR FREE
Scott H. Young set out one day to complete an MIT CS degree in less than one year.He ended up completing the degree in about 10 months. If he can do it in 10 months with focus and discipline, you and I can do it in one to two years with discipline. The courses are also made free online thanks to MIT Massive Open Online Courses.
http://ocw.mit.edu/help/rss/




If you are preparing Software Development Interview At Amazon, Google, Facebook, Twitter, Microsoft, LinkedIn, or similar companies , would recommend
i.                       Read cracking the coding interview
ii.                    Read Amazon SDE interview questions: http://myamazoninterview.blogspot.in/
iii.                    Solve some projects at Project Elure: https://projecteuler.net/
iv.                   cherry-pick videos from the mycodeschool channel on youtube: https://www.youtube.com/channel/UClEEsT7DkdVO_fkrBw0OTrA
v.                     interview at a few other companies *before* your preferred employer



Comments

Popular posts from this blog

Database Definition and DBMS