Posts

Showing posts from November, 2019

Why Unemployed Software developers are a cyber security threat?

Image
Software exists to make things we want to repeat -- in the exact same manner, time after time -- easy to access. When I press the “W” key, I expect a bunch of pixels to be placed on the screen in the shape of a W. I want this response to occur every time. Letters are then organized into words, then into sentences and then Microsoft Word. All highly stable, repeatable methods that are tried and true, wrapped in a user interface (UI) that makes it easy to access every repeatable routine. Even the way in which change is made is very slow, thoroughly tested and primarily focused on stability over the speed of change. It is all well and good to enable blue text, but it would be terrible if pressing the keys for a blue W outputted a Z. None of these aspects describe anything in cybersecurity. Cybersecurity is warfare, strike and counterstrike. It's chaotic and continuously changing. Products = Stable, repeatable methods Enterprise = Optimized, stable operations Cy...

How do you know that you've reached expert level at some programming language?

When you stop reading and start answering questions in Stack Overflow. When you start consulting the official manual of the language to check for difficult to interpret programming details. When you contribute to the community When your co-workers use you as a reference for the language When you start seeing beauty (and ugliness) in programs When you start disliking the code you did some time ago, because now you know more than that When your errors become much more complex, because you don´t make simple errors anymore When even without thinking your code is consistent, and you follow the same programming patterns and they are all clearly good.

Life as a Remote Software Developer

Image
Splendid! Yup, this is me working from a bathtub. But let me get back to the beginning. I work for Automattic, a 1000-person company spread across over 70 countries. My colleagues are around the globe - some of them work from a camper, driving across Southern America, some of them tried catching an internet connection from a cruise ship and majority work from the comfort of their homes. If I had to summarise remote work in a sentence, it would be: It just makes sense. When you think about modern office work, it is a bit peculiar. For lack of a better example, let’s imagine Facebook: Now here is a company that says you can foster real relationships online. They create a product focused on communicating with your friends, and they even sell (and use) a version of it designed for work. And yet, they force people to pay truly mind-boggling Silicon Valley rent, sit in traffic and get into the office to sit in front of the computer. If your work happens on the computer, ...

Basic Things Every programmer should know

Image
Here’s a quick list off the top of my head… Bad architecture causes more problems than bad code. You will spend more time thinking than coding. The best opportunity to get paid more is when you're negotiating salary before getting hired. People skills determine your success more than technical skills. Users will find impressive and bizarre ways to solve their own problems. Commit code more often. Always work in feature branches. Basic UNIX skills are helpful, but not required. Learning VIM or EMACS will change your world. All estimates are lies and "good estimates" are bigger lies. 80% of programmers are barely capable of doing their job. Businesses exist to make money, not to make code. Software exists to solve problems, it's not art. Agile is a trap. You can't avoid it. 80% of programmers never invest in improving their skills and never learn outside of work. Your boss believes you are replaceable. Work is a job, not a family, not a church, ...

If almost everyone can learn programming for free, why is the salary relatively very high?

Image
Because almost no one cares about programming. Don’t get me wrong. Everyone looooooves the idea of sitting around all day and pushing buttons and making bank. Everyone wants to  try . But no one wants to stick with it. It is impossible to be a good programmer unless you are very passionate about the craft. You have to take great joy in seeing your concepts and inventions come to life. Most people don’t have the patience. They want results now now now. Code requires patience and passion. Learning to code well takes  years . Maybe even decades. If someone is truly patient and passionate, they can become a world class programmer with just a few hundred bucks worth of books, and a cheap laptop. Hell, they might not even need the books, if they have a stable Internet connection. But most people try to do it for the money. All these people fail and go do something easier. When you are happy eating, sleeping, and breathing the process of learning to program, you ...

Learning data structures and algorithms

Image
When I say that you need to learn algorithms and data structures, what I really mean is: You Need to Learn Problems. No, you don’t need to memorize algorithms and data structures to the point where you can implement them on a whiteboard from memory. Nobody actually uses that skill, except during a job interview. If you want to write code at an exceptional level of talent, what you really need to do is: You Need to Learn Problems. First example for you. Let’s say that I have a large set of points in space. And then I choose an arbitrary point in space, and I say,  tell me, as quickly as you can, which k points in my set, are closest to this arbitrary point. Now you could have several responses to this question. One is to throw up your hands and have no idea where to start. Another is to simply compare the distance between every point in the set and the arbitrary point. If you did that, you should be able to sort that list by distance, and produce the k near...

Some worst aspects of software development.

Image
Honestly the software industry is so tricky that I could write a whole book about it, let’s do this: The gig economy . Disguised employment is completely illegal, yet this industry couldn’t care less. This industry is filled with contracts and contract-to-hire, both highly illegal under the FLSA. The law is not enforced and you will spend a tremendous amount of time finding worthy jobs even if you’re highly competent. Too many startups . I came to hate this word. They do “start”, but they never do “up”. There are plenty of projects who aren’t viable at all that managed to get investments, as mysterious as it could be. As a software engineer you are highly likely to work for a ton of startups for years until a serious company even decide to call you back on your resume. “ I have an idea ” . I do not even spend my time with people contacted me for their “ideas” anymore. I did a ton of that when I was young, I came, I saw, I cried. I did learn a ton of things this way, including t...

What do software developers, programmers or coders do after coding the whole day

Honestly, in the past I would have told you I spend hours every night learning new technologies and frameworks while pouring hundreds of hours into pet projects I never finished…. However, today, I’d tell you this: What I do that helps me be a better developer, is I leave it (to the best of my ability) at work. I focus on my well being. I focus on getting enough sleep. I focus on eating well. I focus on exercising. Most importantly, I focus on enjoying the life I am working for. I make sure I have hobbies I love. I focus on my relationships, and family building. Maintaining mental health is critical to being a successful developer. You can’t code well on 3 hours of sleep and 4 red bulls forever. You can’t write a good web api when you’re thinking about your wife asking for a divorce because you are always on the computer. For me, it’s absolutely critical that I take care of my life so that I may have a clear conscience to focus on my work. I constantly remind myself, I work ...

Django Python

Image
Using get method to return a single column with instance of the fields. The  get_object  method returns  queryset  i.e list of records, instead of  instance .To get  instance  you can use  first()  on  filter()  . This will gives you first occurrence. def get_object ( self , queryset = None ): obj = Staff . objects . filter ( pk = self . kwargs [ 'staff_id' ]). first () return obj