How to be a good web application developer

Here are some of the attributes you should aspire to if you would like to be a good web application developer. I definitely feel these attributes are true but if you disagree with me, leave a comment in the comments section below

Don't be afraid to disclose source code

I've always had a fear of showing someone else code I've written because I've always felt they may have a better way to express the logic. My fear has completely been removed in this regard because I’ve come to the conclusion that all good software is the direct result of adopting the iterative approach to building it. Software will never be perfect and the more late nights you spend working on it, the slightly closer it becomes to the endless goal of being perfect

The only real validation of high quality code is if someone actually uses or relies on your code. The Facebook PHP source code leak will encapsulate exactly what I’m talking about here. There are so many negative comments criticising the logic but yet Facebook is one of the biggest success stories in tech history. Their code has probably seriously evolved since then

Validation does not occur based on the opinion of someone else simply reading your code. Often the person reading your code may not be under the same restrictions you were when you wrote it. Were they writing code at 2AM? Do they have the luxury of hindsight?

If these negative comments are being raised during something formal like a code review or in a pull-request, and the points are valid, then sure: if there is a more effective way to express the logic or if it’s become apparent that the project's end result should change, consider implementing the changes. This is the interactive approach in play right here

Just understand two simple facts: 1.) there will always be a more efficient way to express the logic, 2.) it’s very unlikely that you’ll hammer out the perfect application in the first attempt at trying

Don't compete with others

This is synonymous with: don't give a full fuck about what other people think of you. All that matters is that you keep improving, keep learning and keep striving to better yourself and your skillset

The only person you should be competing with is who you were yesterday and give yourself honest assessments about what you understand and what you don't. If you are falling behind on certain concepts, apply all the attributes I’ve written about here and you’ll be fine

If someone has a negative opinion on you, then tell them to fuck off and continue with what you are trying to achieve. Block them out and laser focus in

If someone has an opinion on you, ask yourself the following before you consider thinking about what they have said:

  1. Who is this person? What have they done that is so great?
  2. Are they someone you can trust or do you feel they lie or fabricate?
  3. Can you apply objective reasoning to their opinion and does it stand up to scrutiny?
  4. Have they treated their success like a zero-sum game (i.e.: have they adopted the opposite of winning alongside other people?)
  5. Are they ultimately at where you’d like to be in life?

People are often loaded with bullshit and they lie about their achievements and failures or they try to make out that the approach they have chosen in life is the best approach, the only approach that leads to success

Anyone that has been on this planet longer than a day will know there are a near infinite number of ways to achieve success–I mean career and financial success here. If your path is not running in parallel with theirs, this is probably perfectly fine

Other people also may have been very lucky and simply landed their arse in the butter without much effort. Sometimes this entitles them to feel they are in a position to give advice so I recommend you try to determine what lead the particular person to their success 

It is also a good idea to listen to close family (literally your direct family, don’t take a single step from direct family here) that you do place an emphasis on and pay attention to when it comes to criticism or suggestions. It’s unlikely that you’d need to run your direct family through the steps that I mentioned above, everyone else most definitely needs to be filtered

Be more than a professional programmer (i.e.: work on personal projects)

I've mentioned this before and I most certainly feel it's true. Working on personal projects and actually working on something meaningful, will help contribute hours to the much important 10,000 hours rule

The only way to get good at web application development, and probably anything else for that matter, is to simply put the effort in. Don’t wait for someone else to show you how to get it done, learn all on your own and enjoy the process

Working on personal projects will also enable you to test theories that your day job might not afford to you or to test theories that may be at odds with your day job. Side-projects can also assist you in getting a job and this has been proven true for me numerous times. I recommend you put your side-projects in a portfolio

You should really not be struggling to find something to build. Solve a problem that exists in your life and wrap a product around it. There is probably a high likelihood that someone else out there has the exact same issue as you and now you’ll have a product to sell. You can also read up on what’s been released on Product Hunt and build your own clone

Learn from the school of hard knocks

Failure is the best teacher. Don't be one of those people that is afraid to fail or take risks. You don't want to be someone on your deathbed with massive regrets. Try, fail, you’ll have a story to tell

Most people that come from an academic background (i.e.: a degree of sorts) did not achieve this on their own. According to a Sallie Mae study, 85% of college students had their parents pay for some of the education fees. It gets even worse when you consider the fact that opportunity is not equally presented to all people but rather given to them by the random act of geography, timing or some “connection”

If you don’t have an easy route to learning: learn from the school of hard knocks. The only certificate you’ll get is a big smile on your face and maybe even a few bruises. But none-the-less, it’s still a better certificate than one you can hang on your bedroom wall

Adopt the specialist approach / choose your subfield and laser focus in on it

How good can you really be at everything? Probably not that good and this is why companies like to hire specific people for specific tasks

The world most certainly wants more specialists and less generalists so it’s probably a good idea to choose a specific subfield and really spend a lot of time in it. Decide whether you want to work on the backend, frontend, relational database or even infrastructure automation/tooling. These are all great subfields and none is more important than the other

It’s good to have a working knowledge on multiple subfields but decide what your focus point is going to be a really laser focus in on it

If you disagree with this, ask yourself the following: can I really know all of the frontend and backend frameworks, particularly considering the amount of them out there?

Ask questions and don't be afraid to look like an idiot

People don’t enter this world with knowledge instantiated in their brain. They learn in the exact same way as everyone else. They either had someone teach them (i.e.: a school teacher, college professor, smart colleague, author etc) or they figured it out on their own (the informal approach). Whichever approach you decide to take, always make sure to ask a lot of questions. If the person does not like to answer the questions, they are of no use to you

You’d also want to remove that unpleasant feeling you get when you feel embarrassed. Make sure you have felt that feeling so many times that it really has no effect on your physiology

Things you can do that can help you overcome the negative feeling of embarrassment:

Focus on both aspects of developing software

Developing software has aspects of both poetry and science. Both of these concepts are very important to get a grip on

The poetry aspect of developing software asks:

The poetry aspect of developing software makes me want to fall asleep sometimes and enforcing coding standards should all be done in CI/CD but the questions presented by the poetry aspect of developing software are still very important

The scientific aspect of developing software asks:

There is a lot more to be said here but these are just some of the questions that should be asked and thought about

I would recommend you don’t neglect one aspect of building software for another. This is a lifelong career choice that will be filled with ups-and-downs. Understanding both aspects of developing software is just part of this journey and they will always ensure that you have something new to learn

Be balanced

There is probably only so much your brain can process in a single day. When you feel your brain is not functioning at optimal performance, go for a walk. Walk around outside the office and clear your mind

If you are behind on a few projects, make sure you do get ahead but do it in a maintainable way. You’ll gain nothing if you sacrifice your health or family for your career, conversely you’ll lose everything if you sacrifice your family for your career

A career can always be re-built, relationships often cannot