Podcast #128: We chat with Kent C Dodds about why he loves React and discuss what life was like in the dark days before Git. Listen now.
385

This way, the dates can easily be sorted as strings using the default sorting rules (i.e. lexicographical sorting). This is also why both month and day are specified using two digits (adding a leading zero if needed). In fact it is one of the date formats defined by ISO 8601. That standard also defines a date-and-time format, 2015-03-27T15:26:40Z, which ...


135

Not mentioned yet, but you quickly gloss over the order inside YYYY. That's already millennia, centuries, decades, years. That is to say, YYYY is already ordered from longest period to shortest period. The same goes for MM and DD, that's just how the number system works. So to keep the order between fields consistent with the order within fields, the only ...


57

Is there any reason at all? Yes. Those pieces of software will be using ISO 8601. ISO 8601 has a number of advantages over other date formats: It's a standard with a spec document :) It's unambiguous. mm/dd/yyyy and dd/mm/yyyy can be confusing unless it's past the 13th day. It lexicographically sorts into ascending time order, so no special date-sorting ...


55

It's because all the other ways to do it are ambiguous. 01/02/2003 what does that mean? January second 2003? Or in Europe: February 1st 2003? It gets even worse if you use two digits for the year, as 01/02/03. That is why you use YYYYMMDD, it's the convention which enables us to communicate clearly about dates, 20030201 as a date is always clear. (and it ...


34

Memory management is utterly relevant since it governs how fast something appears even if that something has a great deal of memory. The best and most canonical example are AAA-title games like Call of Duty or Bioshock. These are effectively real-time applications that require massive amounts of control in terms of optimization and usage. It's not the usage ...


30

The real brick was the memory allocation - at worst, Java allocated a whopping 52x more memory than C, and 25x more than C++. Do you understand the numbers you base your question upon? How much memory was allocated? What were the programs doing? When there's a big disparity between those Java and C programs, it's mostly the default JVM memory ...


27

I am a Software Development Engineer in Test, and have been at 2 separate companies. Currently I work for Microsoft. Broadly speaking, Bryan Oakley is correct: you write software that tests software. Beyond that, it depends on your level of experience, the scope of your responsibilities, and the type of software that the employer would be producing. An ...


24

Having a big comment section explaining "whys" and "hows" details of a complicated algorithm is a good idea. And it is better to have close to the code, so that developer does not need to switch context to read about it (even worse - switching back and forth between algorithm and document). Just remember to include a sort of TL;DR on top of the lengthy ...


23

but in a way it also trivializes the profession, as in "Codemonkey, go sling code". I would argue quite the opposite. A good software engineer would have the ability to conceptualize, architect, and design quality software agnostic of technology. The opposite end of this spectrum is the .NET or Java or PHP only "codemonkey" that is good at being given ...


23

You are not going to waste anyone's time. Go for it. And you don't even need to emphasize that you don't hold a degree in engineering. Your CV (Resume) will obviously state what degrees you hold, and by inference what you do not hold. Only avoid companies that specifically state that they are only looking for accredited etc etc. EDIT: The reason for this ...


22

In April 2013, the Professional Engineer exam for Software Engineering was offered for the first time. The IEEE Computer Society, IEEE-USA, and National Council of Examiners for Engineering and Surveying (NCEES) partnered to develop an exam specifically for software engineers. State boards issue the exams and manage the requirements for taking and passing ...


21

So how can I learn to really do object oriented design? What I want to learn is: given requirements know how to get started working on them in a process that leads to find out what has to be done and where each piece of code belongs. How can I also learn to judge if my idea is correct or not? Well first of all, stop thinking of object oriented design as ...


19

While developers are perceived to be ignorant of the business problems, less technical managers will look down on developers. Developers need to learn the business cases and start driving or suggesting improvements in business terms. Once developers and managers are speaking the same language, things get easier. This is as much about an attitude change. Yes,...


19

Let t1 and t2 be distinct integers that represent two times written in YYYYMMDD formatting. Then t1 < t2 implies that t2 occurred after t1. You lose this ordering with DD and MM first formatting. ISO is, IMO, the only sensible format.


18

Do not help right away. Make the junior colleague wait for at least 15 minutes, after one or two of this 15 minutes cycles, he/she will start to look at the issue on his own. Just don't say directly "wait 15 minutes", use something like "I'm busy, please let me finish x, then I help you". If you help him immediately, this is the shortest path he has for the ...


17

Requirements will grow and change. I don't think anyone could argue that. How to collect and process incoming requests. In my experience it helps when gathering requirements if there is a single or very small group of customers acting as a filter for delivering new or updated requirements to a small group of development planners. Anyone from their side ...


17

As with all things, it's a trade-off. If you are building an application that is going to run on a single user desktop and can reasonably be expected to control a large fraction of the RAM on that machine, it may be worth it to sacrifice memory usage for implementation speed. If you're targeting that same machine but you're building a small utility that is ...


16

V-model is an extension of Waterfall model, so don't expect it to be hugely different. Basically, you follow V-model from left to right, just like in Waterfall model. In Waterfall, you do requirements, design, implementation, verification and finally maintenance. In the same way, in V-model, you do requirements, design, implementation, verification and ...


16

Simple. Peer review. Think you can code better then me? Bring it! Show me your simple style. Wow me with how easy it is to adapt as requirements change. I'll marvel at how easy it is to understand. And I'll learn. I'll imitate your style. Or you may learn that what you think is the best way actually isn't. You might be ignoring concerns that are valid. ...


15

Based on available information, I believe that Software Engineering is already a formal profession. It may not be widely accepted as such, but it is meeting the generally accepted criteria for the characteristics of a profession. From Wikipedia's article on Profession: There is considerable agreement about defining the characteristic features of a ...


15

And refactor is not necessary, but in order to do this task right I need to refactor the whole class. This is contradictory. You cannot claim that refactoring is not necessary while specifying that the class should be refactored. You're in a situation where, in order to follow SOLID principles, you need to refactor existent code. The fact that “the current ...


13

In the US, it's "software engineer" is a common job title that doesn't really mean anything different from "programmer/analyst" or "software developer". It depends what the company in question wants to give out as a title. For example, at one place I was employed, almost everyone had a job title that ended either with "engineer" or "technician". The HR ...


13

What you call single REST APIs might be called REST API's particular set of resources or resources. You also could look at it as a REST API's functionality. Such as any kind of software, the whole package is versioned/updated, not single functionalities or resources. Your question would make sense in the context where the REST API package's resources are ...


13

People have experimented with different mechanics of implementing a design pattern in the past with differing results. For example, the definition of a singleton is that there is only one instance of a class for your entire application. There is nothing in that definition that requires you to implement it with a static accessor, even though that's how the ...


12

For the previous take, see Revision 1 of this answer. However, the comments and edits to the question further clarify what the question is seeking and allow me to be more clear. Yes, evidence based software engineering (EBSE) is a thing. There appears to be a few efforts toward EBSE databases, such as this one at Durham University and SEED, which was ...


12

One point not mentioned is that, in interactive inputs, this format allows to control the input. The system cannot know if a month has 28, 29, 30 or 31 days without knowing the specific year and month. When the interactive input mandates that year and month come first it can check if the day (inserted last) is in the allowed range. Granted, the question ...


11

I agree to an extent with the person you work with. A good software engineer deals with general principles of design and software production. The actual languages and frameworks are details. That's not to trivialise the ease with which you can pick up new languages and frameworks. There's always a learning curve associated with them but the point is it ...


11

Code is read far more often than it’s written, so carefully written comments are worth their weight in gold. Distill the relevant details of the article you referenced while writing the code. Include a URL, even if it may be broken in the future; there is always the Internet Archive. And above all, make specific references to the theoretical results you ...


11

Here's an even better approach: use content negotiation to version your API with the Content-Type and Accept headers: POST /api/accounts Accept: application/vnd.my-api.account.v1+json 201 Created Location: /api/accounts/285728 Content-Type: application/vnd.my-api.account.v1+json { ... account data here ... } To get a different version, merely ask for it ...


11

No. Design patterns are not building blocks. If you are trying to 'experiment' with them, you are most likely trying to apply them in situations that don't make any sense. Instead, you should experiment by trying to build a wide variety of programs that solve a wide variety of problems. In doing so, you'll find various techniques you used in some programs ...


Only top voted, non community-wiki answers of a minimum length are eligible