<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mugoya Dihfahsih</title>
    <description>The latest articles on DEV Community by Mugoya Dihfahsih (@dihfahsih1).</description>
    <link>https://dev.to/dihfahsih1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F267113%2Fc34d73cc-6901-4d3e-a174-9c0072575670.jpg</url>
      <title>DEV Community: Mugoya Dihfahsih</title>
      <link>https://dev.to/dihfahsih1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dihfahsih1"/>
    <language>en</language>
    <item>
      <title>No more coding, just deleting</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Mon, 09 Feb 2026 09:19:20 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/no-more-coding-just-deleting-6j1</link>
      <guid>https://dev.to/dihfahsih1/no-more-coding-just-deleting-6j1</guid>
      <description>&lt;p&gt;The Silent Plague of the AI Coding Era&lt;/p&gt;

&lt;p&gt;We're drowning in technical debt, and AI is the quiet culprit. Every "good enough" snippet, every generated function we barely understand, is compounding interest we can't afford.&lt;/p&gt;

&lt;p&gt;We're building systems we don't comprehend.&lt;/p&gt;

&lt;p&gt;Refactoring isn't a luxury anymore. It's triage.&lt;/p&gt;

&lt;p&gt;The real skill of the future won't be writing more code. It will be the courage to delete it and start from a clean slate. Before the debt strangles our systems completely.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>techdebt</category>
      <category>programming</category>
      <category>refactoring</category>
    </item>
    <item>
      <title>AI birthed a silent plague: Accidental complexity. Every generated snippet, every "good enough" fix—it’s debt compound interest.
Clean slates aren’t radical. They’re survival. Refactor or suffocate under code you can’t even understand.</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Mon, 09 Feb 2026 09:15:21 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/ai-birthed-a-silent-plague-accidental-complexity-every-generated-snippet-every-good-enough-3cdj</link>
      <guid>https://dev.to/dihfahsih1/ai-birthed-a-silent-plague-accidental-complexity-every-generated-snippet-every-good-enough-3cdj</guid>
      <description></description>
    </item>
    <item>
      <title>Learning programming has no age limit</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Sun, 17 May 2020 04:41:42 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/learning-programming-has-no-age-limit-6n8</link>
      <guid>https://dev.to/dihfahsih1/learning-programming-has-no-age-limit-6n8</guid>
      <description>&lt;p&gt;I didn’t go to college for a degree in Computer Science or Software Engineering. My first career was in helping people do well on standardized tests and get admitted to the universities and graduate programs they wanted. I specialized in getting people into medical school.&lt;/p&gt;

&lt;p&gt;However, I was not in a position to balance an entrepreneurial life and raising three children on a single income. So, last year, when my family and I moved to the United States, I attended a coding boot camp and got a job in IT.&lt;/p&gt;

&lt;p&gt;Now, I do DevOps in one of the top 20 Fortune 500 companies.&lt;/p&gt;

&lt;p&gt;Like you, I began my IT career at age 27. Now, we all are different; my story isn’t your story and it’s not my place to tell you what to do, but I can share a few things that might be of some help:&lt;/p&gt;

&lt;p&gt;The computer doesn’t know how old you are. If you type in the right code, the right things happen; if you type in the wrong code, the wrong things happen.&lt;br&gt;
Since you’re 27, you’re probably at a stage in life where you have more responsibility than you did when you were 18. You have things to take care of, and the kids have nothing but time. There’s nothing you can do about that necessarily, but you can make the most of the time you have by not wasting it frivolously like most college students do.&lt;br&gt;
Understanding the basics of electronic computing is something that most people just don’t “get.” If you can get through  and , both of which are completely free, you will have a much better background in programming than most people graduating college with a relevant degree. Sure, they might have taken the systems class or the algorithms class, but you just figured out the basics all by yourself.&lt;br&gt;
Once you get the basics down, you can learn a marketable skill. A good entry point is to be a “Full Stack Web Developer,” which means that you write both code that runs in the web browser as well as code that runs on a server. You can learn a lot about this by trying projects after learning the basics first!&lt;br&gt;
Keep on learning; many people just study to get that first job and then put on the cruise control. If you’re going to do that, get out of the IT field now; If you actually care about continued learning and are willing to prioritize it outside of work, then go for it and you’ll likely make it!&lt;br&gt;
Focus on problem-solving. IT is a field that is problem-solving where a lot of the solutions just happen to use code. Never lose sight of the bigger picture.&lt;br&gt;
Learn architecture from people who are actually good at it. If you do, your solutions will be amazing; if you don’t, your solutions will be bad.&lt;br&gt;
Once the computer stuff becomes easier (and it will with time), you’ll be able to get both the computer and your fellow employees to do what needs to be done. At that point, you will be a solid candidate for promotions, raises, and so-on.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;I didn’t go to college for a degree in Computer Science or Software Engineering. My first career was in helping people do well on standardized tests and get admitted to the universities and graduate programs they wanted. I specialized in getting people into medical school.&lt;/p&gt;

&lt;p&gt;However, I was not in a position to balance an entrepreneurial life and raising three children on a single income. So, last year, when my family and I moved to the United States, I attended a coding boot camp and got a job in IT.&lt;/p&gt;

&lt;p&gt;Now, I do DevOps in one of the top 20 Fortune 500 companies.&lt;/p&gt;

&lt;p&gt;Like you, I began my IT career at age 27. Now, we all are different; my story isn’t your story and it’s not my place to tell you what to do, but I can share a few things that might be of some help:&lt;/p&gt;

&lt;p&gt;The computer doesn’t know how old you are. If you type in the right code, the right things happen; if you type in the wrong code, the wrong things happen.&lt;br&gt;
Since you’re 27, you’re probably at a stage in life where you have more responsibility than you did when you were 18. You have things to take care of, and the kids have nothing but time. There’s nothing you can do about that necessarily, but you can make the most of the time you have by not wasting it frivolously like most college students do.&lt;br&gt;
Understanding the basics of electronic computing is something that most people just don’t “get.” If you can get through  and , both of which are completely free, you will have a much better background in programming than most people graduating college with a relevant degree. Sure, they might have taken the systems class or the algorithms class, but you just figured out the basics all by yourself.&lt;br&gt;
Once you get the basics down, you can learn a marketable skill. A good entry point is to be a “Full Stack Web Developer,” which means that you write both code that runs in the web browser as well as code that runs on a server. You can learn a lot about this by trying projects after learning the basics first!&lt;br&gt;
Keep on learning; many people just study to get that first job and then put on the cruise control. If you’re going to do that, get out of the IT field now; If you actually care about continued learning and are willing to prioritize it outside of work, then go for it and you’ll likely make it!&lt;br&gt;
Focus on problem-solving. IT is a field that is problem-solving where a lot of the solutions just happen to use code. Never lose sight of the bigger picture.&lt;br&gt;
Learn architecture from people who are actually good at it. If you do, your solutions will be amazing; if you don’t, your solutions will be bad.&lt;br&gt;
Once the computer stuff becomes easier (and it will with time), you’ll be able to get both the computer and your fellow employees to do what needs to be done. At that point, you will be a solid candidate for promotions, raises, and so-on.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;I didn’t go to college for a degree in Computer Science or Software Engineering. My first career was in helping people do well on standardized tests and get admitted to the universities and graduate programs they wanted. I specialized in getting people into medical school.&lt;/p&gt;

&lt;p&gt;However, I was not in a position to balance an entrepreneurial life and raising three children on a single income. So, last year, when my family and I moved to the United States, I attended a coding boot camp and got a job in IT.&lt;/p&gt;

&lt;p&gt;Now, I do DevOps in one of the top 20 Fortune 500 companies.&lt;/p&gt;

&lt;p&gt;Like you, I began my IT career at age 27. Now, we all are different; my story isn’t your story and it’s not my place to tell you what to do, but I can share a few things that might be of some help:&lt;/p&gt;

&lt;p&gt;The computer doesn’t know how old you are. If you type in the right code, the right things happen; if you type in the wrong code, the wrong things happen.&lt;br&gt;
Since you’re 27, you’re probably at a stage in life where you have more responsibility than you did when you were 18. You have things to take care of, and the kids have nothing but time. There’s nothing you can do about that necessarily, but you can make the most of the time you have by not wasting it frivolously like most college students do.&lt;br&gt;
Understanding the basics of electronic computing is something that most people just don’t “get.” If you can get through  and , both of which are completely free, you will have a much better background in programming than most people graduating college with a relevant degree. Sure, they might have taken the systems class or the algorithms class, but you just figured out the basics all by yourself.&lt;br&gt;
Once you get the basics down, you can learn a marketable skill. A good entry point is to be a “Full Stack Web Developer,” which means that you write both code that runs in the web browser as well as code that runs on a server. You can learn a lot about this by trying projects after learning the basics first!&lt;br&gt;
Keep on learning; many people just study to get that first job and then put on the cruise control. If you’re going to do that, get out of the IT field now; If you actually care about continued learning and are willing to prioritize it outside of work, then go for it and you’ll likely make it!&lt;br&gt;
Focus on problem-solving. IT is a field that is problem-solving where a lot of the solutions just happen to use code. Never lose sight of the bigger picture.&lt;br&gt;
Learn architecture from people who are actually good at it. If you do, your solutions will be amazing; if you don’t, your solutions will be bad.&lt;br&gt;
Once the computer stuff becomes easier (and it will with time), you’ll be able to get both the computer and your fellow employees to do what needs to be done. At that point, you will be a solid candidate for promotions, raises, and so-on.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;I didn’t go to college for a degree in Computer Science or Software Engineering. My first career was in helping people do well on standardized tests and get admitted to the universities and graduate programs they wanted. I specialized in getting people into medical school.&lt;/p&gt;

&lt;p&gt;However, I was not in a position to balance an entrepreneurial life and raising three children on a single income. So, last year, when my family and I moved to the United States, I attended a coding boot camp and got a job in IT.&lt;/p&gt;

&lt;p&gt;Now, I do DevOps in one of the top 20 Fortune 500 companies.&lt;/p&gt;

&lt;p&gt;Like you, I began my IT career at age 27. Now, we all are different; my story isn’t your story and it’s not my place to tell you what to do, but I can share a few things that might be of some help:&lt;/p&gt;

&lt;p&gt;The computer doesn’t know how old you are. If you type in the right code, the right things happen; if you type in the wrong code, the wrong things happen.&lt;br&gt;
Since you’re 27, you’re probably at a stage in life where you have more responsibility than you did when you were 18. You have things to take care of, and the kids have nothing but time. There’s nothing you can do about that necessarily, but you can make the most of the time you have by not wasting it frivolously like most college students do.&lt;br&gt;
Understanding the basics of electronic computing is something that most people just don’t “get.” If you can get through  and , both of which are completely free, you will have a much better background in programming than most people graduating college with a relevant degree. Sure, they might have taken the systems class or the algorithms class, but you just figured out the basics all by yourself.&lt;br&gt;
Once you get the basics down, you can learn a marketable skill. A good entry point is to be a “Full Stack Web Developer,” which means that you write both code that runs in the web browser as well as code that runs on a server. You can learn a lot about this by trying projects after learning the basics first!&lt;br&gt;
Keep on learning; many people just study to get that first job and then put on the cruise control. If you’re going to do that, get out of the IT field now; If you actually care about continued learning and are willing to prioritize it outside of work, then go for it and you’ll likely make it!&lt;br&gt;
Focus on problem-solving. IT is a field that is problem-solving where a lot of the solutions just happen to use code. Never lose sight of the bigger picture.&lt;br&gt;
Learn architecture from people who are actually good at it. If you do, your solutions will be amazing; if you don’t, your solutions will be bad.&lt;br&gt;
Once the computer stuff becomes easier (and it will with time), you’ll be able to get both the computer and your fellow employees to do what needs to be done. At that point, you will be a solid candidate for promotions, raises, and so-on.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why are developers so obsessed with full stack title?</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Sat, 14 Mar 2020 09:53:25 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/why-are-developers-so-obsessed-with-full-stack-title-3fdl</link>
      <guid>https://dev.to/dihfahsih1/why-are-developers-so-obsessed-with-full-stack-title-3fdl</guid>
      <description>&lt;p&gt;Recruiter: Now it says here you have experience with HTML, CSS, JQuery, JavaScript, SQL, C#, and NodeJS and that you are familiar with setup and administration of Linux and Windows servers.&lt;/p&gt;

&lt;p&gt;Me: Yes that's correct.&lt;/p&gt;

&lt;p&gt;Recruiter: Hmm okay, I’m just trying to determine if this role would work for you. It's for a Full Stack position, are you familiar with Full Stack work?&lt;/p&gt;

&lt;p&gt;Me: …yes&lt;/p&gt;

&lt;p&gt;Recruiter: Oh okay perfect, it's not on your resume so I wasn't sure. Can you add it? Now they are looking for someone that can do CSS but you only have CSS3, are you familiar with CSS too?&lt;/p&gt;

&lt;p&gt;Me: …&lt;/p&gt;

&lt;p&gt;This is why we strive for any sort of role that becomes the new buzzword of the business community. Soon it will be AI Afficionado just so the HR manager looking at the resume gets a little bit of excitement thinking they found the one instead of the 30yr developer in the pile next to them that contributed to Linux and has been programming since 8bit computers.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What i feel i learnt too late in life</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Fri, 13 Mar 2020 13:27:53 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/what-i-feel-i-learnt-too-late-in-life-4h5d</link>
      <guid>https://dev.to/dihfahsih1/what-i-feel-i-learnt-too-late-in-life-4h5d</guid>
      <description>&lt;p&gt;Whatever you do – give it 100% of your efforts.&lt;/p&gt;

&lt;p&gt;Forgive and let go , forget completely.&lt;/p&gt;

&lt;p&gt;Read too much.&lt;/p&gt;

&lt;p&gt;Speak less , listen more.&lt;/p&gt;

&lt;p&gt;Save a portion of your earnings and avoid credit card debt.&lt;/p&gt;

&lt;p&gt;Change your thinking and mindset , change your life.&lt;/p&gt;

&lt;p&gt;Never ever stop learning and growing as a person.&lt;/p&gt;

&lt;p&gt;Never stuck on a point, try new things , have new experiences.&lt;/p&gt;

&lt;p&gt;Find a mentor and do what they're doing.&lt;/p&gt;

&lt;p&gt;Be kind to people; treat people as you would like to treat you.&lt;/p&gt;

&lt;p&gt;Be persistent. When knowledge and ability aren’t enough, be persistent.&lt;/p&gt;

&lt;p&gt;“Life is scary. Get used to it. There are no magical fixes. It’s all up to you. So get up off your keister, get out of here, and go start doin’ the work. &lt;/p&gt;

&lt;p&gt;Nothing in this world that’s worth having comes easy.” Bob Kelso&lt;/p&gt;

&lt;p&gt;Smart girls like to hear they’re pretty, pretty girls like to hear that they’re smart.&lt;/p&gt;

&lt;p&gt;Happiness is a choice and everything else is a matter of perspective.&lt;/p&gt;

&lt;p&gt;Never forget your car keys will change your car from one tone of inert metal into one of the most deadly killing machines that has been invented.&lt;/p&gt;

&lt;p&gt;Wait 24 hours before getting mad and reacting about anything. &lt;/p&gt;

&lt;p&gt;If it doesn’t bother you in 24 hours time, it probably isn’t important enough to get mad over.&lt;/p&gt;

&lt;p&gt;Have the courage to live a life true to yourself, not the life others expect of you.&lt;/p&gt;

&lt;p&gt;Never attribute to malice that which can be adequately explained by stupidity.&lt;/p&gt;

&lt;p&gt;“There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.” Ernest Hemingway.&lt;/p&gt;

&lt;p&gt;Remember you’ll always regret what you didn’t do rather than what you did.&lt;/p&gt;

&lt;p&gt;“You’d worry less about what people think about you if you knew how seldom they do.” David Foster Wallace&lt;/p&gt;

&lt;p&gt;If you blame it on someone else, don’t expect it to get better.&lt;/p&gt;

&lt;p&gt;“You can be the ripest, juiciest peach in the world, but there will always be someone who hates peaches.” Dita von Teese&lt;/p&gt;

&lt;p&gt;Don’t make decisions when you’re angry. Don’t make promises when you’re happy.&lt;br&gt;
“Never argue with a stupid person, they’ll drag you down to their level and beat you with experience.” Mark twain&lt;/p&gt;

&lt;p&gt;Only pack what you can carry yourself.&lt;/p&gt;

&lt;p&gt;“Remember only enemies speak the truth. Friends and lovers lie endlessly, caught in the web of duty.” Stephen King&lt;/p&gt;

&lt;p&gt;Time is the most valuable thing you have.&lt;/p&gt;

&lt;p&gt;Remember the human touch.&lt;/p&gt;

&lt;p&gt;Be very careful how you spend the first and last two hours of each day.&lt;/p&gt;

&lt;p&gt;Think big; don’t be afraid to be bold.&lt;/p&gt;

&lt;p&gt;Invest in authentic relationships.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Things i learnt from best programmers around me</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Fri, 13 Mar 2020 04:50:49 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/things-i-learnt-from-best-programmers-around-me-n4l</link>
      <guid>https://dev.to/dihfahsih1/things-i-learnt-from-best-programmers-around-me-n4l</guid>
      <description>&lt;p&gt;Don’t be a lazy. Do things the right way even if it’s a lot of work.&lt;/p&gt;

&lt;p&gt;Don’t give up on something just because you’re stuck. You’ll figure it out eventually.&lt;/p&gt;

&lt;p&gt;Always track down the root cause of a bug. If a bug just “goes away”, it hasn’t. If you can’t explain what fixed the bug, it isn’t.&lt;/p&gt;

&lt;p&gt;Write unit tests. It may seem unnecessary and a like lot of work, but it will help you in the long run. &lt;/p&gt;

&lt;p&gt;Best practices are best practices for a reason. Don’t assume that your approach is better just because it’s what you’re used to.&lt;/p&gt;

&lt;p&gt;Writing readable code is important.&lt;br&gt;
The functions/methods you write should serve one specific goal and should be optimised.&lt;/p&gt;

&lt;p&gt;Your code should be easily understandable by the other person.&lt;/p&gt;

&lt;p&gt;There should be code reviewing so that you get to know where you're lagging behind, and if you review other's code you can learn from them.&lt;/p&gt;

&lt;p&gt;No one knows everything so don't be shy to ask some help if you get stuck or you're having problem in understanding some scenario.&lt;/p&gt;

&lt;p&gt;Copy paste will not work always.&lt;/p&gt;

&lt;p&gt;Always be willing to learn new things, try to adapt them quickly.&lt;/p&gt;

&lt;p&gt;If the code is repetitive try to separate it and make it a separate function.&lt;/p&gt;

&lt;p&gt;Learn to debug your code, write test cases so that you should know the problem when testing team comes to you.&lt;/p&gt;

&lt;p&gt;Use sonarlint or similar plugin to understand the flaws and violations in your code, using which you can improve your coding reliability.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Changes In Django Open Source</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Fri, 13 Mar 2020 04:38:24 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/changes-in-django-open-source-12ll</link>
      <guid>https://dev.to/dihfahsih1/changes-in-django-open-source-12ll</guid>
      <description>&lt;p&gt;There have been around 50 "core" developers with full commit access and&lt;br&gt;
decision-making power, and a Technical Board to act as a tie-breaker.&lt;br&gt;
But this wasn't how the project actually worked -- most "core"&lt;br&gt;
developers were inactive, and most decisions were made by consensus on&lt;br&gt;
the django-developers mailing list or in the bug tracker. So we are&lt;br&gt;
moving to a system that formally recognizes this, and officially&lt;br&gt;
adopts a more open, consensus-based process that does away with the&lt;br&gt;
special group of "core" developers. Since this is mostly just saying&lt;br&gt;
officially that they'll do things the way they've been working, users of&lt;br&gt;
Django probably will not notice any change :)&lt;/p&gt;

&lt;p&gt;Official Announcement was made here &lt;a href="https://www.djangoproject.com/weblog/2020/mar/12/governance/" rel="noopener noreferrer"&gt;https://www.djangoproject.com/weblog/2020/mar/12/governance/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
    </item>
    <item>
      <title>My first experience using python.</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Wed, 19 Feb 2020 11:24:46 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/my-first-experience-using-python-cj5</link>
      <guid>https://dev.to/dihfahsih1/my-first-experience-using-python-cj5</guid>
      <description>&lt;p&gt;I started using Python Programming Language, this was after me and my team landed on a project that necessitated python and majority of my teamates decided that its the language we were to use, ofcourse i had to adopt.&lt;/p&gt;

&lt;p&gt;I had no time to learn the language basics then use it in the project.&lt;br&gt;
I was assigned a module that required routine deliverables. For the first three weeks i struggled putting the logic together.&lt;/p&gt;

&lt;p&gt;I decided to use rudementary python methods that were dirty code to experienced pythonistas, we developed the first web application with the help of django framework which made the work alot easier.&lt;/p&gt;

&lt;p&gt;But consquently after a year now, i jave gained some skills coding in django and now i have resorted to going back to dirty code that i wrote first and updating it with new clean python logic.&lt;/p&gt;

&lt;p&gt;Am not so good in python but after a year of coding with it, i have experienced a drift in my coding skills, and i have promised myself to do more python and become a pythonista one day.&lt;/p&gt;

&lt;p&gt;Thanks python community&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
    </item>
    <item>
      <title>Is this a developer Syndrome?</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Fri, 07 Feb 2020 08:29:44 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/is-this-a-developer-syndrome-23kc</link>
      <guid>https://dev.to/dihfahsih1/is-this-a-developer-syndrome-23kc</guid>
      <description>&lt;p&gt;I can spend hours trying to fix a bug, but after finding a solution I regret the time I spent looking for the root cause of the error. I start sobbing 'maybe am not good at coding, do good programmers take all that long to fix such a simple bug'&lt;/p&gt;

</description>
      <category>codenewbie</category>
    </item>
    <item>
      <title>9 Best Python Frameworks for Building Small to Enterprise Applications</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Tue, 04 Feb 2020 17:10:54 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/9-best-python-frameworks-for-building-small-to-enterprise-applications-2jla</link>
      <guid>https://dev.to/dihfahsih1/9-best-python-frameworks-for-building-small-to-enterprise-applications-2jla</guid>
      <description>&lt;p&gt;PYTHON IS BOTH A FUN TOY AND A FRIGHTENING FLAMETHROWER. SAME GOES WITH WHAT YOU CAN DO WITH PYTHON.&lt;/p&gt;

&lt;p&gt;Python is loved by hobbyists, scientists and architects alike.&lt;/p&gt;

&lt;p&gt;It’s damn easy to get started with, has higher-order abstractions and metaprogramming capabilities to build large and complex systems, and has truck-loads of libraries for doing pretty much anything. Sure, there are limitations when it comes to concurrency and strong typing, but you can work around them.&lt;/p&gt;

&lt;p&gt;In this article, we’ll cast a look at some of the best Python frameworks when it comes to building web applications large and small.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Django
The Django framework has withstood the test of time the go-to web framework for the Python community. If you assaulted a Python developer in their sleep and forced them to build a web application at gunpoint, they’d automatically reach for Django the way a Rubyist will reach for Rails.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And there’s a good reason for that. Django is, as the tagline says,  “a web framework for perfectionists with deadlines.” It’s what is called a “batteries included” framework (much like how Python is a batteries-included language), which provides all common functionality out of the box.&lt;/p&gt;

&lt;p&gt;With these features baked in, Django massively cuts down on development time:&lt;/p&gt;

&lt;p&gt;A handy and pleasant ORM, with migrations created and applied automatically by the framework.&lt;br&gt;
Scaffolding for automatic generation of admin panel based on your models.&lt;br&gt;
Support for cookies, sessions, middleware, templates, etc.&lt;br&gt;
Security features like XSS prevention, CRSF prevention, etc., are applied automatically.&lt;br&gt;
Works with practically all databases out there (it’s easy to find adapters where official support doesn’t exist)&lt;br&gt;
First-class support for Geographical data and spatial queries though GeoDjango&lt;br&gt;
And much, much more. Suffice it is to say Django is a full-blown, friendly web framework.&lt;/p&gt;

&lt;p&gt;Is Django for you?&lt;/p&gt;

&lt;p&gt;Absolutely yes.&lt;/p&gt;

&lt;p&gt;Django makes excellent sense for all use cases, whether rapid prototyping or planning an enterprise application. The only rough edge you’ll come across is the framework’s structure. Since Django bends over backward to make development fast and easy for you, it imposes its structure (a concept called “convention over configuration”) on the developer, which you may not agree with. For instance, if you want to replace the Django ORM with something else (say, SQL Alchemy), be prepared for surprises.&lt;/p&gt;

&lt;p&gt;Interested in becoming full stack developer with Django and Python? – Check out this fantastic online course.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Flask
While Django takes up almost all the mindshare in Python web development, Flask is a strong contender.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As opposed to Django, Flask is a “micro-framework,” which means it focuses on getting a few, bare minimum things right, and leaves the rest to you. This “the rest is up to you” can be a source of frustration or delight, depending on what your goals are. For those that know what they’re doing and want to lovingly craft their web applications by choosing components of their choice, Flask is a godsend.&lt;/p&gt;

&lt;p&gt;Flask offers the following features:&lt;/p&gt;

&lt;p&gt;Routing, templating, session management, and other useful features.&lt;br&gt;
Full support for unit-testing&lt;br&gt;
A minimal, pluggable architecture&lt;br&gt;
First-class REST support&lt;br&gt;
Support for Blueprints, Flask’s unique take on architecture for tiny web applications&lt;br&gt;
Choose your packages for ORM, migrations, etc.&lt;br&gt;
Flexible application structure — put your files where they make the most sense to you&lt;br&gt;
Static file serving&lt;br&gt;
WGSI compliant&lt;br&gt;
Is Flask for you?&lt;/p&gt;

&lt;p&gt;As already said, Flask is a minimal web framework, with everything broken up into individual components that you can swap out. If you’re in a hurry to build a prototype, you’ll spend a lot of time making trivial decisions on the database, folder structure, routing, etc., that can prove counter-productive. Flask works best when you’re on to a stable, serious project of medium- to large-scale, especially REST APIs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Bottle
If you thought Flask’s approach wasn’t minimal enough and that you’d still like more control, say hello to Bottle.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bottle strips out even more, to the point where the only dependency is the Python standard library. This means no pip install this or pip install that, though you’d most likely need to before long. Here’s why Bottle stands out for some people:&lt;/p&gt;

&lt;p&gt;Single-file deployment. Yes, your entire application lives in a single “.py” file.&lt;br&gt;
No external dependencies. If you have the right Python version installed, you’re good to go.&lt;br&gt;
Supplies its templating engine, which can be swapped out with Jinja2, Mako, or Cheetah.&lt;br&gt;
Support for forms, headers, cookies, and file uploads.&lt;br&gt;
Built-in web server, which can be easily replaced.&lt;br&gt;
Is Bottle for you?&lt;/p&gt;

&lt;p&gt;If you’re making a really small app (say, less than 500 lines of code) with no special requirements, Bottle might make a lot of sense to you. It’s a complete no-nonsense approach to creating web apps, but in practice, you’ll find you’re more hindered than helped by Bottle. The reason is that the real world is always changing and before you know it. New requirements will be dropped on your head. At that point, putting everything in a single file would become a chore.&lt;/p&gt;

&lt;p&gt;Also, if you think Bottle and Flask are almost alike, you’re right. Proposals of merging the two date back to 2012, and even Armin, the creator of Flask, agrees with that. However, Marcel, the creator of Bottle, maintains a strict ideological distinction because of the single-file approach and insists that the two remain separate.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Zope
Zope is complicated to explain, but I’ll attempt. Yes, it’s a web framework that can be used to build applications large or small, but that’s not all. Zope is more of a platform that consists of tools (web frameworks included) created under the Zope philosophy and maintained by the Zope Corporation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Zope has several interesting components and features suitable for enterprise application development:&lt;/p&gt;

&lt;p&gt;A component registering and discovery architecture to configure a large app.&lt;br&gt;
ZODB — (the only) object database for Python for storing objects natively.&lt;br&gt;
Full-fledged framework and standards for Content Management Systems&lt;br&gt;
A set of web application frameworks — the canonical one is still called Zope, although several new frameworks (like Grok) have been built on top of it.&lt;br&gt;
Strong standards for software development, release, and maintenance.&lt;br&gt;
Is Zope for you?&lt;/p&gt;

&lt;p&gt;If you’re after a highly structured environment for building really large apps, Zope is good. That said, you’ll run into your fair share of issues as well. While Zope continues to evolve, the community is really small, to the extent that many Python developers haven’t even heard of it. Finding tutorials and extensive documentation is hard, so be prepared to do a lot of digging around (though the community is really helpful!). Also, the Python developers you come across may not want to learn Zope and “dilute” their skill-set.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;TurboGears
TurboGears is a highly flexible framework that has a genuinely composable architecture. It’s a framework that scales as per your needs, and you can use it to build a single-file application or a multi-tenancy behemoth.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;TurboGears has some elegant features, some of which are either not present in popular frameworks (like Django) or are hard to build:&lt;/p&gt;

&lt;p&gt;First-class support for multiple databases&lt;br&gt;
Multi-database transactions&lt;br&gt;
Highly modular — start with a single file and scale out as much as you need&lt;br&gt;
A powerful ORM (SQLAlchemy, which is more mature and capable than Django’s ORM)&lt;br&gt;
Pluggable architecture based on the WSGI specification&lt;br&gt;
Built-in support for database sharding&lt;br&gt;
A function-driven interface as opposed to deep, rigid object-oriented hierarchies.&lt;br&gt;
Is TurboGears for you?&lt;/p&gt;

&lt;p&gt;If you want to develop happily and want a tested, mature, and robust framework away from the media noise of “awesome, next-gen” and all that, TurboGears is a great fit. It’s highly respected in the community and has complete, extensive documentation. Sure, TurboGears isn’t opinionated, which means initial setup and configuration time can be more, but it’s the ideal framework for enterprise application development.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Web2py
Web2py started as a hobby project and was released in 2007. Its goals are to make web development easy and accessible to everyone.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a result, Web2py takes the zero-dependency approach to the extreme — it has no requirements, nothing to install, and includes a full-featured Web-based editor for development, database management, as well as deployment.&lt;/p&gt;

&lt;p&gt;You can almost think of it as Android Studio, which is more of a complete environment than just a framework. Some nice features that Web2py has, are:&lt;/p&gt;

&lt;p&gt;Virtually no learning curve.&lt;br&gt;
Minimal core (only 12 objects), which can even be memorized!&lt;br&gt;
Pure-Python templating&lt;br&gt;
Protection against XSS, CSRF, and other attacks&lt;br&gt;
A pleasant and consistent API&lt;br&gt;
Is Web2py for you?&lt;/p&gt;

&lt;p&gt;Web2py is a stable and fun framework, but it’s hard to recommend it against other options like Django, Flask, etc. There are hardly any jobs, and the unit testing story is not great. That said, you might enjoy the code API and the overall experience the framework offers, especially if you’re building REST APIs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CherryPy
CherryPy is another microframework that aims to provide basic framework functionality and quickly get out of the way.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While it’s comparable to other microframeworks like Flask, CherryPy boasts of some distinction:&lt;/p&gt;

&lt;p&gt;It contains a built-in multi-threaded server (something that remains on the wishlist of Flask)&lt;br&gt;
The (single) web server can host multiple applications!&lt;br&gt;
Serve your application as a WSGI app (to interface with other WSGI apps) or a plain HTTP server (which performs better)&lt;br&gt;
First-class support for profiling and unit-testing&lt;br&gt;
Runs on PyPy (for the true performance junkies), Jython, and even Android&lt;br&gt;
CherryPy does all this, and then the usual you’d expect from a web framework.&lt;/p&gt;

&lt;p&gt;Is CherryPy for you?&lt;/p&gt;

&lt;p&gt;If you’re building RESTful services mostly, CherryPy is a much more serious contender than Flask. It’s a decade-old framework that has matured nicely and is suitable for small and large applications alike.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sanic
The rise of Node and its asynchronous programming model left many communities feeling behind, Python’s included. In response, a flurry of async web frameworks have appeared on the radar, Sanic being one of them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sanic is heavily inspired by Flask, to the extent that it borrowed the route decorators, Blueprints, and other fundamentals hook line and sinker. And they’re not ashamed to admit it. What Sanic brings to the table, if you’re a Flask fan, is true non-blocking I/O to meet the performance levels of a Node application. In other words, Sanic is Flask with async/await support!&lt;/p&gt;

&lt;p&gt;When compared to CherryPy, Sanic has an incredible performance advantage (just think of how it would fare against Flask!). Check out the following results tested by DataWeave:&lt;/p&gt;

&lt;p&gt;As you can see, once the concurrency numbers start exceeding 50 per second, CherryPy practically chokes and throws up a high failure rate.&lt;/p&gt;

&lt;p&gt;Is Sanic for you?&lt;/p&gt;

&lt;p&gt;While the performance characteristics of Sanic blow everything else out of the water, it may not be the best choice for your next project. The main reason is the lack of asynchronous libraries. The bulk of existing Python tools and libraries were written for the single-threaded CPython version, with no forethought for high concurrency or asynchronous operations. If, for example, your favorite ORM does not support asynchronous operations, the whole point of using Sanic gets defeated.&lt;/p&gt;

&lt;p&gt;Because of these maturity and availability reasons, we won’t examine any more async frameworks in Python.&lt;/p&gt;

&lt;p&gt;9.Masonite&lt;br&gt;
I came across this framework a while ago and thought it was a step in the right direction. Since then, version 2.0 has been released, and I feel like the time has finally come to give Masonite some love.&lt;/p&gt;

&lt;p&gt;Simply put, Masonite is the Python version of Laravel (a famous PHP framework, in case you didn’t know). Why does that matter? It matters because Laravel was built on the principles of Ruby on Rails, and together these two frameworks allow non-Ruby devs to experience the “Rails Way” of doing things.&lt;/p&gt;

&lt;p&gt;Laravel (and to an extent, Rails) developers will feel right at home and would be up and running in literally no time. When I tried Masonite (and I did submit an issue or two, including a bug!), I was able to build REST APIs with exactly zero thinking because my Laravel muscle memory was doing everything.&lt;/p&gt;

&lt;p&gt;As a batteries-included, full-stack framework, Masonite brings several interesting things to the table:&lt;/p&gt;

&lt;p&gt;Active-record style ORM&lt;br&gt;
Database migrations (which, unlike Django, need to be created by the developer)&lt;br&gt;
A powerful IoC Container for dependency injection&lt;br&gt;
Own CLI (called “craft”) for scaffolding and running tasks&lt;br&gt;
First-class support for unit testing&lt;br&gt;
The biggest “rival” for Masonite is Django, as the community is doing its best to market the framework as easy, delightful, and the next big thing. Whether it will surpass Django is something time will tell (if you ask me, it does have a decent shot), but for a discussion comparing the two, see here and here.&lt;/p&gt;

&lt;p&gt;Is Masonite for you?&lt;/p&gt;

&lt;p&gt;Masonite is still a baby when compared to Django, so there’s no way it can be recommended over Django. That said, if you’re into the Rails way (or the Laravel way) of doing things, you’d appreciate what Masonite has to offer. It’s ideal for rapidly building prototypes that need everything pre-configured and easy to switch.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
There’s no shortage of Python web frameworks out there, large and small. While you can pick up pretty much anything for a small project, an enterprise application has demands that not many of these frameworks can fulfill. If you ask me, for enterprise development, Django (to an extent), Zope, and TurboGears are what comes to mind. And even among those, I’m inclined towards TurboGears.&lt;/p&gt;

&lt;p&gt;That said, any architect worth his salt can pick up a microframework and roll out their architecture. And this is pretty much what happens in practice, which explains the success of Flask and similar ideas.&lt;/p&gt;

&lt;p&gt;If you are a newbie, then this online course would be helpful to learn Python.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>flask</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What I wish I had known before becoming a software developer.</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Sat, 23 Nov 2019 18:21:28 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/what-i-wish-i-had-known-before-becoming-a-software-developer-4c56</link>
      <guid>https://dev.to/dihfahsih1/what-i-wish-i-had-known-before-becoming-a-software-developer-4c56</guid>
      <description>&lt;p&gt;Leave work early and have a side-hustle.&lt;/p&gt;

&lt;p&gt;Because you are not going to stay in the corporate world for long if you love hands-on technical work like coding, even if you are in a tech firm.&lt;/p&gt;

&lt;p&gt;The longer you work, you are going to realize the only way up is to move to management or sales.&lt;/p&gt;

&lt;p&gt;When that time comes, you no longer touch code. You will make a lot more money, but you would probably miss coding and do it on your free time anyway.&lt;/p&gt;

&lt;p&gt;The alternative is that you stay as a line level grunt, making considerably less money than your peers who have moved up, and becoming disillusioned with the company, the industry, or life in general.&lt;/p&gt;

&lt;p&gt;Either way, your only hope is what you do in your free time. If there’s one thing in the world left for a technical person to do with all the limited time he/she has in life, it is to code.&lt;/p&gt;

&lt;p&gt;By learning new technologies or even practicing your existing skills, you could either 1) build your own profitable products, 2) start a profitable consulting practice, or even 3) find a better job oppportunity.&lt;/p&gt;

&lt;p&gt;Thinking back, I should even start when I was in university.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to prepare for an software developer interview</title>
      <dc:creator>Mugoya Dihfahsih</dc:creator>
      <pubDate>Sat, 23 Nov 2019 18:16:41 +0000</pubDate>
      <link>https://dev.to/dihfahsih1/how-to-prepare-for-an-software-developer-interview-45fn</link>
      <guid>https://dev.to/dihfahsih1/how-to-prepare-for-an-software-developer-interview-45fn</guid>
      <description>&lt;p&gt;A note on timeframe: Three months is a reasonable for preparing. 4–6 weeks is the minimum if 3 months isn’t possible. Let’s break that down.&lt;/p&gt;

&lt;p&gt;Week 1: Brush up on the basics of your programming language&lt;/p&gt;

&lt;p&gt;Pick the programming language you’re most comfortable with and stick with it. Most companies won’t really care which you use as long as you show mainstream proficiency. You’ll likely be nervous during your interview, so even the basics can get lost. Refresh basics, and you’ll demonstrate real problem-solving skills.&lt;/p&gt;

&lt;p&gt;Depending on the company, you’ll either solve problems on a laptop or white board. Know ahead of time and practice with that method. Lyft and Salesforce require a laptop. Most companies, including Amazon and Google, will provide a white board.&lt;/p&gt;

&lt;p&gt;Week 2 &amp;amp; 3: Study data structures and algorithms&lt;/p&gt;

&lt;p&gt;These concepts are actually quite useful in coding interviews. Here are some relevant resources:&lt;/p&gt;

&lt;p&gt;For data structures, visit Mastering Data Structures: An interview refresher&lt;br&gt;
For algorithms and complexity analysis, visit Algorithms and Complexity Analysis: An interview refresher&lt;br&gt;
Weeks 4 &amp;amp; 5: Practice simple data structures and algorithmic challenges&lt;/p&gt;

&lt;p&gt;Start practicing relatively simple coding problems associated with data structures and algorithms. This will help you internalize the data structures so you can tackle harder questions later in the preparation process.&lt;/p&gt;

&lt;p&gt;Check out this guideline for an extensive list of questions at this phase&lt;/p&gt;

&lt;p&gt;Weeks 6-8: Practice complex interview problems&lt;/p&gt;

&lt;p&gt;It’s time to start practicing harder questions that are likely to be asked during coding interviews. For practice and challenges, look at Grokking the Coding Interview: Patterns for Coding Questions&lt;/p&gt;

&lt;p&gt;​Here are some guidelines to keep in mind as you solve these :&lt;/p&gt;

&lt;p&gt;Start timing yourself. Ideally, you shouldn’t spend more than 20–30 minutes solving any given problem.&lt;br&gt;
Don’t be discouraged if you are not able to solve a problem quickly enough.&lt;br&gt;
Start thinking about the Runtime and Memory complexity of each solution. You will have to clearly articulate the complexities in the interview.&lt;br&gt;
Weeks 9 &amp;amp; 10: System Design Interviews&lt;/p&gt;

&lt;p&gt;System design interviews are now integral to the interview process. These interviews have a significant impact on your “hiring level.” Learn distributed systems concepts like Cap Theorem, Consistency, Partitioning, Load-Balancing etc. Interviewers are interested in evaluating your ability to describe the different parts of a scale-able service, such as:&lt;/p&gt;

&lt;p&gt;How are web-servers load-balanced?&lt;br&gt;
How are databases shared?&lt;br&gt;
How are large files stored?&lt;br&gt;
How is the network set up for redundancy and maximum throughput?&lt;br&gt;
Week 11: OS and Concurrency&lt;/p&gt;

&lt;p&gt;Understanding concepts like Threads, Locks, Synchronization, etc. are beneficial whether you are building a mobile app or a web-scale service. Multi-Threading and Concurrency Interview questions are useful in gauging your level.&lt;/p&gt;

&lt;p&gt;Java Multithreading and Concurrency for Senior Engineering Interviews is a good resource to check out.&lt;/p&gt;

&lt;p&gt;Week 12: Object Oriented Design Interviews&lt;/p&gt;

&lt;p&gt;Some common questions include:&lt;/p&gt;

&lt;p&gt;Design an ATM&lt;br&gt;
Design an elevator&lt;br&gt;
Design a Parking System&lt;br&gt;
Interviewers are looking for your ability to transform the requirements into comprehensible Classes. You spend most of your time explaining the various components, their interfaces, and how different components interact with each other. Take a look at Grokking the Object-Oriented Design Interview.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
