How to create a robust code structure that proves your competency, solidifies your job position, help you earn more via promotion, or job switch, avoids overtime, avoids rework, and prevent burnout

Also, gain the respect of your colleagues, enabling you to make big decisions on your own and steer projects architecture in the direction you choose

  • Even if you think you are behind everybody among your colleagues
  • Even if there are hurdles in your way like meetings, distractions, backlog, deadlines, no free time
  • Even if your boss don’t have time for better code structure
  • Even if you have tried writing better code structure but it never worked out
  • Even if you have tried all the boring and fluffy material on code structure before e.g. college, courses or books

A phone call from office

Relaxing and enjoying leisure time with my family. I was hundreds of miles away from my office and I was worried that a call from work might interrupt my vacation.

I had been planning this vacation for a long time. I put a lot of activities on hold, like playing games without interruption, going out with friends, or traveling with family.

 

And suddenly my phone rang… The call was from the office.

I am not an on-call developer or into dev-ops. I have been into desktop/web/mobile app development through out my career. The call from office means something big has come up and my family was looking at my confused face.

So, I received the call from my colleague who is an embedded developer– different job role than mine and to my surprise the problem was even bigger.

The new head of the department was standing over him, asking him to make some changes to the code that I had written, and under-pressure, my colleague had to call me. We could not deny our boss because it was our first interaction.

And first impression must be good! Besides, it was urgent.

So, I calmed him down and asked for the required changes. I told him how he can do all the changes by changing a few lines in the code. Afer that, I text him code configuration that needed to be done.

I did not even called him back for the updates. Asking for updates means more calls from the boss.

Anyway, the call never came and my next interaction with my colleague happened when I returned to the office. When I step into my office our new boss was also sitting there. He looked at me, smiled and told me ‘Good Job’.

But I was happy for different reasons.
First, my colleague has no experience with my codebase or even C# but he was able to make the changes. So, my codebase is robust.
Second, my codebase keep my respect in front of my family. What If I had to go back to office in the middle of the vacation and deal with the fire? It would have ruined my vacation plans.

But here I am, earning respect from both my office and my family. A good codebase can give you this kind of freedom.

I found the idea of good code structure and design fascinating during my undergraduate studies, and I put a lot of focus on creating well-structured code.

But it took a long journey from being a student to really seeing the benefits of good code structure in action.

 

In the start nobody is like that

In my first month as fresh developer I was thinking that I am not in the right career.

First job after education is very hard. I only have worked on class projects. Real-projects are different.

The difference is very obvious. I believe the difference is same as the developer shown in the movies vs the developer in real-life.

I realized later that I was pulling my hairs out because I was frustrated

  • The codebase was fragile and even a small change would break the entire system
  • No documentation was available and even if there is some it was outdated
  • Most importantly, the seniors were not helpful
  • Seniors were blank when I talked about code structure or design pattern(even if I talked about making structure of codebase good– they were not interested)
  • Stress of 9-5 job is too much when you are junior

So I did what every rational programmer would do — work harder.

Was this the right thing to do?

I hustled and did not care if the codebase is broken due to a change. I can sit late and give it more hours to make it work.   

As a beginner in your career and life you don’t know about other aspects of life. Suddenly, I realize one harsh reality about software development career.

One day I got a call from my friend who looses his job. He was a flash developer and Adobe has discontinued the Flash product after the rise of HTML5. No more flash hence no more flash developer.

Any technology, for I have put in the hard work and gain skills is not guaranteed to survive the continuous inflow of new technologies in software development.

Working harder is not enough I need skills that are future proof. It is not enough to keep your job or move to a better position. People who are in this position know that it is not a position of peace of mind or freedom.

So, are there any skill in software development that are future proof?

Are any skills in tech future proof?

The is the constant we fear have. I feel overwhelmed by the available options:

Should I learn Angular– maybe it will be replaced by Vue.
Should I learn Flutter– maybe I should learn iOS development because it pays more.
Should I learn Node.js? Hmm, maybe I should go with Java backend because it’s going to stay relevant in the job market for years to come.
Or Should I learn them all?

Recently, I see a post in a Magento developers group screaming for no jobs. So, I called my friend and classfellow who was the go to Magento expert. I know him for fiteen years or more. I stil remember the days when everybody was CMS developer either in WordPress, Joomla or Magento.

I asked what was happening with Magento developer jobs. He replied, ‘There are no jobs,’ and added that ‘he can’t even mention it on his CV.’

Five years of experience gone.

He said a junior developer is earning more than him because the junior has more experience in the technology that is in the trends now.

So what If I gather the experience in a technology. Will it worth it? Is it the right kind of experience?

What does Experience Means?

Experience is important. This how you will be paid better. This how you will get unlimited offers. This is true for all fields. But funny thing about software development is experience does not always count.

More experience in development does not always mean that you will be paid accordingly. My friend has 8 years of experience but effectively has only 3 years of experience. 5 years wasted in archaic technology. His junior is earning more who has 5 years experience but in right technology.

Another thing that I noticed is that when more experience does not mean anything. For example, working as desktop app developer in JAVA for 10 years does not mean anything.

Or managing a software for 10 years will not count as 10 years. It will be count as one year of experience repeated 10 times.

After a certain point level of experience you will not learn anything new or challenging.

Look crafting your experience is important. Many developers don’t care about their experience. Cal newport call this the career capitol. Your experience is just like your capitol. The larger the capitol you have the larger the freedom you have with this resource.

With years of experience in software development I have realized that how can we craft our experience that will guarantee us the more money, more free time, more autonomy and the impact that we can create.

Crafting the right experience just boils down to this one question:

What should we learn Next?

In my opinion, the best thing to learn next is whatever offers the highest value in terms of compensation as well as that stood the test of time.

For example, right after two years of experience I was hired by top paying company in my area. It was the dream company and every software developer wanted to be hired by them.

I still remember the day when my peers were coming to meet me the night I got the offer letter.

Job Offer

During hiring process they gave a test to each of us where we have to implement a real project and the duration was a full working day.

In the interview they were continuously grilling me on the nitty gritty of the framework and tools of that time but I kept my focus on the code structuring techniques that I have implemented. They switched their focus to the benefits of good code structure and I impressed them by showing how code structure techniques can be applied in real projects.

I was hired because I focused on creating the better code structure.
Because I knew that these nitty-gritty details can be looked up on Google, but code structuring techniques are important, even in the coming decades.
It was true then, and it’s even truer now. All of those frameworks the interviewers were worried and enthusiastic about don’t exist anymore. But code structuring techniques were important then, and they remain important now.
And I believe they will continue to be important in the coming decades
So, a valuable skill is something that is transferable. For example, attention to detail is a skill helpful many areas of your career specially programmers. Or dealing with stresful situation or making a plan. These skill are applied to multiple areas of your career.

One important skill in programming that is transferable or that is independent of any framework. Something that we can apply to multiple projects. Something that will be there for a long time. This skill is creating good code structure.

By demonstrating the ability in creating code structure that come with experience we can:

  • Get hired by top paying companies
  • We can solidify our job position
  • We can switch job for more pay
  • Demonstrate our credibility in our resume

But still, how much we are going to be paid is still decided by the company we work for. Right?

What if we are able to decide how much we want to be paid? What if we have the freedom to choose how much we wanted to be paid and do not allow the employers to decide this for us?

What if my friend who got fired from job has the power to keep his job or better switch for better job before anyone can fire him?

This kind of freedom in programming career is possible. It is obvious because most of the time we dont know the game that is being played around us. We know certain people who are doing so good and so ahead in the career and today I will show you exactly that.

Should I become a Game Developer?

While studying programming and growing up I always thought that one day I will develop AAA games, learn hacking, create a revolutionary APP and a lot of other good things.

You know it. You love to do these things as programmer. Right!

Turns out my job was doing trivial tasks.

One of my friend is exhausted of doing trivial tasks. He has to update the text on company’s website. I was on a similar path. For me, it was making another data acquisition application. Its boring because I have already made a ton of similar apps. There is nothing new to learn.

These small tasks can be done by a junior programmer using ChatGPT and if I am still doing these tasks after investing years in programming career then what is my worth in the open market?

I am at the mercy of my employer who can anytime hire someone at lower pay to replace me. I am the cog in the machine.

In such scenario who should I blame?

  1. Employers who have designed the systems in such manner that they can replace anyone
  2. Or myself, for falling into a comfort zone out of ignorance

In any case, if I continue to live this life, I have to let go of my autonomy.

I want job– they gave me job.
I want money– they gave me money.

Now, I have a job and a paycheck at the end of mont but am I free to choose for myself?

As junior we don’t realize this situation. And I fall victim to this phenomenon as junior. And I have seen many colleagues who have been stuck and become slave to their employer.

What is happening here ? What’s the game being played around that developers don’t see?

A hidden trap to avoid as a developer

Lets deconstruct a career mistake I have seen common in junior developers.

I once interviewed at a place and they ask me about ‘b’ programming language.
My response was, “what!” and a blank face. Years of programming experience and I did not about anything about that archaic programming language.

They were developing and managing legacy systems using PL/B programming language which is a programming language for business an alternative for COBOL.

The pay was better than the market at that experience level but I said no to the job. Because, At the start of our careers this type of offers looks lucrative but they are NOT. You will be stagnated in few years. There will nothing new to learn and guess what they will not allow you to learn new things but force you to learn everything related to that old technology.

In a few years and due to the curse of the ‘comfort zone’ you will be the cog in their machine. First your option for switching becoming non-existence. Secondly, in 5 to 10 years, your peers who started their programming careers alongside you—but in a more in-demand tech stack—will be earning more than you.

Here is the data from the recent market survey that depict the same:

Stackoverflow Survey

I was lucky that I saved my time. The choices that we make in our career make a critical impacts on our career. My friends who have been careless, have hit the growth ceiling, and did not have the in-demand skillset, have following options:

  • Start from scratch and let go of their years of experience
  • Live under a toxic boss because they cant switch
  • No appraisal in years and they have to live a smaller life

It is our responsibility to take care of our programming careers. Its not the responsibility of the CEO or the manager. They want replaceable human resource so that they can spend the minimum. If you make yourself replaceable they will replace you.

I want you to understand this dynamic. Your freedom is in your hand if you know the game being played around you. How can you nurture the freedom that you have right now? How small it may seem but it can be improved.

How to gain respect as developer

We start our career we have to prove ourselves. As a junior , I was asked to develop an in-house tool for employees reccords management. Someone has already developed or worked on it. And I was asked to add a tiny new feature.

I could see other developers working on big projects and deploying them on regular basis. Whereas I was developing something that is not challenging and may not require a lot of skills.

I wanted to work on those real big projects!

But no one trusts a newcomer when even the smallest mistake could result in millions of dollars in losses. Often, they gave you a playground to prove yourself.

This is fine. I understand that. I kept doing simple tasks and they never assigned me real ones. I tweaked UIs, small changes, and similar housekeeping jobs.

Remember, you don’t want to be labeled as someone who only handles simple tasks. This is the perfect way to make yourself replaceable.

One day, a senior developer asked me to develop a quick application for doing some basic work. I knew how to strucutre the app, so implemented the app using the proper code structure. He implied that this is a simple task you don’t have to show yourself.

He bragged that he could write a straight forward code for the same task and he wrote it. Can you believe that!

Anyway, after few days, the code needed to updated that I have already foreseen. The straight forward code written by the senior dev was not good enough to handle the change. He eventually realized the importance of my code structure, so he deleted his code and started using mine.

I earn the respect and solidify my job position from a junior doing basic tasks to someone trustworthy of doing big projects. Now they see me as someone who can add value. Now I am not easily replaceable.

Earning respect will have a life long benefits. For example, one day my manager asked me “So, you wanted to implement this in JAVA– so that you can learn java”. I smiled because it was true. It could be done in any programming language.

But I choose java specific framework. Because, I wanted to learn the frameworks and tools while being paid. I can call my own shots. I can take big architecture decision.

This modern Java framework skill will be updated in my portfolio and will be helpful for my future more paying employers.

If you can find out a way to demonstrate the value using the smallest freedom that you have, you can unlock doors to more freedom, autonomy and respect.
Now, lets see where can we optimize our career for ourselves. Where our time is wasted and how can we take it back.

Have you seen developers praying!

Despite the heroic, motivational and adrenaline-fueled stories we see in the media about programmers doing amazing things and earning big– programming is a tough job.

Once I was doing overtime for days without any progress. I was dealing with an intermittent error—one that’s difficult to repeat. My code ran for hours before stopping and sometimes it stopped unexpectedly after just a few minutes.

It was painful to listen to the QA person telling everyone that the software had stopped.

The stress of late sittings and rework was so overwhelming that I thought I might need a magical intervention to solve the issue. After a lot of debugging I was able to solve the issue. Only a simple registry update was required.

I have seen developers scolding their code because sometimes it just does not work.

I’ve seen developers who merge code on Fridays and pray the codebase doesn’t break. Because if it does, they’ll have to sacrifice their weekend working overtime to fix the issue.

This is the reason that people hate fragile codebases where a minor change can cause rework for weeks.

Research have shown that people leave fragile codebases and not the organizations.

Anyway, our job as programmers is hard. Overwhelm and burnout are real, and they’re taking a toll on our lives by eating into our free time.

The reason could be bad culture, bad bosses or scarce manpower. All of this can be true but they are not in our immediate control. As a developer, improving the fragile codebase is in your control and doing so you can save your time.

You can use your free time to spend with family, play video games, or watch the TV series you’ve been waiting for. This can help reduce stress.

Or you can use this free time to invest in yourself. Learn new technologies. Make yourself valuable and use that value to go for more raise or better jobs.

You can take control of your circumstances.

Now, you don’t have to bear the toxic culture, or the bad boss or any other excuse.

Once again. Ask this question “who is getting the most benefits from your personal time”. You or your employer.

Thats why they don’t care about creating robust codebase. For that, they dont have the time. But for fixing bugs due to fragile codebase– they have your time. Therefore, dont give it away. Use your time to earn your freedom.

This fight with the system is not easy. It needs a careful strategy and now lets move to the strategy of fighting back.

THE STRATEGY YOU NEED

Now you have seen the game being played around you:

  1. They will not care about good codebase and they are happy that they have snatched your free time
  2. They will try to make you replaceable with a junior at a lower pay
  3. They will hardly allow you to learn for yourself or learn for switching.
  4. They want you to learn their own archaic tech stack that is not prevalent in the industry
  5. They will pay you better in the start to keep you in the comfort zone
  6. All in all, they want you to give up your freedom or stay on their terms

How can you FIGHT back?

First understand the game being played around you as a junior developer. I have seen this game played with other developers and have seen them wasted their life.

I was also a victim to that. I admit that it is hard to fight back and win.

First explore what are our options to fight back:

  • Quit: Quitting is easy but its not sustainable. You cannot outrun them. You will have to beat them. Thats the first rule.
  • Become Cynical: Developer who failed to take the challenge and failed to advance their career. Look around, you will see these cynical types developers in tech industry. They drain your energy. They are stuck and dont know what to do.
  • Being Strategic: Use the freedom you have — how small it maybe– to create a environment for yourself that will reward you with mroe freedom and ultimately autonomy

Luckily in our industry we have specific tactics that we can use for our advantage. I have found out the ways to invest on myself and with little freedom that I have — I have created the right skills and experience and earned the freedom and autonomy.

Its a game of grit and its a journey. I can teach you all my secret and we can go on this journey of freedom together.

You will be free early in your career. You dont have to face the failure that I have faced– more importantly you will play the better game then they are playing against you and you will win.

With freedom and autonomy you can choose for yourself– your job, your salary and your way of working.
First start with the job:

Unlimited Job Offers Gives You Freedom to Choose

The right skill has many advantages. For example, I got the job offer a year before graduation.

You know why?

Because I have describe how I have implemented the cart system for a store on my resume and email it to a nearest software house. I got the call of the CEO for the job.

There were students who didnt even got internships. Also, I secured job before the final graduation ceremony. As well as, I had four job offers to choose from– even before I leave the university.

The right skills give you the freedom to chose. You dont need credentials. If you just demonstrated the value. The power that you have over your life choices is incredible.

In most organizations, the average growth rate is about 5-7%. It will take years to grow income. While the cost of everything around us is increasing at a much faster rate– housing, fuel, travel, restaurants and even owning a good car.

For example, my brother, who is also in software development, was hesitant to switch companies due to his long-term work relationships. So, he asked me for help.

I told him, ‘You have the power, and you need to decide based on your best interests, not the employer’s.’ He chose to switch jobs for a 40% raise and never regretted it.

The best way to earn more in software development is by switching to better paying positions. This freedom to choose jobs give you more money as well as peace of mind that you are not replaceable.
For example, a competent friend of mine has amazed all of us. When he needed to take care of something or want a long vacation and the employer is reluctant. He usually resign and do his work, enjoy his vacation, learn new tech and the again join another organization after 3 or 4 months.

When you have freedom, you can afford to make such choices.

Not only that. With right skills you can progress in your career very fast. Having code structure skill can superchage your career.

How to quickly gain respect when join a new organization-- Fast track your career

When you have skill to make your code structure better you will have edge when you join a new company either for higher raise, less overwhelm or any other benefit.

Why?

Imagine a new developer joins a company. Its a new environment. The first thing you need to do is — make a place of yourself. Quickly onboard and participate in the real project is the fastest way to establish respect.

For example, an experienced developer will take about 2 weeks to understand the codebase and technology stack to be an effective player. On the other hand, an entry-level developer could take months before being effective.

Who you think will whose job will be respected more? Or given promotions or raise?

Similarly, switching technology stack become faster when you learn about the code structure techniques. Many people limit their career growth because they dont want to switch technology stack. They says things like:

“I have never worked on Javascript!”
“They worked on databases– I cant”
“I worked on ReactJS– I have experience in Angular”

But amazingly the underlying structure or principles of many technology stacks is similiar.

For example, If you know about the ReactJS then switching to Angular is easy because these two framework has similar principles and code structure.

You will find the overlapping concepts in asp.net core and node.js development specifically the middleware, routing and dependency injection.

If you can write functional code in C# then you can write ReactJs code very easily.

Sometimes, new developers are labeled as ineffective without anyone directly telling them. They are not made part of important discussions or no feedback on their tasks. As a result, during layoffs, their name is on the list, and during promotions as well as raise, their name is off the list.

Technical leads look for senior developers because they can quickly onboard them–even if they are new to the technology stack. Why because senior knows better about code structure and underlying principles than a junior.

A skill that will remain with you for life

When you learn time hardened skill, that skill will remain with you for life. Even if you leave one company and switched to next company– you can keep your experience with you and reap the benefits for the rest of your life.

I have created a data acquisition library, a wrapper library for interface card and both of these libraries are downloaded hundred of times.
I still get all the praise from the people who have used them.

If you have develop a library at your workplace and it is a good code structure– means that can be applied to multiple project than you can take it anywhere you wanted to take. For example, I have removed all the propriety names from the library and now it is mine to share.

All these experience is on my resume and on my Github profile which I can show as portfolio to my future employers.

As well as, I can use it in my future projects.

10x Developer Or a Valuable Developer

Develpers think that working on hardware, writing drivers, working on Kernel will make them great. Most developer believe anyone can do web/mobile development. Right!

On the other hand, we are worried that one day we may be replaced by drag and drop solutions, chatGPT or something we dont know.

There are countless memes that shows true fear in developer that they are not good enough and all they do is copy and paste from the stackoverflow. My non-programmer friend often teased me when I search for somethin on Google.

Once my roommate was doing FPGA programming and my web developer friend got impressed by that. Because we all believe that writing code that control some hardware is cool. That is the reason everybody was interested in hardware projects during projects demonstration at university.

My friend thought working with web/mobile development is not real work although he was the expert in web development and was earning way more than any embedded developer. We all believe this way. I myself believed in that.

But after gaining experience in embedded development, its not as heroic as we used to believe. We don’t always need to apply object-orientation or functional programming. All we need is a good grasp on pointers programming and valgrind tool.

Working on ‘cool’ things no longer impresses me, whether it’s hardware development, game development, web/mobile UI development, or any other so-called ‘cool’ development tasks. I know I can do it, if I just give it enough time.

So, what motivates me?
Linus Torvalds, the often unsung creator of Linux—a system used by billions of devices—emphasizes ‘good taste’ in writing clear code and doing things better than a junior developer. This idea really resonates with me.

 

Recently, a developer sent me a thank-you note for a library I wrote years ago. He explained how he is using that library in his project. Another junior developer colleague used my API in a way I hadn’t thought possible, and it works flawlessly. This keeps me motivated.

The only things that matter is about creating a positive impact in other’s people life.

It also means that I am not someone who uses others API, stackoverflow or google and just glue the code to make it work. I can create something that can be impact the lives of other developers in positive manner.

1000s Knives on my code

I still remember the cold night when my immediate boss knocked on my door.
I was about to go to sleep.
He told me that the director was asking for code changes.

In my night suit with my slippers on I went to the office and make changes. The director asked for more changes. I did that. He then reverse some of the changes. I did that as well. This goes on and on.

Finally, he was exhaused, looked at my face and said: “I dont know what I want just make this the final version”. Then he left.

The next morning, the director’s boss i.e. director general asked for more changes. He was the one who has to present on Demo day. This is what happens when you have multiple level of bosses. Each level has his or her opinion and a developer can be replaced or fired immediately if changes break the software.

Luckily, on the demo day, I had the privilege to visit the demo room and in the room there were 4 super large screens. And on 3 screens my software UIs were running.

And guess who was the guest of honor? The prime minister of our country.

This was the moment I realize that I am doing something that matters in changing the lives of people. Not just a cog in machine or a glue developer.

Also, I realize that to survive high pressure situation such as a big demo day, customer presentation, and product demo you need to make your code flexible.

How can YOU adopt and Move ahead

Imagine being a developer that is changing lives vs the developers that cannot exercise his own freedom of choice.
Learning to write robust code structure is not easy. I have seen developers in bad situations and coming up excuses such as they dont have time or their boss does not allow free time to learn for themselves.

Often they fell to the comfort zone and that will reduce their life to mediocracy — maybe not immediately but when it hits it will hit very hard.

For example, one of my friend could not believe he could be layoff and once it happens it was devastating. Learning skills and importantly learning skill that survived the test of time is the responsiblity of the developer.

Once you have mastered the transferable skill of creating code structure the results will give the biggest returns on your hardwork. For example:

  • You can exercise your autonomy in design decisions
  • Getting paid more because you can choose the job you wanted to work
  • Travel the world when you have the freedom
  • Prevent the burnout and invest the extra time on yourself such as vacation
  • Use free time to learn something new something exciting
  • Importantly, create a greater impact on people around you

Fighting the battle for you freedom is not easy. Your boss will be in the way, your seniors will be in the way and the system is designed that way to make you not achieve your full potential. I have fought this battle and have uncover their game. We need a solution that we can use to fight for the smallest freedom that we still have and grow from their.

An ideal solution will provide you with the right set of code structure skills that will last for decades. Not something that will not survive next six months. Thats applied in the frameworks of the past and that will be applied in the upcoming frameworks.

An ideal solution will take the real project scenarios that will show how these small changes in code structure can have greater impact not on your codebase but on your life.

Introducing

Indestrictable Code (IDC)

For developers who want to earn autonomy and money by improving the quality of their codebase

Get:

  • Start to end complete process for applying code structure techniques: design patterns, architectures, algorithm and etc
  • Not boring and fluffy examples like DUCK and Animal
  • Real world examples from real industry projects
  • When to apply, how to apply and why to apply any particular technique
  • Apply any design technique right every time
  • How modern frameworks implement these code structure techniques so that you can learn any framework quickly

Join this Course and You will Get:

  • The reason most developers don’t understand or realize the benefits of code structure techniques is because they don’t have work on real projects. So I have included real projects examples in this course
  • Start to end strategies of when to apply and when to stop any techniques. So that you get the immediate results
  • I have define three specific goals– just three– so that you dont have to worry what techniques should you apply. Using these goals you can apply any design technique right every time
  • How to create code structure from scratch — start to end– so that you can apply in your own project and avoid overwhelm
  • How to quickly learn about your the business of your software customers or end-users so that you can write better code to avoid rework and overtime
  • How these techniques can help you understand any modern framework such as reactJS, AngularJS, Spring JS, Asp.net and any other current and trendy framework
  • I have reduced the overwhelm for you. I have selected the best techniques in terms of return on investment. Either you are starting a new project or maintaining the old project I have included the best techniques for each developer situation
  • Its not tips but it is a complete system of applying code structure techniques right every time
  • Finally, how can you work for yourself? How to set your goals for personal development? For example setting your career goals, creating portfolio, learn new technology to earn more and create freedom for yourself

Here are the things that you will learn:

  • When to start and when to stop improving your code when you are junior
  • Two situation where developers spents 90% of their time (if we exclude meetings) and what to do in those situations with your codebase to make it flexible
  • Using code metrics to guide you if your code is good enough or not
  • Identify the skills and qualities that differentiate senior from junior roles, then learn those to earn more
  • Making programming so easy that it feels like typing
  • How to know if your classes are good enough or NOT
  • How to make your code maintenance free by removing “comments”
  • An easier method to create code structure from scratch specially for junior developers
  • How to create code structure from use cases/user stories
  • How the user requirements translate to flexible code (shown in real industry project)
  • How to create a small app to test your idea and then implement that in a large project
  • Find the classes from scratch for a real project
  • How Multiple use cases are implemented using the same code structure(demonstrated in real projects)
  • Reuse the code developed for one project to another project
  • How to develop flexible code API so that any other developer can use API in their code easily
  • How to quickly onboard with the team of any experience level
  • Three specific tools to handle too many classes
  • How to remove loops, if-else and other low level connstructs from your core code to make it flexible
  • When the logic is spill out everywhere– how to handle it?
  • How to deal with very complex method/procedure/routine?
  • Formula for deciding whether should you refactor your code or not
  • Learn others code quickly
  • What is expected from juniors in the workplace
  • What if there’s no documentation available?
  • How to work effectively if the technology stack is new to you?
  • How to communicate with seniors and colleagues if you don’t have expert level of skills or when you are a junior
  • Object mutation: where it is avoided and where it is needed
  • Learn classic search algorithms implemented in a real project that you can use in your projects
  • Creating code structure that is close for modification and open for extension
  • How to avoid inheritance because it makes code hard to change?
  • Every developer has this invisible bad habit of programming– how to avoid it
  • A bad situation where you use refactoring to get out of that situation

How Does IDC Work

The course is divided into 4 modules.
First module will resolve the biggest question that people have that “When To apply any Code Refactoring”.

Afterwards, the course is divided inot modules according to the roles of developers. There are two major roles. Either you are starting a project from scratch or you are working on an existing project. Each module will provide the process, the curated techniques and example from real projects to help you excel in these roles.

I have read books on design patterns, clean code, architecture and spent hundreds of hours testing the systems that I have created for junior developers. I have make it easier to apply any design technique right every time by just focusing on three goals.

I’ve bought almost all the available online courses on code structure, design patterns, writing clean code, design patterns of multiple industry, and architecture. This way, I just make sure that I dont miss out anything and it will be easier for you to learn.

Finally, the last module will give you the frameworks to deal difficult programming situations especially when you are writing code as junior developer.

Inside the Course

Imagine being a developer that is changing lives vs the developers that cannot exercise his own freedom of choice.
Learning to write robust code structure is not easy. I have seen developers in bad situations and coming up excuses such as they dont have time or their boss does not allow free time to learn for themselves.

Often they fell to the comfort zone and that will reduce their life to mediocracy — maybe not immediately but when it hits it will hit very hard.

For example, one of my friend could not believe he could be layoff and once it happens it was devastating. Learning skills and importantly learning skill that survived the test of time is the responsiblity of the developer.

Once you have mastered the transferable skill of creating code structure the results will give the biggest returns on your hardwork. For example:

  • You can exercise your autonomy in design decisions
  • Getting paid more because you can choose the job you wanted to work
  • Travel the world when you have the freedom
  • Prevent the burnout and invest the extra time on yourself such as vacation
  • Use free time to learn something new something exciting
  • Importantly, create a greater impact on people around you

Fighting the battle for you freedom is not easy. Your boss will be in the way, your seniors will be in the way and the system is designed that way to make you not achieve your full potential. I have fought this battle and have uncover their game. We need a solution that we can use to fight for the smallest freedom that we still have and grow from their.

An ideal solution will provide you with the right set of code structure skills that will last for decades. Not something that will not survive next six months. Thats applied in the frameworks of the past and that will be applied in the upcoming frameworks.

An ideal solution will take the real project scenarios that will show how these small changes in code structure can have greater impact not on your codebase but on your life.

Module 1-- When to apply any code structuring technique

Chapter 1- What is code structure and design techniques

How to reduce the overwhelm by so many code structure techniques that hinder you in applying. Also, here I have demonstrated just one goal that you need to focus upon to improve and get all the benefits of a good codebase

Chapter 2: When to improve your code

Understanding when to apply any design technique and when not to apply any design technique

Chapter 3: How to apply design techniques according to your work situation

There are situation that developer deal in their professional life. So, I have crystalized and divided the techniques according to the situation you are dealing with

Chapter 4: Why design techniques work?

Deep dive into the research and show you how can you apply the design techniques right every time

Module 2 -- How to create Code Structure from Scratch

Chapter 1: First technique: Using abstraction to create your code from scratch
How to start a project from scratch and how to come up with right classes and modules when you are starting out. 

Chapter 2: Second technique: Using customers wishes to write your code from scratch
A direct technique that will focus on the behavior of the software and help you create the software development project from scratch. 

Chapter 3: Real project that shows how to create code structure from scratch
Start to end full implementation of a real project using the techniques that I discuss earlier and I will show how these techniques are intertwined to give you full understanding of how to apply design technique right every time. Also, we will learn how these techniques are implemented in modern and trendy frameworks.

Chapter 4: Curated techniques with Best ROI in real projects
Curated techniques that will show you how to convert a procedural code to object oriented code using real project examples

Module 3: How to Deal With Existing Complex Code

Chapter 1: Process to deal with too many classes and convoluted code
Process to deal with too many classes. Deal with the question of when to apply and when to stop any design technique.

Chapter 2: How to deal with too many classes
Specific techniques to deal with too many classes that many developer face when maintaining a codebase

Chapter 3: Convert bad code to better code by Removing Infrastructure
How to remove common infrastructure that are more applicable to old programming paradigm but with new paradigms like object oriented and functional programming they are hinderance to our goal of better code structure. We will learn how to remove ‘if-else conditions’, ‘for loops’, ‘Nulls’, ‘Switch Statements’ and others low level code.

Chapter 4: Convert Bad code to Better Code by finding and creating abstractions
How to know when creating more classes will be helpful and specific situations where you should create more classes. 

Chapter 5: When to refactor and how it can help you as beginner developer or a new developer
How to prove yourself as better developer as well as how to onboard quickly when you join a new team

Module 4: The Secret Sauce

Chapter 1: How to select the right technique to apply every time
What is the secret sauce of overcoming overwhelm when selecting and applying the good programming principles

Chapter 2: How to apply these techniques in your Real Projects
How to get the best of this course

Bonus Chapter: How to create your portfolio from creating code structure
How to create a portfolio that demonstrate your capabilities in creating code structure. It is better than any credential that anyone would every earn. Showing code structure techniques in action to your potential employers will establish your credibility

Bonus Chapter: How to create your portfolio of good code structure

How to create a portfolio that demonstrate your capabilities in creating code structure. It is better than any credential that anyone would every earn. Showing code structure techniques in action to your potential employers will establish your credibility

Answer to Your Specific Questions

I dont have time because my manager does not allow extra time for creating better code structure

Hardly any boss will allow you. Because they dont have the time to do the things right. But they have your personal and unlimited time to rework. Therefore, I have cover the strategies in course where you can do it fast and for yourself only.

Also, it is your own responsibility to take care of your career and not your boss. So make the right decision in your best interest.

Not Enough Time Due to Agile Development

Another excuse use by top non-technical management to excuse the most juice out of developer. In their terms, agile means more work in less amount of time. You will never have enough time if you fall into the fake values of your employers.

Therefore, I encourage you understand the system and the skill of creating better code structure will give you enough time that you can spend on yourself.

Tried before but could not understand the design patterns

There could be many reasons. Most of the stuff that is out there has no real project example and contains a lot of fluff. People who have tried before but could not apply properly in their projects is because they have not seen the real project. All they have seen is metaphorical examples like duck and animal. Hence I have included the real project.
Another reason is overwhelm. People know the design pattern and design technique but they could not apply them in their project or dont know which technique to apply. I have simplified the complete process and it distil down to just three goals. So that you can apply it in your project right away.

Do employers care about this?

Technical leads care about this and they will be the one who will be put more weight in your selection and when you show your code structure skills in your portfolio (I have included how to create a portfolio for good code structure) you will be hired.

There are too many design pattern/techniques/architecture--which to apply in which situation?

There is too much overwhelm. So many design techniques to choose from and its obvious we cant remember all the techniques.

If you open the classic design pattern book there 23 design patterns and if you open the refactoring there are hundreds of refactoring or the methods to improve the quality of code.

Therefore, I have boiled my course down to three goals. If you cant remember three then just remember one and my whole course is revolved around that and you will see the immediate results.
You will notice how this single goal is applicable to most of your development tasks and how can you apply this principle to get all the benefits.

Also, I have divided the modules according to the developers life challenges such as when the developer are starting the project from scratch vs when they are dealing with existing projects.

I work finance/embedded/legacy system/ no one is using it in my organization and I dont know if its is applicable

Well if you are working in a discipline that does not change rapidly then you must be on this course. Because this course is about life long principles that are continuously applied in the cutting edge technologies. Skills in these technologies pay more and replaced the old ones. So learn code structure techniques to have secure future before.

Patterns will make my code un-necessarly large and verbose

Another excuse use by top non-technical management to excuse the most juice out of developer. In their terms, agile means more work in less amount of time. You will never have enough time if you fall into the fake values of your employers.

Therefore, I encourage you understand the system and the skill of creating better code structure will give you enough time that you can spend on yourself.

How will I know if I am doing it right

Know if your code is good enough or not. I have included specific benchmarks and goals that once you achieved them then you should not worry about improving your code anymore. It is already a great codebase.

Are they relevant-- how they are helpful in trendy modern framework

Code structure techniques are timeless and many modern frameworks uses these code structure techniques inherently. A developer who has learned code structure techniques can see the these action in any trendy framework and can learn that framework quickly. In this way, the developer can add more frameworks to his or her portfolio.

They are misunderstood-- There is no research backing code structure techniques

I have tackle this question in module and I have shown the research where it helps. I also have shown when apply code structure techniques is not helpful and shown it with research papers.

What about overrated patterns or anti patterns

Dont worry I have removed all the useless or dated patterns. I have selected the best that will give you the biggest ROI.

Fear that I might apply it in wrong manner

Numerical benchmarks and milestones in the form of goals are included to help you understand the right application of any design technique. If you are doing it right it will be depicted in numbers as well as you know using your specific milestones.

Not Enough Time Due to Agile Development

Another excuse use by top non-technical management to excuse the most juice out of developer. In their terms, agile means more work in less amount of time. You will never have enough time if you fall into the fake values of your employers.

Therefore, I encourage you understand the system and the skill of creating better code structure will give you enough time that you can spend on yourself.

Will it work for me?

Well I have crafted a course that contains complete process along with real project examples and distill it to a simplest form that you can apply in your project right away.

Use it for 30 days and if you dont find value out of it then just email me and I will return you your full payment. I will even eat the processing fee.

Because this is a journey that I want my students to go with me. Its not just the course it is a life time committment to walk the path of freedom with me.

I have put together a lot of hard work into this course gathering real example and making them fluff-free for my students.

So I ask you to try out yourself and if you dont get any value out of it then I insist you for a 100% refund of your money and I will understand that this course is not for you.

How it is Different?

First of all it works because I have tested it with my readers and students. The real project examples and start to end process is the best way to learn. Therefore this course is different because it is focus on real projects as examples.

There are books available out there that contains fluffy material and developers are unable to utilize them in their own projects.

Also, there are so many techniques and developers can’t remember or can’t judge which technique to apply where so I have distilled all the information and share the mindset of when to apply any technique.

I have design this course to be work in real environment and not for a class setting. So, as a professional you will get the best code structuring techniques possible.

Is this Right For you?

Who is this Product for?
This product is for junior developer who are working in software development. This is not for student who are just starting out their studies. If you are new to software development as professional you will get the most benefit out of this product.

Who is this product NOT for?
This product is NOT for senior developer with 15+years of experience. Because by that time they might have already figure it out themselves.

If you are seeking job then this course is good for you but if you are looking for a quick solution I frobid you to buy it. Off course you can use the strategies to ace an interview or show off to your colleagues but it is not designed specifically for that.

Because programming is not easy and at certain point, the weak links will be weeded out. So this is not a quick fix solution. You will be required to work hard.

You have other options:

Join a Bootcamp: for 10000$ dollar to 25000$ dollar — you better select the right bootcamp because most of them are teaching just basic skills with rudimentary real projects

Join a learning Platform: You can join a platform where you have 100s of option to learn from and no one course is specific

Do it yourself: Buy another book or course. A lot books and courses dont contain the real meat. They contains too much fluff and a collection of all techniques. Including the free videos available online.

Do nothing: One cannot survive in a programming career without learning new things.

I always thought what should I learn next. How to reduce overwhelm. Or I should not select a technology/programming language that would die soon. I would do anything to see the complete process of applying code structure techniques in real projects. The only way you can learn these abstract concepts is throught real examples.

FAQ

How much work will I have to do?
This is a self paced course. You will need at least 2 hours per week to cover all the aspect of this course. This is available to you all the time and you can comeback to any module you want and do it again.

Can this course help in passing interview?
It can but I forbid you to join this course so you can pass the interview. Because I don’t want a short term relationship. I want something that we can build together and grow together

What If I am senior developer?
Chances are that you have already learned it after working with so many frameworks and programming paradigms. But if you have not because you were in a different domain of work then you can join this course

I am busy and I dont know if I can follow through on this?
First its not a just a course. Its about your career progression. Secondly, its a complete system and not just a bag of techniques. You can learn a little and apply it in your daily project. Then learn more and apply them according to your situation. You can always come back to it at your own time.

What if I try it and find out that it is not for me?
If you tried it and you dont find any value in it then I ask you to get your money back. This is my guarantee. Because I want to serve those who want to walk on this path with me. So, if you think this course is not for you just email me within 30 days and I will return your full money.

Join Today And Get Your Freedom

ITC

$97/
  • The Full Course-- All videos
  • All Real Examples
  • 30 day, 100% money back guarantee

Look around yourself and see the energy of the new developers. How they have a fresh take on new things. They are willing to experiment and learn new things.

Next, look for senior developers, you will find someone who is lethargic or slow. You can define her or him as someone who is cynical. Always talking about how the economy is bad. How there are no jobs and how everything around them is costlier.

These senior developers have become cynical or their energy is gone. They scold the company the are working for and they scold the same company but dont switch. Why? Because they cant. They have become the slave.
Or think of superstar developers in your organizations. Chances are they might not be in your organization they might have switched earlier when the opportunity strikes them so they are already earning more and enjoying life.

These seniors dont scold their current employer because they are playing the games silently that most of these other cynical developers cant see. They are the ones who always called to meeting or their opinion is respected.

So which one of these you want to become. Think about 5 years from now or 10 years from now. You want to be dependent upon your employers for your job and work late hours.

Or you want to become someone like my friend who resign peacefully with his employers if he wanted a long vacation or travel around the world. Sometimes, the employers gave him the exceptional long paid leaves. He is free and have the autonomy to command his own life and not at the whims of his boss.

The choice is your. Your life can be put together on a different path from this day if you decided to join this journey with me.

ITC

$97/
  • The Full Course-- All videos
  • All Real Examples
  • 30 day, 100% money back guarantee